Pull credit notes and credit memos into structured JSON. The credit note number, the invoice it reverses, the reason, the tax split, and every line item - typed and ready to post against the open payable.
Send the credit note and a schema. The reference back to the original invoice comes out as its own field, which turns matching into a lookup instead of a search.
curl -X POST \
https://api-parse.conversiontools.io/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@credit-note.pdf" \
-F 'schema={
"credit_note_number": "string",
"original_invoice_number": "string",
"vendor": "string",
"issue_date": "string",
"reason": "string",
"currency": "string",
"subtotal": "number",
"tax": "number",
"total_credit": "number",
"line_items": [{
"description": "string",
"quantity": "number",
"unit_price": "number",
"amount": "number"
}]
}'{
"status": "completed",
"pages": 1,
"data": {
"credit_note_number": "CN-2026-00814",
"original_invoice_number": "INV-2026-05531",
"vendor": "Halberd Components BV",
"issue_date": "2026-03-14",
"reason": "Damaged goods returned",
"currency": "EUR",
"subtotal": 1240.00,
"tax": 260.40,
"total_credit": 1500.40,
"line_items": [
{
"description": "Hinge assembly, 40mm",
"quantity": 80,
"unit_price": 12.50,
"amount": 1000.00
},
{
"description": "Restocking adjustment",
"quantity": 1,
"unit_price": 240.00,
"amount": 240.00
}
]
}
}A credit note is only useful once it is tied to the invoice it corrects. That one reference decides everything downstream.
The number the credit reverses is captured on its own, wherever the vendor chose to print it: in the header, on a memo line, or halfway through the reason text. That is what makes auto-matching possible at all.
Partial returns credit some lines and leave others alone. Each line comes back with description, quantity, unit price, and amount, so the credit lands on the right cost centre rather than in a suspense account.
"Credit note", "credit memo", "Gutschrift", "nota de crédito" - the wording, the layout, and the tax treatment change per vendor and per country. One schema covers the lot, with no per-vendor template to maintain.
Declare original_invoice_number in your schema. It comes back as its own field, so your reconciliation job can look the invoice up directly instead of scanning document text for something that looks like a reference.
Declare the reference as an array in your schema and each invoice number comes back as a separate entry. That keeps a consolidated credit from collapsing into one unusable string that nothing can join on.
That is up to your schema and your own convention. Amounts come back as typed numbers exactly as printed, so you apply the sign in your ledger logic rather than inferring it from a minus sign or a pair of brackets.
Yes. Field labels, date formats, and tax lines all differ by country. Because you describe the fields you want rather than their position on the page, the same schema handles a document from any of them.
Uploaded documents are deleted automatically within 24 hours. Extracted data is encrypted in transit and at rest and is never used to train models.
The same schema-driven API works across every document type. Define a schema once, extract from thousands of files.
Extract structured JSON from any document with custom schemas.
Parse any PDF into structured JSON, scanned or digital.
Vendor, line items, totals, tax, and dates from invoices.
Store, items, totals, and payment method from receipts.
PO number, vendor, buyer, and SKU-level line items.
Transactions, running balances, and dates for reconciliation.
Box-level data from W-2, 1099, and other tax forms.
Parties, dates, governing law, and key clauses.
Carrier, parties, ports, containers, and cargo.
Payments split across invoices for cash application.
Meter readings, charges, and totals from any provider.
Line items and periods from balance sheets and reports.
Vendor quotes in one shape so you can compare them.
Earnings, deductions, taxes, and year-to-date totals.
Experience, education, and skills from any CV layout.
Fields and MRZ from passports and ID cards.
Rent, term, deposits, and renewal deadlines.
Claim and policy numbers, dates, and claimed amounts.
Packages and SKU-level lines for receiving.
Ordered versus delivered quantities and sign-off.
Free tier covers your first 100 pages a month. No credit card to start.