parsr.

France · Bank statement parser

Parse BNP Paribas statements into structured JSON

France's largest bank — Relevé de Compte format with operation-code prefixes.

BNP Paribas uses the standard French 'Relevé de Compte' format. Each transaction has an operation code prefix (VIR, PRLV, CHQ, CB, REM) indicating type before the description: VIR = virement (transfer), PRLV = prélèvement (direct debit), CHQ = chèque, CB = carte bancaire, REM = remise (deposit). parsr captures both the code and the description, mapping the code to a canonical transaction type when appropriate. The statement header includes the RIB (Relevé d'Identité Bancaire) format alongside the IBAN. Card transactions show the merchant name, the location (city + sometimes country), and the transaction date which can differ from the posted date. Multi-page statements use a 'À reporter' / 'Report' line at the bottom of each non-final page showing the running balance. parsr collapses these into the single closing_balance.

Format notes

What's specific to BNP Paribas

  • Operation codes (VIR / PRLV / CHQ / CB / REM) parsed and mapped to canonical types
  • RIB extracted alongside IBAN
  • Card transactions: merchant + city extracted as counterparty
  • Multi-page running balances ('À reporter') collapsed into closing_balance
  • Foreign-currency card transactions: original currency preserved

What we extract

Fields you get back

  • RIB + IBAN + account holder
  • Operation code → canonical type
  • Card merchant + city + country
  • Foreign-currency transactions with original amount
  • Confidence + bbox per field

Sample response

Real shape, real bank

POST /v1/parse → 200 OKschema bank_statement.v2
{
  "schema_version": "bank_statement.v2",
  "result": {
    "institution_name": "BNP Paribas",
    "account_holder": "Marie Dupont",
    "account_iban": "FR1420041010050500013M02606",
    "currency": "EUR",
    "transactions": [
      {
        "posted_date": "2026-04-08",
        "description": "CB CARREFOUR PARIS 75011",
        "amount":      { "amount": "-67.40", "currency": "EUR" },
        "counterparty": "CARREFOUR PARIS 75011",
        "type": "debit"
      },
      {
        "posted_date": "2026-04-15",
        "description": "VIR EMPLOYEUR XYZ",
        "amount":      { "amount":  "3200.00", "currency": "EUR" },
        "type": "credit"
      }
    ]
  }
}

Try it on a real BNP Paribas statement.

200 free pages/mo. No credit card. EU residency by default — your borrowers' data stays in the EU.

Get an API key