Invoice format & report guide

The earlier format, preserved as reference. Not a current upload invitation.

Start with the full sample report. The guide below explains its inputs and outputs. Contact us before sharing records; no API availability, key-delivery time or retention promise is made here.

Invoice fields

invoice_id

yes

your own id, visible in the report. Use opaque ids : an id like ACME-NORTHWIND-0007 puts a name in the one field not hashed. Each row needs its own id : a tape that repeats one is refused, because a finding names an invoice and two rows under one id cannot both be the invoice we mean. A re-raised invoice gets a new id

borrower_ref

yes

64-character lowercase hex : a hash, never a name (see below)

debtor_ref

yes

64-character lowercase hex hash

amount

yes

digits and a decimal point, no currency symbol (thousands commas are ignored). Zero or below is a credit row (see below)

invoice_date

yes

ISO date, YYYY-MM-DD

due_date

yes

ISO date

status

yes

one of open , settled , late , failed , written_off

funded_date

no

ISO date; absent means never funded

settled_date

no

ISO date

payee_ref

no

64-character hex hash; absent means paid to the borrower. It makes the unapproved-payee check possible

cure_date

no

ISO date

item_code

item

your own product code: letters, digits, . , _ or - , at most 64, no spaces

quantity

item

a plain positive number, at most six decimals

unit

item

the unit it's billed in, like 1K-tokens or vCPU-hour : same characters, at most 32

Each row needs its own id. Invoice ids are not hashed, so they must not contain names. Dates use YYYY-MM-DD. The item_code, quantity and unit fields come together: all three or none. Amounts at zero or below represent credit rows, which the older format left out of the checks; a positive credit cannot be distinguished from an invoice.

An example file

The original three-row fixture uses placeholder references. It is synthetic, not a lender export. Download the example CSV ↗

Read the example rows +
invoice_id,borrower_ref,debtor_ref,amount,invoice_date,funded_date,due_date,settled_date,cure_date,status,payee_ref
INV-1001,b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1,d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1,48000.00,2026-06-02,2026-06-03,2026-08-02,2026-07-30,,settled,e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1
INV-1001-R,b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1,d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1,48000.00,2026-06-02,2026-06-11,2026-08-02,,,open,e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1
INV-1014,b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1,d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2,52000.00,2026-06-20,2026-06-22,2026-08-20,2026-08-18,,settled,e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1

Optional context

The earlier report format accepted a declared approval limit, currency and price list. Approval limits support split-invoice checks. Declared USD selected inflation adjustment; a price list contained item_code, unit, unit_price and currency, with optional valid_from and valid_to dates. A missing input must remain visible as not evaluated, not silently scored clean.

Validation and errors

The earlier documentation described 400 for format or option errors, 401 for a missing or unknown key, and 413 above its 8 MiB file limit. These are historical protocol details, not a guarantee of current endpoint availability. Unknown columns and extra cells were rejected.

Read the five report sections

Control profiles

For strict, middle and permissive profiles, the report shows which invoices would have been held in the simulated replay, the reasons, and which holds depend on a cap rather than an unseeded payee history. A hold is a review referral, not a refusal.

Possible duplicates

Invoices with the same borrower, debtor and amount, dated close together. They are questions to check: a tape cannot by itself tell a re-raised invoice from two genuine deliveries.

The book and the stop ladder

Concentration by borrower and debtor, plus what the ladder would have done. The sample book is not rated.

Context checks

Amounts against each borrower and debtor's earlier history; invoices split below a declared approval limit; large first invoices to new parties; prices compared with a declared price list or mapped market series. The report states coverage, missing inputs and why each invoice was flagged.

Borrowing-base reconciliation

Aging-roll breaks, receivables falling without collections and eligibility against declared terms. These are reconciliation questions, not findings. Missing second-period tapes or agreement terms are explicitly NOT EVALUATED.

Preparation and data handling

Read the preparation reference and sharing boundaries. Hashing references alone does not make a file safe to share. The local preparation helper hashes references on your device. It has a 2 MiB / 5,000-row limit and accepts finite decimal amounts, including zero or negative credit rows and thousands commas. Preparing a credit row does not make it part of the older checks. It does not upload records.