Your system can print it.
Now it can send it.
Invoices, statements, picking lists: the reports your business software prints, turned into clean JSON your other systems can actually use. No programming.
Try it with your own file See how it works
100 documents a month free. No card.
The problem
Your accounts system produces a statement run every month. Sixty-three customer statements, every figure in the right place, ready for the printer. Everything anyone could want is in there.
But if you want those statements emailed as PDFs, pushed into a portal or loaded into a spreadsheet, you are stuck. The system will print them. It will not hand them over.
The usual fix is to pay a developer to write a program that reads the file. That works until the next document type comes along, or until somebody adds a column and the program quietly starts reading the wrong figures.
The technique has a name: report mining. Rather than asking for database access you will not be given, you read what the system already prints. This makes it something you can set up yourself.
You point. It reads.
Open a file your system produced and it appears exactly as it would have printed, with a ruler along the top and numbered lines down the side. Drag over the values you want.

Values and tables
Drag across an account number or a total. For transaction lines, drag a box around the rows and then each column. It stays ready for the next one.
Recognition
Point at whatever marks the document type: a code in the corner, a report title. Then you can send files without saying what they are.
One file, many documents
A statement run arrives as one file containing every customer. It comes back as one result per customer, continuation pages kept with the right one.
Then it runs by itself
Send a file, get JSON back. An ordinary web request, so it works from a scheduled job, an automation tool, or the server your reports already land on, including systems far older than this one.
Ask what a file is without processing it, and a job working through a folder can set aside anything it does not recognise instead of failing silently.
curl -s -X POST https://reamline.com/v1/extract \
-H "x-api-key: $KEY" \
-d @payload.json{
"summary": { "documents": 63, "ok": 63 },
"documents": [
{ "data": { "accountNumber": "A2R755",
"totalOutstanding": "5059.68" } }
]
}Built to be checked, not trusted
A parser that stops is cheap. A parser that quietly emits a wrong number is expensive, and nobody reads sixty-three statements to notice.
So every result says how many documents came back clean, money is returned as an exact decimal string rather than a floating-point JSON number, and each published version is kept, so an extraction from six months ago can be reproduced exactly.