Read payslips and pay stubs into structured JSON. Gross and net pay, every earning line, every deduction, every tax, and the year-to-date columns - typed as numbers you can add up and check against the printed totals.
Send the payslip and a schema. The three blocks come back as separate arrays of numbers, so gross minus deductions minus taxes becomes something you verify rather than something you trust.
curl -X POST \
https://api-parse.conversiontools.io/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@payslip.pdf" \
-F 'schema={
"employee_name": "string",
"employee_id": "string",
"employer": "string",
"pay_period_start": "string",
"pay_period_end": "string",
"pay_date": "string",
"gross_pay": "number",
"net_pay": "number",
"earnings": [{
"type": "string",
"hours": "number",
"rate": "number",
"amount": "number"
}],
"deductions": [{ "type": "string", "amount": "number" }],
"taxes": [{ "type": "string", "amount": "number" }],
"ytd_gross": "number",
"ytd_net": "number"
}'{
"status": "completed",
"pages": 1,
"data": {
"employee_name": "Tomas Reinholt",
"employee_id": "EMP-40277",
"employer": "Cedarline Manufacturing",
"pay_period_start": "2026-02-01",
"pay_period_end": "2026-02-15",
"pay_date": "2026-02-20",
"gross_pay": 3096.00,
"net_pay": 2060.86,
"earnings": [
{ "type": "Regular", "hours": 80.0, "rate": 36.00, "amount": 2880.00 },
{ "type": "Overtime", "hours": 4.0, "rate": 54.00, "amount": 216.00 }
],
"deductions": [
{ "type": "Health insurance", "amount": 142.50 },
{ "type": "Retirement plan", "amount": 154.80 }
],
"taxes": [
{ "type": "Federal income tax", "amount": 372.40 },
{ "type": "State income tax", "amount": 128.60 },
{ "type": "Social security", "amount": 191.95 },
{ "type": "Medicare", "amount": 44.89 }
],
"ytd_gross": 9288.00,
"ytd_net": 6182.58
}
}Every employer prints a payslip differently and every country adds its own statutory lines. The arithmetic underneath never changes.
Amounts come back as typed numbers, not strings with currency symbols glued on. Your job can sum the earning lines, subtract deductions and taxes, and compare the result to the printed net pay.
Pension, social contributions, union dues, garnishments, statutory levies - the deduction and tax arrays hold whatever that payslip actually lists, so a new jurisdiction does not mean a new integration.
An income check usually needs the cumulative figures, not a single fortnight. YTD gross and net are captured as their own fields, so a lender or an auditor gets both views from one pass.
Yes. Layouts, statutory line names, and date formats vary by country and by employer. You describe the fields you want and each payslip is mapped onto them, so a payroll run spanning several countries lands in one consistent shape.
Amounts come back as numbers, so you can sum the earning lines yourself, subtract deductions and taxes, and compare against gross_pay and net_pay. Keeping that check in your own code is the honest way to catch a bad scan before it reaches a decision.
A payroll export often bundles many employees into a single file. Declare the top level of your schema as an array and each employee comes back as its own object, instead of only the first page being read.
Yes. Applicants photograph a pay stub with a phone far more often than they export a clean PDF. OCR is applied automatically, so a photo goes through the same endpoint with no separate pre-processing step.
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.
Credit amounts matched back to the original invoice.
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.
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.