← Voltar aos self-hosters
Guia do Beancount

Sincroniza o teu banco no Beancount.

Um guia passo a passo para contabilidade em texto simples: puxa as transações do teu banco da UE e do Reino Unido diretamente para o teu livro-razão Beancount. 3 €/mês, sem certificado eIDAS, sem muro de limite de pedidos, e encriptado para que só tu o possas ler.

€3/mês — 1 conta incluída · Não é necessário cartão de crédito

Configuração em 5 minutos

Do banco ao livro-razão em cinco passos.

  1. Instala o importador

    Obtém o importador beangulp do PyPI. Inclui o SDK de cliente de que precisa, por isso esta é a única dependência a adicionar.

    bash

    pip install beancount-openbanking-io
  2. Exporta as tuas credenciais

    A partir do painel do open-banking.io, exporta o credentials.json — ele combina uma chave de API com a chave de desencriptação que só tu tens, para que o importador possa ler os teus dados localmente.

    bash

    # Dashboard → Settings → API keys → "Export credentials"
    # downloads credentials.json. Keep it next to your ledger.
    mv ~/Downloads/credentials.json ./credentials.json

    list_accounts.py

    from beancount_openbanking_io import Client
    
    client = Client("credentials.json")
    for account in client.accounts():
        print(account.id, account.currency, account.name)

    O segundo excerto imprime todos os IDs de conta que podes mapear. Copia os IDs que queres sincronizar — vais colá-los na configuração no passo seguinte.

  3. Mapeia as contas num ficheiro de configuração

    Cria um ficheiro *openbanking.yaml junto ao teu livro-razão. Aponta-o para as tuas credenciais e mapeia cada ID de conta bancária para uma conta Beancount. currency, counterpart e assert_balance são opcionais por conta.

    myfinances.openbanking.yaml

    # Any file ending in *openbanking.yaml is picked up by the importer.
    credentials: credentials.json
    
    accounts:
      - id: "a1b2c3d4-0000-1111-2222-333344445555"
        account: Assets:Bank:Checking
        currency: EUR                       # optional — inferred from the bank if omitted
        counterpart: Expenses:Uncategorized # optional — default second posting
        assert_balance: true                # optional — append a balance assertion
    
      - id: "f6e5d4c3-9999-8888-7777-666655554444"
        account: Assets:Bank:Savings

    Qualquer nome de ficheiro terminado em openbanking.yaml é detetado automaticamente pelo passo identify() do importador — mantém um ficheiro por livro-razão, ou vários se dividires a contabilidade.

  4. Executa a importação

    Liga o importador a um script beangulp de um só ficheiro, depois extrai as transações e adiciona-as ao teu livro-razão. Executa-o à mão, a partir de um Makefile ou numa agenda cron.

    import.py

    #!/usr/bin/env python3
    import beangulp
    from beancount_openbanking_io import OpenBankingImporter
    
    importers = [
        OpenBankingImporter(),
    ]
    
    if __name__ == "__main__":
        beangulp.Ingest(importers).main()

    bash

    python import.py extract myfinances.openbanking.yaml >> ledger.beancount

    O extract do beangulp imprime entradas Beancount para o stdout — redireciona-as para o teu livro-razão, ou para um ficheiro de preparação que revês antes de juntar.

  5. Lê o resultado

    Obténs transações Beancount reais com valores com sinal, um obio-id em cada lançamento para deduplicação, e uma asserção de saldo opcional no final de cada execução.

    ledger.beancount

    2026-06-28 * "Netto" "Card purchase"
      obio-id: "txn_9f2c7a1e5b"
      Assets:Bank:Checking  -42.18 EUR
    
    2026-06-29 * "ACME A/S" "Salary June"
      obio-id: "txn_1b8e4d9077"
      Assets:Bank:Checking  +2450.00 EUR
    
    2026-06-30 balance Assets:Bank:Checking  8137.55 EUR

    Voltar a executar é seguro: o beangulp deduplica com base nos metadados obio-id, por isso importar a mesma janela duas vezes nunca duplica os teus lançamentos. Passa o resultado pelo smart_importer para categorizar automaticamente a segunda perna.

Porque encaixa na contabilidade em texto simples

Construído do modo como o teu livro-razão já funciona.

Encriptado — não o conseguimos ler

As transações são encriptadas no teu dispositivo com uma chave que só tu tens. Armazenamos texto cifrado, por isso o teu extrato nunca fica em formato legível nos nossos servidores.

Sem certificado eIDAS

Sem certificado PSD2 (eIDAS) para comprar ou registar, e sem candidatura bancária para apresentar primeiro. Liga o teu banco e começa a importar.

Sem muro de 4 pedidos por dia

Sem limite de quatro pedidos por conta por dia para contornar na agenda. Extrai as vezes que a tua contabilidade realmente precisar.

Dá-se bem com as tuas ferramentas

Saída beangulp simples — passa-a pelo smart_importer para categorização automática, ou pelo fava, bean-check e os teus próprios scripts. Sem dependência de fornecedor.

A substituir o GoCardless ou o Nordigen?

O seu nível pessoal gratuito deixou de aceitar novos self-hosters, e o limite de quatro pedidos por conta por dia estraga as importações de rotina para o Beancount. O open-banking.io é a substituição por 3 €/mês — sem certificado, sem muro diário, e encriptado para que só tu o possas ler. (A conetividade bancária é fornecida pelo nosso fornecedor licenciado, a Enable Banking.)

Leva o teu banco para o Beancount.

Liga um banco da UE ou do Reino Unido em minutos e mantém o teu livro-razão sincronizado — por 3 € por mês.

Começar

Não é necessário cartão de crédito