Ir para o conteúdo principal

API de extração de extrato bancário

API REST para converter extratos bancários em PDF em JSON estruturado. 99,9%+ das transações corretamente identificadas, reembolso automático em caso de falha.

$ curl https://api.bankstatementlab.com/v1/extractions \
  -H "Authorization: Bearer bsl_live_..." \
  -F "file=@statement.pdf"

Extração de extratos bancários

Extraia transações, saldos e metadados de qualquer PDF.

Saída JSON estruturada

Esquema previsível nas 10 línguas suportadas.

99,9%+ das transações corretamente identificadas

Os créditos são reembolsados automaticamente em caso de falha. Não são cobradas extrações falhadas.

Modos síncrono e assíncrono

Síncrono para PDFs pequenos, assíncrono + polling para lotes grandes.

Exemplos de código

Integre em qualquer língua. Exemplos abaixo.

$ curl https://api.bankstatementlab.com/v1/extractions \
  -H "Authorization: Bearer bsl_live_..." \
  -F "file=@statement.pdf"

Formato das respostas

Os campos data, column_names e transaction_count só estão presentes quando status é igual a "completed". Caso contrário, são omitidos do JSON (ausentes, não null).

GET /v1/extractions/:id

200 OK — Extração concluída

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "ext_3f8a9b2c1d4e5f6a7b8c9d0e",
  "status": "completed",
  "file_name": "statement-march-2026.pdf",
  "created_at": "2026-03-15T10:23:00.000Z",
  "completed_at": "2026-03-15T10:23:18.000Z",
  "page_count": 3,
  "credits_charged": 3,
  "api_key_id": "ak_abc123",
  "column_names": ["Date", "Description", "Amount"],
  "transaction_count": 42,
  "data": {
    "columns": ["Date", "Description", "Amount"],
    "transactions": [
      ["2026-03-01", "VIREMENT SEPA", "1500.00"],
      ["2026-03-02", "CB CARREFOUR", "-45.20"]
    ]
  }
}

200 OK — Extração em curso

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "ext_3f8a9b2c1d4e5f6a7b8c9d0e",
  "status": "processing",
  "file_name": "statement-march-2026.pdf",
  "created_at": "2026-03-15T10:23:00.000Z",
  "page_count": 3,
  "credits_charged": 3,
  "api_key_id": "ak_abc123"
}

200 OK — Extração falhada

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "ext_3f8a9b2c1d4e5f6a7b8c9d0e",
  "status": "failed",
  "file_name": "statement-march-2026.pdf",
  "created_at": "2026-03-15T10:23:00.000Z",
  "completed_at": "2026-03-15T10:23:32.000Z",
  "page_count": 3,
  "credits_charged": 3,
  "api_key_id": "ak_abc123",
  "error": {
    "type": "extraction_failed",
    "message": "Extraction failed due to an internal error. Contact support if the issue persists."
  }
}

Padrão de polling

Quando uma extração é executada no modo async, a resposta contém status: "processing" até o worker terminar. Verifique sempre se status é igual a "completed" ANTES de ler os campos data, transaction_count e column_names; estes são omitidos do JSON até a extração estar concluída.

Frequência de polling recomendada no cliente: 5 a 10 segundos. O worker no servidor é executado a cada 10 segundos; consultar mais depressa não acelera o resultado.

GET /v1/extractions

200 OK — Página mista (um elemento por estado)

HTTP/1.1 200 OK
Content-Type: application/json

{
  "data": [
    {
      "id": "ext_001",
      "status": "completed",
      "file_name": "march.pdf",
      "created_at": "2026-03-15T10:00:00.000Z",
      "completed_at": "2026-03-15T10:00:18.000Z",
      "page_count": 3,
      "credits_charged": 3,
      "api_key_id": "ak_abc123",
      "column_names": ["Date", "Description", "Amount"],
      "transaction_count": 42
    },
    {
      "id": "ext_002",
      "status": "processing",
      "file_name": "april.pdf",
      "created_at": "2026-04-15T10:00:00.000Z",
      "page_count": 5,
      "credits_charged": 5,
      "api_key_id": "ak_abc123"
    },
    {
      "id": "ext_003",
      "status": "failed",
      "file_name": "may.pdf",
      "created_at": "2026-05-15T10:00:00.000Z",
      "completed_at": "2026-05-15T10:00:42.000Z",
      "page_count": 2,
      "credits_charged": 2,
      "api_key_id": "ak_abc123",
      "error": {
        "type": "extraction_failed",
        "message": "Extraction failed due to an internal error. Contact support if the issue persists."
      }
    }
  ],
  "has_more": false
}

Padrão de polling

Quando uma extração é executada no modo async, a resposta contém status: "processing" até o worker terminar. Verifique sempre se status é igual a "completed" ANTES de ler os campos data, transaction_count e column_names; estes são omitidos do JSON até a extração estar concluída.

Frequência de polling recomendada no cliente: 5 a 10 segundos. O worker no servidor é executado a cada 10 segundos; consultar mais depressa não acelera o resultado.

Concebida para

Automação contabilística

Importe extratos de clientes diretamente para o seu pipeline de contabilidade.

Due diligence de empréstimos

Verifique a receita e o fluxo de caixa dos extratos bancários do requerente.

Aplicações de finanças pessoais

Permita que os utilizadores liguem os seus extratos sem introdução manual de dados.

Mesmos créditos, web + API

1 crédito = 1 página. Os créditos são partilhados com o plano Pro ou Business; não existe um mínimo separado para a API.

Ver preços →

Perguntas frequentes

Comece a construir hoje

O nível gratuito inclui 5 créditos. Não é necessário cartão de crédito.

Obtenha a sua chave API