Bank statements
bank cfonb120bank cfonb120bank mt940bank mt940bank camt052bank camt054bank reconcilebank reconcilebank to_rowsbank to_rowsbank iban_from_rib
bank cfonb120 <statement>
Description
Read a French CFONB 120 statement: statements, account (RIB and computed IBAN), balances, entries with booking and value dates, operation_code, bank_transaction_code (interbank code), rejection_code, entry_number, bank_reference, information (the label), complements; balance_ok and difference
Read a French CFONB 120 statement: statements, account (RIB and computed IBAN), balances, entries with booking and value dates, operation_code, bank_transaction_code (interbank code), rejection_code, entry_number, bank_reference, information (the label), complements; balance_ok and difference
Parameters
statement: The content of the statement, or the path of a file (the input is a path only when it is not record data) - String - required
statement: The content of the statement, or the path of a file (the input is a path only when it is not record data) - String - required
admin
bank cfonb120 "0130006 00001EUR2 12345678901 311225 0000000015000{ 0430006010000001EUR2 1234567890105020126 020126VIR SEPA CLIENT SAS 0000123 0000000003371FBK2026A 0530006010000001EUR2 12345678901 NPYCLIENT SAS 0530006010000001EUR2 12345678901 RCNF2026-0042 0530006010000001EUR2 12345678901 LIBFACTURE F2026-0042 0430006010000001EUR2 12345678901B1020126 020126PRLV SEPA EDF 0000124 0000000001200} 0530006010000001EUR2 12345678901 NBEEDF 0530006010000001EUR2 12345678901 LIBCONTRAT 884 0730006 00001EUR2 12345678901 020126 0000000017171F "
mentdb
{"type": "cfonb120", "balance_ok": true, "statements": [{"id": "30006-00001-12345678901-2025-12-31", "sequence": "1", "account": {"iban": "FR7630006000011234567890189", "rib_key": "89", "currency": "EUR", "bank_code": "30006", "branch_code": "00001", "number": "12345678901"}, "from": "2025-12-31", "to": "2026-01-02", "balances": [{"type": "OPBD", "amount": "1500.00", "currency": "EUR", "date": "2025-12-31", "source": "01"}, {"type": "CLBD", "amount": "1717.16", "currency": "EUR", "date": "2026-01-02", "source": "07"}], "entries": [{"amount": "337.16", "currency": "EUR", "booking_date": "2026-01-02", "value_date": "2026-01-02", "bank_reference": "BK2026A", "bank_transaction_code": "05", "operation_code": "0100", "entry_number": "0000123", "information": "VIR SEPA CLIENT SAS", "debtor": "CLIENT SAS", "end_to_end_id": "F2026-0042", "remittance": "FACTURE F2026-0042", "counterparty": {"name": "CLIENT SAS"}, "complements": [{"qualifier": "NPY", "value": "CLIENT SAS"}, {"qualifier": "RCN", "value": "F2026-0042"}, {"qualifier": "LIB", "value": "FACTURE F2026-0042"}]}, {"amount": "-120.00", "currency": "EUR", "booking_date": "2026-01-02", "value_date": "2026-01-02", "bank_reference": "0000124", "bank_transaction_code": "B1", "operation_code": "0100", "entry_number": "0000124", "information": "PRLV SEPA EDF", "creditor": "EDF", "remittance": "CONTRAT 884", "counterparty": {"name": "EDF"}, "complements": [{"qualifier": "NBE", "value": "EDF"}, {"qualifier": "LIB", "value": "CONTRAT 884"}]}], "totals": {"credits": "337.16", "debits": "120.00", "count": 2}, "opening_balance": "1500.00", "movements_total": "217.16", "closing_balance": "1717.16", "balance_ok": true, "difference": "0.00"}], "warnings": []}
Without line breaks, the same result
admin
bank cfonb120 "0130006 00001EUR2 12345678901 311225 0000000015000{ 0430006010000001EUR2 1234567890105020126 020126VIR SEPA CLIENT SAS 0000123 0000000003371FBK2026A 0530006010000001EUR2 12345678901 NPYCLIENT SAS 0530006010000001EUR2 12345678901 RCNF2026-0042 0530006010000001EUR2 12345678901 LIBFACTURE F2026-0042 0430006010000001EUR2 12345678901B1020126 020126PRLV SEPA EDF 0000124 0000000001200} 0530006010000001EUR2 12345678901 NBEEDF 0530006010000001EUR2 12345678901 LIBCONTRAT 884 0730006 00001EUR2 12345678901 020126 0000000017171F "
mentdb
{"type": "cfonb120", "balance_ok": true, "statements": [{"id": "30006-00001-12345678901-2025-12-31", "sequence": "1", "account": {"iban": "FR7630006000011234567890189", "rib_key": "89", "currency": "EUR", "bank_code": "30006", "branch_code": "00001", "number": "12345678901"}, "from": "2025-12-31", "to": "2026-01-02", "balances": [{"type": "OPBD", "amount": "1500.00", "currency": "EUR", "date": "2025-12-31", "source": "01"}, {"type": "CLBD", "amount": "1717.16", "currency": "EUR", "date": "2026-01-02", "source": "07"}], "entries": [{"amount": "337.16", "currency": "EUR", "booking_date": "2026-01-02", "value_date": "2026-01-02", "bank_reference": "BK2026A", "bank_transaction_code": "05", "operation_code": "0100", "entry_number": "0000123", "information": "VIR SEPA CLIENT SAS", "debtor": "CLIENT SAS", "end_to_end_id": "F2026-0042", "remittance": "FACTURE F2026-0042", "counterparty": {"name": "CLIENT SAS"}, "complements": [{"qualifier": "NPY", "value": "CLIENT SAS"}, {"qualifier": "RCN", "value": "F2026-0042"}, {"qualifier": "LIB", "value": "FACTURE F2026-0042"}]}, {"amount": "-120.00", "currency": "EUR", "booking_date": "2026-01-02", "value_date": "2026-01-02", "bank_reference": "0000124", "bank_transaction_code": "B1", "operation_code": "0100", "entry_number": "0000124", "information": "PRLV SEPA EDF", "creditor": "EDF", "remittance": "CONTRAT 884", "counterparty": {"name": "EDF"}, "complements": [{"qualifier": "NBE", "value": "EDF"}, {"qualifier": "LIB", "value": "CONTRAT 884"}]}], "totals": {"credits": "337.16", "debits": "120.00", "count": 2}, "opening_balance": "1500.00", "movements_total": "217.16", "closing_balance": "1717.16", "balance_ok": true, "difference": "0.00"}], "warnings": []}
A statement that does not balance: balance_ok false, difference 0.16
admin
bank cfonb120 "0130006 00001EUR2 12345678901 311225 0000000015000{ 0430006010000001EUR2 1234567890105020126 020126VIR 0000123 0000000003371F 0730006 00001EUR2 12345678901 020126 0000000018370{ "
mentdb
{"type": "cfonb120", "balance_ok": false, "statements": [{"id": "30006-00001-12345678901-2025-12-31", "sequence": "1", "account": {"iban": "FR7630006000011234567890189", "rib_key": "89", "currency": "EUR", "bank_code": "30006", "branch_code": "00001", "number": "12345678901"}, "from": "2025-12-31", "to": "2026-01-02", "balances": [{"type": "OPBD", "amount": "1500.00", "currency": "EUR", "date": "2025-12-31", "source": "01"}, {"type": "CLBD", "amount": "1837.00", "currency": "EUR", "date": "2026-01-02", "source": "07"}], "entries": [{"amount": "337.16", "currency": "EUR", "booking_date": "2026-01-02", "value_date": "2026-01-02", "bank_reference": "0000123", "bank_transaction_code": "05", "operation_code": "0100", "entry_number": "0000123", "information": "VIR"}], "totals": {"credits": "337.16", "debits": "0", "count": 1}, "opening_balance": "1500.00", "movements_total": "337.16", "closing_balance": "1837.00", "balance_ok": false, "difference": "0.16"}], "warnings": ["statement 30006-00001-12345678901-2025-12-31: opening balance 1500.00 + movements 337.16 differs from the closing balance 1837.00 by 0.16 (missing entries?)"]}"
bank cfonb120 <statement> <json_params>
Description
Read a CFONB 120 statement with parameters: strict, encoding, pivot_year
Read a CFONB 120 statement with parameters: strict, encoding, pivot_year
Parameters
statement: The content of the statement, or the path of a file (the input is a path only when it is not record data) - String - required
json_params: The parameters - String - required
statement: The content of the statement, or the path of a file (the input is a path only when it is not record data) - String - required
json_params: The parameters - String - required
admin
bank cfonb120 "0130006 00001EUR2 12345678901 311225 0000000015000{ 0430006010000001EUR2 1234567890105020126 020126VIR 0000123 0000000000X71 0730006 00001EUR2 12345678901 020126 0000000015000{ " "{\"strict\": false}"
mentdb
{"type": "cfonb120", "balance_ok": true, "statements": [{"id": "30006-00001-12345678901-2025-12-31", "sequence": "1", "account": {"iban": "FR7630006000011234567890189", "rib_key": "89", "currency": "EUR", "bank_code": "30006", "branch_code": "00001", "number": "12345678901"}, "from": "2025-12-31", "to": "2026-01-02", "balances": [{"type": "OPBD", "amount": "1500.00", "currency": "EUR", "date": "2025-12-31", "source": "01"}, {"type": "CLBD", "amount": "1500.00", "currency": "EUR", "date": "2026-01-02", "source": "07"}], "entries": [], "totals": {"credits": "0", "debits": "0", "count": 0}, "opening_balance": "1500.00", "movements_total": "0", "closing_balance": "1500.00", "balance_ok": true, "difference": "0.00"}], "warnings": ["line 2: the amount '0000000000X71 ' must have 13 digits then a sign letter"]}
Years from 90 are 19xx
admin
bank cfonb120 "0130006 00001EUR2 12345678901 311299 0000000000000{ 0730006 00001EUR2 12345678901 010100 0000000000000{ " "{\"pivot_year\": 90}"
mentdb
{"type": "cfonb120", "balance_ok": true, "statements": [{"id": "30006-00001-12345678901-1999-12-31", "sequence": "1", "account": {"iban": "FR7630006000011234567890189", "rib_key": "89", "currency": "EUR", "bank_code": "30006", "branch_code": "00001", "number": "12345678901"}, "from": "1999-12-31", "to": "2000-01-01", "balances": [{"type": "OPBD", "amount": "0.00", "currency": "EUR", "date": "1999-12-31", "source": "01"}, {"type": "CLBD", "amount": "0.00", "currency": "EUR", "date": "2000-01-01", "source": "07"}], "entries": [], "totals": {"credits": "0", "debits": "0", "count": 0}, "opening_balance": "0.00", "movements_total": "0", "closing_balance": "0.00", "balance_ok": true, "difference": "0.00"}], "warnings": []}
bank mt940 <statement>
Description
Read a SWIFT MT940 statement: id (:20:), account (:25:), sequence (:28C:), balances, entries with value_date, booking_date, mark, amount, bank_transaction_code, customer_reference, bank_reference, supplementary, the details of :86:; balance_ok and difference
Read a SWIFT MT940 statement: id (:20:), account (:25:), sequence (:28C:), balances, entries with value_date, booking_date, mark, amount, bank_transaction_code, customer_reference, bank_reference, supplementary, the details of :86:; balance_ok and difference
Parameters
statement: The content of the statement, or the path of a file (the input is a path only when it is not record data) - String - required
statement: The content of the statement, or the path of a file (the input is a path only when it is not record data) - String - required
admin
bank mt940 "{1:F01BANKFRPPAXXX0000000000}{2:I940BANKFRPPXXXXN}{4: :20:STMT-2026-01 :25:AGRIFRPP/FR7630006000011234567890189 :28C:1/1 :60F:C251231EUR1500,00 :61:2512310102C337,16NTRFF2026-0042//BK2026A SUPPLEMENTARY TEXT :86:166?00VIREMENT?20EREF+F2026-0042?21SVWZ+FACTURE F2026-?220042?30BREDFRPP?31FR7610107001011234567890129?32CLIENT SAS :61:2601020102D120,00NDDTNONREF//BK2026B :86:PRLV EDF CONTRAT 884 :62F:C260102EUR1717,16 :64:C260102EUR1717,16 :65:C260103EUR1717,16 -}{5:{CHK:0123456789AB}}"
mentdb
{"type": "mt940", "balance_ok": true, "statements": [{"id": "STMT-2026-01", "sequence": "1/1", "account": {"iban": "FR7630006000011234567890189", "bic": "AGRIFRPP", "number": "AGRIFRPP/FR7630006000011234567890189", "currency": "EUR"}, "from": "2025-12-31", "to": "2026-01-02", "balances": [{"type": "OPBD", "amount": "1500.00", "currency": "EUR", "date": "2025-12-31", "source": "60F"}, {"type": "CLBD", "amount": "1717.16", "currency": "EUR", "date": "2026-01-02", "source": "62F"}, {"type": "CLAV", "amount": "1717.16", "currency": "EUR", "date": "2026-01-02", "source": "64"}, {"type": "FWAV", "amount": "1717.16", "currency": "EUR", "date": "2026-01-03", "source": "65"}], "entries": [{"amount": "337.16", "currency": "EUR", "booking_date": "2026-01-02", "value_date": "2025-12-31", "bank_reference": "BK2026A", "bank_transaction_code": "NTRF", "mark": "C", "customer_reference": "F2026-0042", "supplementary": "SUPPLEMENTARY TEXT", "end_to_end_id": "F2026-0042", "information": "166?00VIREMENT?20EREF+F2026-0042?21SVWZ+FACTURE F2026-?220042?30BREDFRPP?31FR7610107001011234567890129?32CLIENT SAS", "transaction_code": "166", "subfields": {"00": "VIREMENT", "20": "EREF+F2026-0042", "21": "SVWZ+FACTURE F2026-", "22": "0042", "30": "BREDFRPP", "31": "FR7610107001011234567890129", "32": "CLIENT SAS"}, "transaction_text": "VIREMENT", "counterparty": {"name": "CLIENT SAS", "iban": "FR7610107001011234567890129", "bic": "BREDFRPP"}, "remittance": "FACTURE F2026-0042"}, {"amount": "-120.00", "currency": "EUR", "booking_date": "2026-01-02", "value_date": "2026-01-02", "bank_reference": "BK2026B", "bank_transaction_code": "NDDT", "mark": "D", "remittance": "PRLV EDF CONTRAT 884", "information": "PRLV EDF CONTRAT 884"}], "totals": {"credits": "337.16", "debits": "120.00", "count": 2}, "opening_balance": "1500.00", "movements_total": "217.16", "closing_balance": "1717.16", "balance_ok": true, "difference": "0.00"}], "warnings": []}
Two statements, reversals, a debit balance, no block
admin
bank mt940 ":20:A :25:12345 :28C:1 :60M:D260101USD10, :61:260102RD2,50NMSCNONREF :61:260102RC0,50NMSCNONREF :62M:D260102USD8, - :20:B :25:12345 :28C:2 :60F:D260102USD8, :62F:D260102USD8, -"
mentdb
{"type": "mt940", "balance_ok": true, "statements": [{"id": "A", "sequence": "1", "account": {"number": "12345", "currency": "USD"}, "from": "2026-01-01", "to": "2026-01-02", "balances": [{"type": "ITBD", "amount": "-10", "currency": "USD", "date": "2026-01-01", "source": "60M"}, {"type": "ITBD", "amount": "-8", "currency": "USD", "date": "2026-01-02", "source": "62M"}], "entries": [{"amount": "2.50", "currency": "USD", "reversal": true, "value_date": "2026-01-02", "bank_transaction_code": "NMSC", "mark": "RD"}, {"amount": "-0.50", "currency": "USD", "reversal": true, "value_date": "2026-01-02", "bank_transaction_code": "NMSC", "mark": "RC"}], "totals": {"credits": "2.50", "debits": "0.50", "count": 2}, "opening_balance": "-10", "movements_total": "2.00", "closing_balance": "-8", "balance_ok": true, "difference": "0.00"}, {"id": "B", "sequence": "2", "account": {"number": "12345", "currency": "USD"}, "from": "2026-01-02", "to": "2026-01-02", "balances": [{"type": "OPBD", "amount": "-8", "currency": "USD", "date": "2026-01-02", "source": "60F"}, {"type": "CLBD", "amount": "-8", "currency": "USD", "date": "2026-01-02", "source": "62F"}], "entries": [], "totals": {"credits": "0", "debits": "0", "count": 0}, "opening_balance": "-8", "movements_total": "0", "closing_balance": "-8", "balance_ok": true, "difference": "0"}], "warnings": []}
bank mt940 <statement> <json_params>
Description
Read an MT940 statement with parameters: strict, encoding, pivot_year
Read an MT940 statement with parameters: strict, encoding, pivot_year
Parameters
statement: The content of the statement, or the path of a file (the input is a path only when it is not record data) - String - required
json_params: The parameters - String - required
statement: The content of the statement, or the path of a file (the input is a path only when it is not record data) - String - required
json_params: The parameters - String - required
admin
bank mt940 ":20:A :25:12345 :60F:C260101EUR1,00 :61:bad :62F:C260101EUR1,00 -" "{\"strict\": false}"
mentdb
{"type": "mt940", "balance_ok": true, "statements": [{"id": "A", "account": {"number": "12345", "currency": "EUR"}, "from": "2026-01-01", "to": "2026-01-01", "balances": [{"type": "OPBD", "amount": "1.00", "currency": "EUR", "date": "2026-01-01", "source": "60F"}, {"type": "CLBD", "amount": "1.00", "currency": "EUR", "date": "2026-01-01", "source": "62F"}], "entries": [], "totals": {"credits": "0", "debits": "0", "count": 0}, "opening_balance": "1.00", "movements_total": "0", "closing_balance": "1.00", "balance_ok": true, "difference": "0.00"}], "warnings": ["line 4: :61: the movement 'bad' must be a value date YYMMDD, an entry date MMDD (optional), C, D, RC or RD, an amount, a type of 4 characters, the references"]}
Used in use cases (1 recipe)
Accountant & manager › Reconcile a bank statement with the expected payments
Accountant & manager › Reconcile a bank statement with the expected payments
bank camt052 <statement>
Description
Read a camt.052 report: the fields of sepa camt053 in the exact form (amounts and totals as exact strings, balance_ok, difference); any other message is refused
Read a camt.052 report: the fields of sepa camt053 in the exact form (amounts and totals as exact strings, balance_ok, difference); any other message is refused
Parameters
statement: The XML or the path of the file - String - required
statement: The XML or the path of the file - String - required
admin
bank camt052 "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:camt.052.001.02\"><BkToCstmrAcctRpt><GrpHdr><MsgId>M1</MsgId><CreDtTm>2026-01-02T18:00:00</CreDtTm></GrpHdr><Rpt><Id>S1</Id><Acct><Id><IBAN>FR7630006000011234567890189</IBAN></Id></Acct><Ntry><Amt Ccy=\"EUR\">337.16</Amt><CdtDbtInd>CRDT</CdtDbtInd><Sts>BOOK</Sts><BookgDt><Dt>2026-01-02</Dt></BookgDt><AcctSvcrRef>BK1</AcctSvcrRef></Ntry></Rpt></BkToCstmrAcctRpt></Document>"
mentdb
{"type": "camt.052", "message_id": "M1", "created": "2026-01-02T18:00:00", "statements": [{"id": "S1", "account": {"iban": "FR7630006000011234567890189"}, "balances": [], "entries": [{"amount": "337.16", "currency": "EUR", "status": "BOOK", "booking_date": "2026-01-02", "bank_reference": "BK1"}], "totals": {"credits": "337.16", "debits": "0", "count": 1}, "balance_ok": null, "difference": null}], "warnings": []}
bank camt054 <statement>
Description
Read a camt.054 notification: the fields of sepa camt053 in the exact form (amounts and totals as exact strings; without balances, balance_ok and difference are null); any other message is refused
Read a camt.054 notification: the fields of sepa camt053 in the exact form (amounts and totals as exact strings; without balances, balance_ok and difference are null); any other message is refused
Parameters
statement: The XML or the path of the file - String - required
statement: The XML or the path of the file - String - required
admin
bank camt054 "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:camt.054.001.02\"><BkToCstmrDbtCdtNtfctn><GrpHdr><MsgId>M1</MsgId><CreDtTm>2026-01-02T18:00:00</CreDtTm></GrpHdr><Ntfctn><Id>S1</Id><Acct><Id><IBAN>FR7630006000011234567890189</IBAN></Id></Acct><Ntry><Amt Ccy=\"EUR\">337.16</Amt><CdtDbtInd>CRDT</CdtDbtInd><Sts>BOOK</Sts><BookgDt><Dt>2026-01-02</Dt></BookgDt><AcctSvcrRef>BK1</AcctSvcrRef></Ntry></Ntfctn></BkToCstmrDbtCdtNtfctn></Document>"
mentdb
{"type": "camt.054", "message_id": "M1", "created": "2026-01-02T18:00:00", "statements": [{"id": "S1", "account": {"iban": "FR7630006000011234567890189"}, "balances": [], "entries": [{"amount": "337.16", "currency": "EUR", "status": "BOOK", "booking_date": "2026-01-02", "bank_reference": "BK1"}], "totals": {"credits": "337.16", "debits": "0", "count": 1}, "balance_ok": null, "difference": null}], "warnings": []}
bank reconcile <statement_movements_json> <expected_json>
Description
Match statement movements with expected lines, each line once: first by reference with the same amount, then by the reference found as a word of the remittance or information (4 characters at least), then by amount and date. A currency matches only itself, a line without currency matches any. Same input, same result; n log n. Returns matched [{match, statement_line, expected_line, difference, date_difference_days, statement, expected}], unmatched_statement, unmatched_expected (with _line), totals (exact strings), warnings. The movements can be the result of bank cfonb120, bank mt940, bank camt052, bank camt054 or sepa camt053, the XML of a camt message (read exactly, a path is not accepted here), a list of statements, or rows; the expected lines have reference, amount (signed as on the statement) and date (yyyy-MM-dd, dd/MM/yyyy or yyyyMMdd). A line without date cannot match by amount and date. Entries whose status is not BOOK are left out and counted in excluded_not_booked. 2000000 lines and 100 MB at most
Match statement movements with expected lines, each line once: first by reference with the same amount, then by the reference found as a word of the remittance or information (4 characters at least), then by amount and date. A currency matches only itself, a line without currency matches any. Same input, same result; n log n. Returns matched [{match, statement_line, expected_line, difference, date_difference_days, statement, expected}], unmatched_statement, unmatched_expected (with _line), totals (exact strings), warnings. The movements can be the result of bank cfonb120, bank mt940, bank camt052, bank camt054 or sepa camt053, the XML of a camt message (read exactly, a path is not accepted here), a list of statements, or rows; the expected lines have reference, amount (signed as on the statement) and date (yyyy-MM-dd, dd/MM/yyyy or yyyyMMdd). A line without date cannot match by amount and date. Entries whose status is not BOOK are left out and counted in excluded_not_booked. 2000000 lines and 100 MB at most
Parameters
statement_movements_json: The movements - String - required
expected_json: The expected lines - String - required
statement_movements_json: The movements - String - required
expected_json: The expected lines - String - required
admin
bank reconcile "[{\"amount\": \"337.16\", \"booking_date\": \"2026-01-02\", \"end_to_end_id\": \"F2026-0042\"}, {\"amount\": \"-120.00\", \"booking_date\": \"2026-01-02\", \"remittance\": \"PRLV EDF CONTRAT C-884\"}, {\"amount\": \"50.00\", \"booking_date\": \"2026-01-05\"}, {\"amount\": \"50.00\", \"booking_date\": \"2026-01-07\"}, {\"amount\": \"19.99\", \"booking_date\": \"2026-01-08\"}]" "[{\"reference\": \"C-884\", \"amount\": -120, \"date\": \"2026-01-01\"}, {\"reference\": \"f2026-0042\", \"amount\": 337.16, \"date\": \"2025-12-01\"}, {\"amount\": 50, \"date\": \"2026-01-06\"}, {\"amount\": \"50.00\", \"date\": \"2026-01-05\"}, {\"amount\": \"20.00\", \"date\": \"2026-01-09\"}, {\"reference\": \"X9\", \"amount\": 1000}]"
mentdb
{"matched": [{"match": "reference", "statement_line": 1, "expected_line": 2, "difference": "0.00", "date_difference_days": 32, "statement": {"amount": "337.16", "booking_date": "2026-01-02", "end_to_end_id": "F2026-0042"}, "expected": {"reference": "f2026-0042", "amount": "337.16", "date": "2025-12-01"}}, {"match": "reference_text", "statement_line": 2, "expected_line": 1, "difference": "0.00", "date_difference_days": 1, "statement": {"amount": "-120.00", "booking_date": "2026-01-02", "remittance": "PRLV EDF CONTRAT C-884"}, "expected": {"reference": "C-884", "amount": -120, "date": "2026-01-01"}}, {"match": "amount_date", "statement_line": 3, "expected_line": 4, "difference": "0.00", "date_difference_days": 0, "statement": {"amount": "50.00", "booking_date": "2026-01-05"}, "expected": {"amount": "50.00", "date": "2026-01-05"}}], "unmatched_statement": [{"amount": "50.00", "booking_date": "2026-01-07", "_line": 4}, {"amount": "19.99", "booking_date": "2026-01-08", "_line": 5}], "unmatched_expected": [{"amount": 50, "date": "2026-01-06", "_line": 3}, {"amount": "20.00", "date": "2026-01-09", "_line": 5}, {"reference": "X9", "amount": 1000, "_line": 6}], "totals": {"statement_count": 5, "statement_amount": "337.15", "expected_count": 6, "expected_amount": "1337.16", "matched_count": 3, "matched_statement_amount": "267.16", "matched_expected_amount": "267.16", "matched_difference": "0.00", "unmatched_statement_count": 2, "unmatched_statement_amount": "69.99", "unmatched_expected_count": 3, "unmatched_expected_amount": "1070.00"}, "warnings": []}
bank reconcile <statement_movements_json> <expected_json> <json_params>
Description
Match with parameters: tolerance (0, an absolute amount), date_window (0, days up to 366), reference_field (reference), amount_field (amount), date_field (date) for the expected lines; statement_reference_fields ([end_to_end_id, bank_reference, reference, customer_reference]), statement_amount_field (amount), statement_date_field (booking_date, then value_date, then date); ignore_dates (false: match the amount alone), search_text (true), include_pending (false), strict (true). The exact amounts match first; within the tolerance: the closest amount for a reference, the closest date then the closest amount otherwise
Match with parameters: tolerance (0, an absolute amount), date_window (0, days up to 366), reference_field (reference), amount_field (amount), date_field (date) for the expected lines; statement_reference_fields ([end_to_end_id, bank_reference, reference, customer_reference]), statement_amount_field (amount), statement_date_field (booking_date, then value_date, then date); ignore_dates (false: match the amount alone), search_text (true), include_pending (false), strict (true). The exact amounts match first; within the tolerance: the closest amount for a reference, the closest date then the closest amount otherwise
Parameters
statement_movements_json: The movements - String - required
expected_json: The expected lines - String - required
json_params: The parameters - String - required
statement_movements_json: The movements - String - required
expected_json: The expected lines - String - required
json_params: The parameters - String - required
admin
bank reconcile "[{\"amount\": \"337.16\", \"booking_date\": \"2026-01-02\", \"end_to_end_id\": \"F2026-0042\"}, {\"amount\": \"-120.00\", \"booking_date\": \"2026-01-02\", \"remittance\": \"PRLV EDF CONTRAT C-884\"}, {\"amount\": \"50.00\", \"booking_date\": \"2026-01-05\"}, {\"amount\": \"50.00\", \"booking_date\": \"2026-01-07\"}, {\"amount\": \"19.99\", \"booking_date\": \"2026-01-08\"}]" "[{\"reference\": \"C-884\", \"amount\": -120, \"date\": \"2026-01-01\"}, {\"reference\": \"f2026-0042\", \"amount\": 337.16, \"date\": \"2025-12-01\"}, {\"amount\": 50, \"date\": \"2026-01-06\"}, {\"amount\": \"50.00\", \"date\": \"2026-01-05\"}, {\"amount\": \"20.00\", \"date\": \"2026-01-09\"}, {\"reference\": \"X9\", \"amount\": 1000}]" "{\"tolerance\": \"0.01\", \"date_window\": 2}"
mentdb
{"matched": [{"match": "reference", "statement_line": 1, "expected_line": 2, "difference": "0.00", "date_difference_days": 32, "statement": {"amount": "337.16", "booking_date": "2026-01-02", "end_to_end_id": "F2026-0042"}, "expected": {"reference": "f2026-0042", "amount": "337.16", "date": "2025-12-01"}}, {"match": "reference_text", "statement_line": 2, "expected_line": 1, "difference": "0.00", "date_difference_days": 1, "statement": {"amount": "-120.00", "booking_date": "2026-01-02", "remittance": "PRLV EDF CONTRAT C-884"}, "expected": {"reference": "C-884", "amount": -120, "date": "2026-01-01"}}, {"match": "amount_date", "statement_line": 3, "expected_line": 4, "difference": "0.00", "date_difference_days": 0, "statement": {"amount": "50.00", "booking_date": "2026-01-05"}, "expected": {"amount": "50.00", "date": "2026-01-05"}}, {"match": "amount_date", "statement_line": 4, "expected_line": 3, "difference": "0.00", "date_difference_days": 1, "statement": {"amount": "50.00", "booking_date": "2026-01-07"}, "expected": {"amount": 50, "date": "2026-01-06"}}, {"match": "amount_date_tolerance", "statement_line": 5, "expected_line": 5, "difference": "-0.01", "date_difference_days": -1, "statement": {"amount": "19.99", "booking_date": "2026-01-08"}, "expected": {"amount": "20.00", "date": "2026-01-09"}}], "unmatched_statement": [], "unmatched_expected": [{"reference": "X9", "amount": 1000, "_line": 6}], "totals": {"statement_count": 5, "statement_amount": "337.15", "expected_count": 6, "expected_amount": "1337.16", "matched_count": 5, "matched_statement_amount": "337.15", "matched_expected_amount": "337.16", "matched_difference": "-0.01", "unmatched_statement_count": 0, "unmatched_statement_amount": "0", "unmatched_expected_count": 1, "unmatched_expected_amount": "1000"}, "warnings": []}
Your own field names, a French amount and date
admin
bank reconcile "[{\"amount\": \"337.16\", \"booking_date\": \"2026-01-02\", \"end_to_end_id\": \"F2026-0042\"}, {\"amount\": \"-120.00\", \"booking_date\": \"2026-01-02\", \"remittance\": \"PRLV EDF CONTRAT C-884\"}, {\"amount\": \"50.00\", \"booking_date\": \"2026-01-05\"}, {\"amount\": \"50.00\", \"booking_date\": \"2026-01-07\"}, {\"amount\": \"19.99\", \"booking_date\": \"2026-01-08\"}]" "[{\"montant\": \"19,99\", \"jour\": \"08/01/2026\", \"piece\": \"A1\"}]" "{\"amount_field\": \"montant\", \"date_field\": \"jour\", \"reference_field\": \"piece\"}"
mentdb
{"matched": [{"match": "amount_date", "statement_line": 5, "expected_line": 1, "difference": "0.00", "date_difference_days": 0, "statement": {"amount": "19.99", "booking_date": "2026-01-08"}, "expected": {"montant": "19,99", "jour": "08/01/2026", "piece": "A1"}}], "unmatched_statement": [{"amount": "337.16", "booking_date": "2026-01-02", "end_to_end_id": "F2026-0042", "_line": 1}, {"amount": "-120.00", "booking_date": "2026-01-02", "remittance": "PRLV EDF CONTRAT C-884", "_line": 2}, {"amount": "50.00", "booking_date": "2026-01-05", "_line": 3}, {"amount": "50.00", "booking_date": "2026-01-07", "_line": 4}], "unmatched_expected": [], "totals": {"statement_count": 5, "statement_amount": "337.15", "expected_count": 1, "expected_amount": "19.99", "matched_count": 1, "matched_statement_amount": "19.99", "matched_expected_amount": "19.99", "matched_difference": "0.00", "unmatched_statement_count": 4, "unmatched_statement_amount": "317.16", "unmatched_expected_count": 0, "unmatched_expected_amount": "0"}, "warnings": []}
Used in use cases (1 recipe)
Accountant & manager › Reconcile a bank statement with the expected payments
Accountant & manager › Reconcile a bank statement with the expected payments
bank to_rows <statements_json>
Description
Flat rows, one per entry, with the same columns in every row and for every format: statement, statement_id, entry, account_iban, account_number, account_bic, account_owner, currency, booking_date, value_date, amount (exact string), direction (C or D), status, reversal, bank_reference, end_to_end_id, bank_transaction_code, counterparty_name, counterparty_iban, counterparty_bic, remittance, information, batch_count
Flat rows, one per entry, with the same columns in every row and for every format: statement, statement_id, entry, account_iban, account_number, account_bic, account_owner, currency, booking_date, value_date, amount (exact string), direction (C or D), status, reversal, bank_reference, end_to_end_id, bank_transaction_code, counterparty_name, counterparty_iban, counterparty_bic, remittance, information, batch_count
Parameters
statements_json: The result of bank cfonb120, bank mt940, bank camt052, bank camt054 or sepa camt053, the XML of a camt message (read exactly, a path is not accepted here), or a list of statements - String - required
statements_json: The result of bank cfonb120, bank mt940, bank camt052, bank camt054 or sepa camt053, the XML of a camt message (read exactly, a path is not accepted here), or a list of statements - String - required
admin
bank to_rows "{\"type\": \"cfonb120\", \"statements\": [{\"id\": \"S1\", \"account\": {\"iban\": \"FR7630006000011234567890189\", \"currency\": \"EUR\"}, \"entries\": [{\"amount\": \"337.16\", \"currency\": \"EUR\", \"booking_date\": \"2026-01-02\", \"value_date\": \"2026-01-02\", \"bank_reference\": \"BK2026A\", \"end_to_end_id\": \"F2026-0042\", \"counterparty\": {\"name\": \"CLIENT SAS\"}, \"remittance\": \"FACTURE F2026-0042\"}, {\"amount\": \"-120.00\", \"currency\": \"EUR\", \"booking_date\": \"2026-01-02\", \"bank_reference\": \"BK2026B\", \"information\": \"PRLV SEPA EDF\"}]}]}"
mentdb
[{"statement": 1, "statement_id": "S1", "entry": 1, "account_iban": "FR7630006000011234567890189", "account_number": null, "account_bic": null, "account_owner": null, "currency": "EUR", "booking_date": "2026-01-02", "value_date": "2026-01-02", "amount": "337.16", "direction": "C", "status": null, "reversal": false, "bank_reference": "BK2026A", "end_to_end_id": "F2026-0042", "bank_transaction_code": null, "counterparty_name": "CLIENT SAS", "counterparty_iban": null, "counterparty_bic": null, "remittance": "FACTURE F2026-0042", "information": null, "batch_count": null}, {"statement": 1, "statement_id": "S1", "entry": 2, "account_iban": "FR7630006000011234567890189", "account_number": null, "account_bic": null, "account_owner": null, "currency": "EUR", "booking_date": "2026-01-02", "value_date": null, "amount": "-120.00", "direction": "D", "status": null, "reversal": false, "bank_reference": "BK2026B", "end_to_end_id": null, "bank_transaction_code": null, "counterparty_name": null, "counterparty_iban": null, "counterparty_bic": null, "remittance": null, "information": "PRLV SEPA EDF", "batch_count": null}]
bank to_rows <statements_json> <json_params>
Description
Flat rows with parameters: expand_batches (false; true: one row per transaction of a batch of camt.053)
Flat rows with parameters: expand_batches (false; true: one row per transaction of a batch of camt.053)
Parameters
statements_json: The statements - String - required
json_params: The parameters - String - required
statements_json: The statements - String - required
json_params: The parameters - String - required
admin
bank to_rows "{\"statements\": [{\"id\": \"S2\", \"account\": {\"iban\": \"FR7630006000011234567890189\"}, \"entries\": [{\"amount\": -120, \"currency\": \"EUR\", \"booking_date\": \"2026-11-02\", \"batch_count\": 2, \"transactions\": [{\"amount\": -80, \"end_to_end_id\": \"RENT-11\", \"counterparty\": {\"name\": \"SCI DU PORT\"}, \"remittance\": \"RENT\"}, {\"amount\": -40, \"end_to_end_id\": \"EDF-11\", \"counterparty\": {\"name\": \"EDF\"}}]}]}]}" "{\"expand_batches\": true}"
mentdb
[{"statement": 1, "statement_id": "S2", "entry": 1, "account_iban": "FR7630006000011234567890189", "account_number": null, "account_bic": null, "account_owner": null, "currency": "EUR", "booking_date": "2026-11-02", "value_date": null, "amount": "-80", "direction": "D", "status": null, "reversal": false, "bank_reference": null, "end_to_end_id": "RENT-11", "bank_transaction_code": null, "counterparty_name": "SCI DU PORT", "counterparty_iban": null, "counterparty_bic": null, "remittance": "RENT", "information": null, "batch_count": 2}, {"statement": 1, "statement_id": "S2", "entry": 1, "account_iban": "FR7630006000011234567890189", "account_number": null, "account_bic": null, "account_owner": null, "currency": "EUR", "booking_date": "2026-11-02", "value_date": null, "amount": "-40", "direction": "D", "status": null, "reversal": false, "bank_reference": null, "end_to_end_id": "EDF-11", "bank_transaction_code": null, "counterparty_name": "EDF", "counterparty_iban": null, "counterparty_bic": null, "remittance": null, "information": null, "batch_count": 2}]
Used in use cases (1 recipe)
Accountant & manager › Reconcile a bank statement with the expected payments
Accountant & manager › Reconcile a bank statement with the expected payments
bank iban_from_rib <rib>
Description
French RIB to IBAN: bank 5 digits, branch 5 digits, account 11 alphanumeric, key 2 digits (verified when given, computed when absent); spaces, dashes and dots are ignored. The country is FR, so do not use it for a Monaco RIB
French RIB to IBAN: bank 5 digits, branch 5 digits, account 11 alphanumeric, key 2 digits (verified when given, computed when absent); spaces, dashes and dots are ignored. The country is FR, so do not use it for a Monaco RIB
Parameters
rib: The RIB - String - required
rib: The RIB - String - required
admin
bank iban_from_rib "30006 00001 12345678901 89"
mentdb
FR7630006000011234567890189
An account with a letter, no key
admin
bank iban_from_rib "20041 01005 0500013M026"
mentdb
FR1420041010050500013M02606
