Extract checks to structured JSON

Checks contain payee, amount, date, and routing information in a compact format that mixes printed and handwritten content. Layout variation creates unique parsing challenges. Sensible converts check data into structured JSON for payment processing and reconciliation workflows.

Why checks challenge automated extraction

Handwritten content, MICR line encoding, and compact layouts create unique OCR and parsing challenges.

Handwritten Content Recognition

Payee names, dates, and dollar amounts are written by hand in thousands of different handwriting styles. LLM-based parsing reads the handwriting; confidence scores indicate extraction certainty so your review workflow catches any uncertainty.

MICR Line Extraction

Routing number, account number, check number: all encoded in the MICR line's specialized font at the bottom of the check. Each component is extracted and validated against expected formats. No manual lookup required.

Amount Verification

Two amounts on every check: numeric and written. Both are extracted and cross-checked against each other. Mismatches get flagged automatically, catching errors that single-value extraction would miss.

Fields we extract

Standard check fields cover payment processing. Add custom fields for your reconciliation workflow.

Check detail

Check number, date, payee name, numeric amount, written amount, memo/for line

Bank information

Bank name, routing number (ABA), account number, fractional routing number, MICR line (full)

Payer information

Payer name, payer address, signature presence, bank branch


{ /* SenseML: check extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{
// Check number
"id": "check_number",
"description": "check number, check #, check no",
"type": {
"id": "custom",
"pattern": "[0-9]{3,}"
}
},
{
// Payee name
"id": "payee",
"description": "pay to the order of, payee name, payee"
},
{
// Numeric dollar amount
"id": "amount",
"description": "dollar amount, numeric amount, $",
"type": { "id": "currency" }
},
{
// Routing number from MICR line
"id": "routing_number",
"description": "routing number, ABA number, bank routing",
"type": {
"id": "custom",
"pattern": "[0-9]{9}"
}
}
// Additional fields for date, written amount, memo, account number, etc.
]
}
}
]
}
Business Check

Corporate or business check often including remittance detail.

Cashier's Check

Bank-issued cashier's check with verification number and issuing institution.

Personal Check

Standard personal check with MICR line, payee, amount, and date fields.

Supported check types

Sensible processes personal, business, cashier's, and payroll checks. The hybrid approach handles both printed and handwritten content with confidence scoring on every field.

By type

Personal checks, business checks, cashier's checks, certified checks, money orders

By format

Printed checks, handwritten checks, laser-printed checks, multi-part check stubs with remittance detail

Trusted by operations and engineering teams at

Common Questions

Answers about handwriting recognition, MICR parsing, and amount verification.

What fields does Sensible extract from checks?

Sensible captures check number, date, payee name, numeric amount, written amount, memo, bank name, routing number, and account number.

Does Sensible handle handwritten checks?

Sensible uses LLM-based parsing for handwritten payee names, amounts, dates, and memo fields. Confidence signals indicate extraction certainty on handwritten content.

Can Sensible read the MICR line on checks?

Yes. Sensible extracts the routing number, account number, and check number from the MICR (Magnetic Ink Character Recognition) line at the bottom of the check.

Do you support webhooks?

Yes. Sensible sends extraction results to your webhook endpoint when processing completes. You can also poll the API for status.

Does Sensible support human review?

Yes. Sensible flags extractions with low confidence for human review. You can configure review thresholds and workflows.

What security certifications does Sensible have?

Sensible is SOC 2 Type II certified and HIPAA compliant. Data is encrypted in transit and at rest.

How long is document data retained?

Document data is stored indefinitely by default. Custom retention policies are available and can be configured for same-day deletion if needed.

Is there a free trial?

Yes. Sensible offers a 14-day free trial on the Growth plan. No credit card required to start.

How is pricing structured?

Sensible uses per-document pricing for predictable costs. No token-based billing or usage surprises. Volume discounts are available for higher throughput.

How do I integrate with Sensible?

Sensible provides REST APIs and SDKs for Python and Node.js. Most integrations take a few hours. Webhooks, Zapier, and direct API calls are all supported.

What file formats does Sensible support?

Sensible processes PDFs (native or scanned), Microsoft Word (DOC, DOCX), spreadsheets (XLSX, XLS, CSV), single-page images (JPEG, PNG), multi-page images (TIFF), and email bodies with attachments.

How accurate is the extraction?

Accuracy depends on document quality and configuration. Most production deployments achieve 95%+ accuracy with proper validation rules and confidence signals.

How fast is document processing?

Processing speed depends on document size, page count, OCR requirements, and which extraction methods are used. Simple single-page documents process in seconds. Larger or more complex documents that use LLM-based extraction take longer.