Financial · API reference
Cheques
Read a whole cheque
/v2/cheques/readcheques.readReads everything on a cheque in one call: the MICR line with its named fields, what is written on the face (payee, amount in figures and words, date, drawer, bank, crossing, signature), the bank matched in the directory, and the country and currency. A photo with several cheques returns each in cheques. The read and the photo are kept in the scan history.
Amounts, payee and date are read from handwriting: check important values before acting on them.
Price: 0.05 credits per successful call.
Form fields (multipart)
imagefilerequiredThe cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.
formatstringThe MICR font.
autofinds it.autoe13bcmc7
Returns
The read ran; status says how much of the MICR line was read.
Show the ChequeDeepRead fieldsHide fields
idstringrequiredScan id,
chq_followed by 12 characters.objectstringrequiredAlways
cheque_read.created_atstring (date-time)requiredWhen it was created (ISO 8601, UTC).
sourcestringrequiredWhere the call came from, as shown in the console's logs.
apisdkplaygroundenvstringrequiredThe environment the read is recorded in: the credential's.
livetestprocessing_msintegerrequiredThe MICR engine's time alone, in milliseconds;
timinghas the rest.imageobjectrequiredShow 3 fieldsHide fields
widthintegerrequiredheightintegerrequiredurlstringrequiredThe stored photo, relative to the API base.
statusstringrequiredpartial: read, but something a caller relies on is missing or failed a check (issue_codesays what).unreadable: nothing to read.readpartialunreadablemicrobjectrequiredA cheque's MICR read (the MICR service's wire format).
Show 16 fieldsHide fields
idstringrequiredScan id,
chq_followed by 12 characters.objectstringrequiredAlways
cheque.created_atstring (date-time)requiredWhen it was created (ISO 8601, UTC).
sourcestringrequiredWhere the call came from, as shown in the console's logs.
apisdkplaygroundenvstringrequiredThe environment the read is recorded in: the credential's.
livetestprocessing_msintegerrequiredHow long the engine took, in milliseconds.
statusstringrequiredpartial: read, but something a caller relies on is missing or failed a check (issue_codesays what).unreadable: nothing to read.readpartialunreadableissue_codestringWhy a read is
partialorunreadable:no_micr_line,routing_checksum_failed,routing_prefix_invalid,layout_unrecognised,weak_characters,no_card,number_unreadable,luhn_failed,low_confidence.issuestringThe same reason in plain words, safe to show a person.
imageobjectrequiredShow 3 fieldsHide fields
widthintegerrequiredheightintegerrequiredurlstringrequiredThe stored photo, relative to the API base.
zones_detectedintegerrequiredHow many MICR lines were found.
zonesarray of objectsrequiredEvery MICR line found, strongest first.
Show 19 fieldsHide fields
indexintegerrequiredPosition among the lines found, strongest first.
textstringrequiredAs read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).
descriptionstringrequiredThe engine's label for the line, for example
E-13B.confidencesarray of numbersrequiredEvery confidence the engine returned: zone-level values, then one per character.
klassintegerThe engine's class for the line.
skewnumberrequiredSkew of the line, in degrees.
warpedBoxarray of numbersThe engine's own box, verbatim (its spelling).
fontstringrequiredMICR font.
E-13BCMC-7printedstringrequiredThe line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.
confidencenumberrequiredSummary confidence for the line, 0 to 100.
char_confidencesarray of numbersrequiredOne confidence (0 to 100) per character of
text.min_char_confidencenumberThe weakest character's confidence.
boxarray of numbersrequiredFour corners x1,y1 … x4,y4, rounded, in image pixels.
segmentsarray of stringsrequiredThe groups the control symbols delimit.
fieldsarray of objectsFields named as the reader names them; empty when no template fits.
field_listarray of objectsEvery field the font can carry, empty where this line did not yield it.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
templatestringWhich fixed template named the line.
us_businessus_personalbr_cmc7fr_cmc7standardobjectAn official national layout (whole-line match only).
Show 5 fieldsHide fields
idstringrequiredThe standard, for example
ca_cpa_006orin_cts_2010.namestringrequiredThe standard's name, for example
Canada (Payments Canada Standard 006).countrystringrequiredISO 3166-1 alpha-2.
fieldsarray of objectsrequiredThe fields this line yielded.
field_listarray of objectsEvery field of the standard, empty where the line did not yield it.
routingobjectThe ABA proof behind a US routing number.
Show 8 fieldsHide fields
validbooleanrequiredTrue only when the checksum and the prefix both hold.
checksum_passbooleanrequiredThe ABA check digit holds.
check_digitintegerThe ninth digit as read. Absent when the number is not nine digits.
expected_check_digitintegerThe digit the first eight imply. An audit value, not a correction.
prefix_validbooleanrequiredThe first two digits are an assigned Federal Reserve routing symbol.
institution_typestringInstitution type from the routing number's prefix.
bankthriftelectronicgovernmenttravellers_chequefederal_reserve_districtstringThe Federal Reserve district, when valid.
reasonstringWhy it is not valid.
not_nine_digitscheck_digit_mismatchprefix_not_assigned
microbjectOne MICR line, exactly as the engine returns it, plus values derived from its text.
Show 19 fieldsHide fields
indexintegerrequiredPosition among the lines found, strongest first.
textstringrequiredAs read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).
descriptionstringrequiredThe engine's label for the line, for example
E-13B.confidencesarray of numbersrequiredEvery confidence the engine returned: zone-level values, then one per character.
klassintegerThe engine's class for the line.
skewnumberrequiredSkew of the line, in degrees.
warpedBoxarray of numbersThe engine's own box, verbatim (its spelling).
fontstringrequiredMICR font.
E-13BCMC-7printedstringrequiredThe line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.
confidencenumberrequiredSummary confidence for the line, 0 to 100.
char_confidencesarray of numbersrequiredOne confidence (0 to 100) per character of
text.min_char_confidencenumberThe weakest character's confidence.
boxarray of numbersrequiredFour corners x1,y1 … x4,y4, rounded, in image pixels.
segmentsarray of stringsrequiredThe groups the control symbols delimit.
fieldsarray of objectsFields named as the reader names them; empty when no template fits.
field_listarray of objectsEvery field the font can carry, empty where this line did not yield it.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
templatestringWhich fixed template named the line.
us_businessus_personalbr_cmc7fr_cmc7standardobjectAn official national layout (whole-line match only).
Show 5 fieldsHide fields
idstringrequiredThe standard, for example
ca_cpa_006orin_cts_2010.namestringrequiredThe standard's name, for example
Canada (Payments Canada Standard 006).countrystringrequiredISO 3166-1 alpha-2.
fieldsarray of objectsrequiredThe fields this line yielded.
field_listarray of objectsEvery field of the standard, empty where the line did not yield it.
routingobjectThe ABA proof behind a US routing number.
Show 8 fieldsHide fields
validbooleanrequiredTrue only when the checksum and the prefix both hold.
checksum_passbooleanrequiredThe ABA check digit holds.
check_digitintegerThe ninth digit as read. Absent when the number is not nine digits.
expected_check_digitintegerThe digit the first eight imply. An audit value, not a correction.
prefix_validbooleanrequiredThe first two digits are an assigned Federal Reserve routing symbol.
institution_typestringInstitution type from the routing number's prefix.
bankthriftelectronicgovernmenttravellers_chequefederal_reserve_districtstringThe Federal Reserve district, when valid.
reasonstringWhy it is not valid.
not_nine_digitscheck_digit_mismatchprefix_not_assigned
qualityobjectrequiredCapture-quality signals.
Show 3 fieldsHide fields
rotationnumberrequiredPage rotation, degrees.
skewnumberPrimary line skew, degrees.
min_char_confidencenumberWeakest character.
countryobjectThe cheque's country and where it came from.
Show 4 fieldsHide fields
codestringrequiredISO 3166-1 alpha-2, upper case.
namestringrequiredCountry name.
flagstringrequiredFlag emoji.
sourcestringrequiredWhere the country came from.
bank_directorycheque_facemicr_line
read_onobjectPresent when only a resized copy named fields; boxes are mapped back to the original.
Show 4 fieldsHide fields
imagestringrequiredscalenumberrequiredwidthintegerrequiredheightintegerrequired
visionobjectWhat is written on the cheque's face. The engine may add keys; they are kept.
Show 16 fieldsHide fields
fieldsarray of objectsEvery field read, with its box.
Show 7 fieldsHide fields
source_idintegerIndex of the text box this field kept.
typestringrequiredField type:
payee,courtesy_amount,legal_amount,date,drawer,bank_name,memo,cheque_number,signature.valuestringThe value, corrected.
confidencenumberConfidence, 0 to 1.
verifiedbooleanChecked against the detector's text.
boxarray of array of numberssThe polygon (4 points) the field kept.
detector_textstringWhat the text detector read there.
amountobjectShow 5 fieldsHide fields
figuresstringThe amount box, as written.
wordsstringThe amount in words, as written.
numericnumberfractionstringagreementbooleanWords and figures say the same amount.
currencyobjectShow 3 fieldsHide fields
codestringsymbolstringsourcestring
dateobjectShow 5 fieldsHide fields
rawstringisostringformatstringambiguousbooleanpost_datedboolean
payeestringWho the cheque is paid to.
drawerobjectThe account holder printed on the cheque.
Show 2 fieldsHide fields
namestringaddressstring
bankobjectShow 4 fieldsHide fields
namestringcountrystringbranchstringaddressstring
cheque_number_printedstringaccount_number_printedstringmemostringpay_wordingstringThe printed pay line.
crossingobjectShow 3 fieldsHide fields
presentbooleantypestringtextstring
signatureobjectShow 2 fieldsHide fields
presentbooleancountinteger
cheque_typestringlanguagestringISO 639-1 language of the face.
region_guessstringCountry the face suggests, ISO 3166-1 alpha-2.
bankobjectA bank read on a document, matched in the directory.
Show 5 fieldsHide fields
readobjectrequiredWhat the document says.
Show 4 fieldsHide fields
namestringcountrystringbranchstringaddressstring
resolvedobjectA bank from VeriSec's directory of about 75,000 banks.
Show 12 fieldsHide fields
profile_idstringrequiredThe bank's directory id.
namestringrequiredThe bank's name.
countrystringcountry_codestringISO 3166-1 alpha-2.
citystringaddressstringbicstringroutingstringparentstringstatusstringOnly when the record states it plainly.
activedissolvednulllogo_urlstringThe bank's logo, relative to the API base.
flag_urlstringThe country's flag (SVG), relative to the API base.
match_confidencenumberrequiredHow strong the match is, 0 to 1.
name_matchnumberHow surely the two names name the same bank, 0 to 1.
alternativesarray of objectsrequiredOther close banks, best first.
Show 12 fieldsHide fields
profile_idstringrequiredThe bank's directory id.
namestringrequiredThe bank's name.
countrystringcountry_codestringISO 3166-1 alpha-2.
citystringaddressstringbicstringroutingstringparentstringstatusstringOnly when the record states it plainly.
activedissolvednulllogo_urlstringThe bank's logo, relative to the API base.
flag_urlstringThe country's flag (SVG), relative to the API base.
currencyobjectA full currency record (ISO 4217 + CLDR).
Show 10 fieldsHide fields
codestringnumeric_codestringnamestringsymbolstringlocal_symbolstringminor_unitsstringenglish_name_cldrstringusd_per_unitnumber or stringunits_per_usdnumber or stringwikidata_idstring
countryobjectThe cheque's country and where it came from.
Show 4 fieldsHide fields
codestringrequiredISO 3166-1 alpha-2, upper case.
namestringrequiredCountry name.
flagstringrequiredFlag emoji.
sourcestringrequiredWhere the country came from.
bank_directorycheque_facemicr_line
reader_errorstringSet when the vision reader could not be reached; the MICR part still stands.
text_boxesobjectEvery text box on the image, for drawing only (no text).
Show 3 fieldsHide fields
widthintegerrequiredImage width in pixels.
heightintegerrequiredImage height in pixels.
boxesarray of objectsrequiredEvery text region found.
Show 2 fieldsHide fields
boxarray of numbersrequiredFour corners x1,y1 … x4,y4, in image pixels.
scorenumberrequiredDetection score, 0 to 1.
chequesarray of objectsOnly when the photo holds more than one cheque. The fields above are cheque 1.
Show 7 fieldsHide fields
indexintegerrequired1-based, from the top (left to right when side by side).
microbjectrequiredShow 8 fieldsHide fields
statusstringrequiredpartial: read, but something a caller relies on is missing or failed a check (issue_codesays what).unreadable: nothing to read.readpartialunreadableissue_codestringWhy a read is
partialorunreadable:no_micr_line,routing_checksum_failed,routing_prefix_invalid,layout_unrecognised,weak_characters,no_card,number_unreadable,luhn_failed,low_confidence.issuestringzones_detectedintegerzonesarray of objectsShow 19 fieldsHide fields
indexintegerrequiredPosition among the lines found, strongest first.
textstringrequiredAs read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).
descriptionstringrequiredThe engine's label for the line, for example
E-13B.confidencesarray of numbersrequiredEvery confidence the engine returned: zone-level values, then one per character.
klassintegerThe engine's class for the line.
skewnumberrequiredSkew of the line, in degrees.
warpedBoxarray of numbersThe engine's own box, verbatim (its spelling).
fontstringrequiredMICR font.
E-13BCMC-7printedstringrequiredThe line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.
confidencenumberrequiredSummary confidence for the line, 0 to 100.
char_confidencesarray of numbersrequiredOne confidence (0 to 100) per character of
text.min_char_confidencenumberThe weakest character's confidence.
boxarray of numbersrequiredFour corners x1,y1 … x4,y4, rounded, in image pixels.
segmentsarray of stringsrequiredThe groups the control symbols delimit.
fieldsarray of objectsFields named as the reader names them; empty when no template fits.
field_listarray of objectsEvery field the font can carry, empty where this line did not yield it.
templatestringWhich fixed template named the line.
us_businessus_personalbr_cmc7fr_cmc7standardobjectAn official national layout (whole-line match only).
routingobjectThe ABA proof behind a US routing number.
microbjectOne MICR line, exactly as the engine returns it, plus values derived from its text.
Show 19 fieldsHide fields
indexintegerrequiredPosition among the lines found, strongest first.
textstringrequiredAs read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).
descriptionstringrequiredThe engine's label for the line, for example
E-13B.confidencesarray of numbersrequiredEvery confidence the engine returned: zone-level values, then one per character.
klassintegerThe engine's class for the line.
skewnumberrequiredSkew of the line, in degrees.
warpedBoxarray of numbersThe engine's own box, verbatim (its spelling).
fontstringrequiredMICR font.
E-13BCMC-7printedstringrequiredThe line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.
confidencenumberrequiredSummary confidence for the line, 0 to 100.
char_confidencesarray of numbersrequiredOne confidence (0 to 100) per character of
text.min_char_confidencenumberThe weakest character's confidence.
boxarray of numbersrequiredFour corners x1,y1 … x4,y4, rounded, in image pixels.
segmentsarray of stringsrequiredThe groups the control symbols delimit.
fieldsarray of objectsFields named as the reader names them; empty when no template fits.
field_listarray of objectsEvery field the font can carry, empty where this line did not yield it.
templatestringWhich fixed template named the line.
us_businessus_personalbr_cmc7fr_cmc7standardobjectAn official national layout (whole-line match only).
routingobjectThe ABA proof behind a US routing number.
countryobjectThe cheque's country and where it came from.
Show 4 fieldsHide fields
codestringrequiredISO 3166-1 alpha-2, upper case.
namestringrequiredCountry name.
flagstringrequiredFlag emoji.
sourcestringrequiredWhere the country came from.
bank_directorycheque_facemicr_line
qualityobjectShow 3 fieldsHide fields
rotationnumberskewnumbermin_char_confidencenumber
visionobject or anybankobjectA bank read on a document, matched in the directory.
Show 5 fieldsHide fields
readobjectrequiredWhat the document says.
Show 4 fieldsHide fields
namestringcountrystringbranchstringaddressstring
resolvedobjectA bank from VeriSec's directory of about 75,000 banks.
Show 12 fieldsHide fields
profile_idstringrequiredThe bank's directory id.
namestringrequiredThe bank's name.
countrystringcountry_codestringISO 3166-1 alpha-2.
citystringaddressstringbicstringroutingstringparentstringstatusstringOnly when the record states it plainly.
activedissolvednulllogo_urlstringThe bank's logo, relative to the API base.
flag_urlstringThe country's flag (SVG), relative to the API base.
match_confidencenumberrequiredHow strong the match is, 0 to 1.
name_matchnumberHow surely the two names name the same bank, 0 to 1.
alternativesarray of objectsrequiredOther close banks, best first.
Show 12 fieldsHide fields
profile_idstringrequiredThe bank's directory id.
namestringrequiredThe bank's name.
countrystringcountry_codestringISO 3166-1 alpha-2.
citystringaddressstringbicstringroutingstringparentstringstatusstringOnly when the record states it plainly.
activedissolvednulllogo_urlstringThe bank's logo, relative to the API base.
flag_urlstringThe country's flag (SVG), relative to the API base.
countryobject or anycurrencyobject or anyreader_errorstring
timingobjectWhere the time went, in milliseconds.
Show 4 fieldsHide fields
micr_msintegermodel_msintegerboxes_msintegertotal_msinteger
image_qualityobjectPhoto quality from the check before the read. It never blocks the read, only warns.
Show 3 fieldsHide fields
statusstringrequiredokdocument_not_foundtoo_farblurryglareunreadablenormalisedbooleanmsinteger
Errors
400A field is missing or not valid.401No API key, or the key is not valid, expired or revoked.402Not enough credits for this call (insufficient_credits), or the key reached its spend cap. Nothing was charged.403The key may not call this API (permission, environment or IP allow-list). Nothing was charged.413The image or the request is too large.415The file type is not accepted (JPG, PNG or BMP).429Too many requests for this key: waitRetry-Afterseconds. Nothing was charged.5XXThe check could not run. Nothing was charged.
curl -X POST https://verisec.dev/v2/cheques/read \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-F image=@cheque-us.jpg \
-F format=auto{
"id": "chq_qqlrR1plZuui",
"object": "cheque_read",
"created_at": "2026-10-16T08:46:10.000Z",
"source": "api",
"env": "test",
"processing_ms": 412,
"image": {
"width": 1600,
"height": 732,
"url": "/v2/cheques/chq_qqlrR1plZuui/image"
},
"status": "read",
"micr": {
"id": "chq_qqlrR1plZuui",
"object": "cheque",
"created_at": "2026-10-16T08:46:10.000Z",
"source": "api",
"env": "test",
"processing_ms": 412,
"image": {
"width": 1600,
"height": 732,
"url": "/v2/cheques/chq_qqlrR1plZuui/image"
},
"status": "read",
"zones_detected": 1,
"zones": [
{
"index": 0,
"text": "A123456780A4821093755C1042",
"description": "E-13B",
"confidences": [
94.82305,
100,
99.47161,
95.96349,
95.77407,
94.82305,
97.75157,
98.45739,
96.92823,
97.80382,
97.50368,
95.37349,
99.95,
95.59242,
98.01218,
99.41121,
98.00035,
96.21138,
97.68338,
96.84993,
96.21704,
94.88116,
96.10776,
97.40173,
98.11028,
96.11909,
98.38227,
99.41477
],
"klass": 1,
"skew": 0,
"warpedBox": [
233.7,
641.6,
1170,
642,
1169.9,
685.3,
233.8,
685.1
],
"font": "E-13B",
"printed": "⑆123456780⑆4821093755⑈1042",
"confidence": 94.8,
"char_confidences": [
99.5,
96,
95.8,
94.8,
97.8,
98.5,
96.9,
97.8,
97.5,
95.4,
100,
95.6,
98,
99.4,
98,
96.2,
97.7,
96.8,
96.2,
94.9,
96.1,
97.4,
98.1,
96.1,
98.4,
99.4
],
"min_char_confidence": 94.8,
"box": [
234,
642,
1170,
642,
1170,
685,
234,
685
],
"segments": [
"123456780",
"4821093755",
"1042"
],
"fields": [
{
"Routing": "123456780"
},
{
"Account": "4821093755"
},
{
"Check number": "1042"
}
],
"field_list": [
{
"name": "Auxiliary On-Us",
"value": ""
},
{
"name": "EPC",
"value": ""
},
{
"name": "Routing",
"value": "123456780"
},
{
"name": "Account",
"value": "4821093755"
},
{
"name": "Check number",
"value": "1042"
},
{
"name": "Amount",
"value": ""
}
],
"template": "us_personal",
"routing": {
"valid": true,
"checksum_pass": true,
"check_digit": 0,
"expected_check_digit": 0,
"prefix_valid": true,
"institution_type": "bank",
"federal_reserve_district": "San Francisco"
}
}
],
"micr": {
"index": 0,
"text": "A123456780A4821093755C1042",
"description": "E-13B",
"confidences": [
94.82305,
100,
99.47161,
95.96349,
95.77407,
94.82305,
97.75157,
98.45739,
96.92823,
97.80382,
97.50368,
95.37349,
99.95,
95.59242,
98.01218,
99.41121,
98.00035,
96.21138,
97.68338,
96.84993,
96.21704,
94.88116,
96.10776,
97.40173,
98.11028,
96.11909,
98.38227,
99.41477
],
"klass": 1,
"skew": 0,
"warpedBox": [
233.7,
641.6,
1170,
642,
1169.9,
685.3,
233.8,
685.1
],
"font": "E-13B",
"printed": "⑆123456780⑆4821093755⑈1042",
"confidence": 94.8,
"char_confidences": [
99.5,
96,
95.8,
94.8,
97.8,
98.5,
96.9,
97.8,
97.5,
95.4,
100,
95.6,
98,
99.4,
98,
96.2,
97.7,
96.8,
96.2,
94.9,
96.1,
97.4,
98.1,
96.1,
98.4,
99.4
],
"min_char_confidence": 94.8,
"box": [
234,
642,
1170,
642,
1170,
685,
234,
685
],
"segments": [
"123456780",
"4821093755",
"1042"
],
"fields": [
{
"Routing": "123456780"
},
{
"Account": "4821093755"
},
{
"Check number": "1042"
}
],
"field_list": [
{
"name": "Auxiliary On-Us",
"value": ""
},
{
"name": "EPC",
"value": ""
},
{
"name": "Routing",
"value": "123456780"
},
{
"name": "Account",
"value": "4821093755"
},
{
"name": "Check number",
"value": "1042"
},
{
"name": "Amount",
"value": ""
}
],
"template": "us_personal",
"routing": {
"valid": true,
"checksum_pass": true,
"check_digit": 0,
"expected_check_digit": 0,
"prefix_valid": true,
"institution_type": "bank",
"federal_reserve_district": "San Francisco"
}
},
"quality": {
"rotation": 0,
"skew": 0,
"min_char_confidence": 94.8
}
},
"vision": {
"fields": [
{
"source_id": 0,
"type": "drawer",
"value": "Northwind Logistics LLC, 410 Harbor Way, Portland, OR 97209",
"confidence": 0.932,
"verified": true,
"box": [
[
61,
48
],
[
454,
48
],
[
454,
128
],
[
61,
128
]
],
"detector_text": "NORTHWIND LOGISTICS LLC 410 Harbor Way Portland, OR 97209"
},
{
"source_id": 1,
"type": "cheque_number",
"value": "1042",
"confidence": 0.931,
"verified": true,
"box": [
[
1458,
45
],
[
1541,
45
],
[
1541,
78
],
[
1458,
78
]
],
"detector_text": "1042"
},
{
"source_id": 2,
"type": "date",
"value": "October 14, 2026",
"confidence": 0.962,
"verified": true,
"box": [
[
1147,
140
],
[
1394,
140
],
[
1394,
176
],
[
1147,
176
]
],
"detector_text": "October 14, 2026"
},
{
"source_id": 3,
"type": "payee",
"value": "Keza Amani",
"confidence": 0.994,
"verified": true,
"box": [
[
229,
236
],
[
470,
236
],
[
470,
285
],
[
229,
285
]
],
"detector_text": "Keza Amani"
},
{
"source_id": 4,
"type": "courtesy_amount",
"value": "2,450.00",
"confidence": 0.957,
"verified": true,
"box": [
[
1267,
239
],
[
1426,
239
],
[
1426,
282
],
[
1267,
282
]
],
"detector_text": "2,450.00"
},
{
"source_id": 5,
"type": "legal_amount",
"value": "Two thousand four hundred fifty and 00/100",
"confidence": 0.962,
"verified": true,
"box": [
[
83,
332
],
[
749,
332
],
[
749,
369
],
[
83,
369
]
],
"detector_text": "Two thousand four hundred fifty and 00/100"
},
{
"source_id": 6,
"type": "memo",
"value": "Invoice 2291",
"confidence": 0.958,
"verified": true,
"box": [
[
153,
560
],
[
326,
560
],
[
326,
594
],
[
153,
594
]
],
"detector_text": "Invoice 2291"
},
{
"source_id": 7,
"type": "signature",
"value": "present",
"confidence": 0.908,
"verified": true,
"box": [
[
1017,
522
],
[
1283,
522
],
[
1283,
593
],
[
1017,
593
]
],
"detector_text": "M. Laurent"
},
{
"source_id": 8,
"type": "bank_name",
"value": "Harbor Point Bank",
"confidence": 0.966,
"verified": true,
"box": [
[
129,
450
],
[
372,
450
],
[
372,
499
],
[
129,
499
]
],
"detector_text": "Harbor Point Bank Portland, Oregon"
}
],
"amount": {
"figures": "2,450.00",
"words": "Two thousand four hundred fifty and 00/100",
"numeric": 2450,
"fraction": "00/100",
"agreement": true
},
"currency": {
"code": "USD",
"symbol": "$",
"source": "amount_box"
},
"date": {
"raw": "October 14, 2026",
"iso": "2026-10-14",
"format": "MMMM D, YYYY",
"ambiguous": false,
"post_dated": false
},
"payee": "Keza Amani",
"drawer": {
"name": "Northwind Logistics LLC",
"address": "410 Harbor Way, Portland, OR 97209"
},
"bank": {
"name": "Harbor Point Bank",
"country": "United States",
"branch": "Portland, Oregon"
},
"cheque_number_printed": "1042",
"memo": "Invoice 2291",
"pay_wording": "Pay to the order of",
"crossing": {
"present": false
},
"signature": {
"present": true,
"count": 1
},
"language": "en",
"region_guess": "US"
},
"bank": {
"read": {
"name": "Harbor Point Bank",
"country": "United States",
"branch": "Portland, Oregon"
},
"resolved": {
"profile_id": "bank_404a7c517025f193fa",
"name": "Harbor Point Bank",
"country": "United States",
"country_code": "US",
"city": "Portland",
"address": "88 Harbor Point Plaza, Portland, OR 97209",
"bic": "HPBKUS6P",
"routing": "123456780",
"status": "active",
"logo_url": "/v2/banks/bank_404a7c517025f193fa/logo",
"flag_url": "/v2/flags/us.svg"
},
"match_confidence": 0.98,
"name_match": 1,
"alternatives": []
},
"currency": {
"code": "USD",
"numeric_code": "840",
"name": "US Dollar",
"symbol": "$",
"local_symbol": "$",
"minor_units": "2",
"english_name_cldr": "US Dollar",
"usd_per_unit": "1",
"units_per_usd": "1",
"wikidata_id": "Q4917"
},
"country": {
"code": "US",
"name": "United States",
"flag": "🇺🇸",
"source": "bank_directory"
},
"text_boxes": {
"width": 1600,
"height": 732,
"boxes": [
{
"box": [
61,
48,
454,
48,
454,
128,
61,
128
],
"score": 0.989
},
{
"box": [
1458,
45,
1541,
45,
1541,
78,
1458,
78
],
"score": 0.975
},
{
"box": [
1147,
140,
1394,
140,
1394,
176,
1147,
176
],
"score": 0.906
},
{
"box": [
229,
236,
470,
236,
470,
285,
229,
285
],
"score": 0.941
},
{
"box": [
1267,
239,
1426,
239,
1426,
282,
1267,
282
],
"score": 0.897
},
{
"box": [
83,
332,
749,
332,
749,
369,
83,
369
],
"score": 0.922
},
{
"box": [
153,
560,
326,
560,
326,
594,
153,
594
],
"score": 0.893
},
{
"box": [
1017,
522,
1283,
522,
1283,
593,
1017,
593
],
"score": 0.844
},
{
"box": [
129,
450,
372,
450,
372,
499,
129,
499
],
"score": 0.959
}
]
},
"timing": {
"micr_ms": 412,
"model_ms": 1186,
"boxes_ms": 502,
"total_ms": 1724
},
"image_quality": {
"status": "ok",
"normalised": true,
"ms": 41
}
}Read a cheque's MICR line
/v2/cheques/micrcheques.micrFinds and reads every MICR code line on a cheque (E-13B or CMC-7) and names its fields: the layout template for the layout, a national standard when one applies (Canada, India), and the US routing-number proof. The read and the photo are kept in the scan history.
Price: 0.02 credits per successful call.
Form fields (multipart)
imagefilerequiredThe cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.
formatstringThe MICR font.
autofinds it.autoe13bcmc7
Returns
The read ran; check status.
Show the ChequeResponse fieldsHide fields
idstringrequiredScan id,
chq_followed by 12 characters.objectstringrequiredAlways
cheque.created_atstring (date-time)requiredWhen it was created (ISO 8601, UTC).
sourcestringrequiredWhere the call came from, as shown in the console's logs.
apisdkplaygroundenvstringrequiredThe environment the read is recorded in: the credential's.
livetestprocessing_msintegerrequiredHow long the engine took, in milliseconds.
statusstringrequiredpartial: read, but something a caller relies on is missing or failed a check (issue_codesays what).unreadable: nothing to read.readpartialunreadableissue_codestringWhy a read is
partialorunreadable:no_micr_line,routing_checksum_failed,routing_prefix_invalid,layout_unrecognised,weak_characters,no_card,number_unreadable,luhn_failed,low_confidence.issuestringThe same reason in plain words, safe to show a person.
imageobjectrequiredShow 3 fieldsHide fields
widthintegerrequiredheightintegerrequiredurlstringrequiredThe stored photo, relative to the API base.
zones_detectedintegerrequiredHow many MICR lines were found.
zonesarray of objectsrequiredEvery MICR line found, strongest first.
Show 19 fieldsHide fields
indexintegerrequiredPosition among the lines found, strongest first.
textstringrequiredAs read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).
descriptionstringrequiredThe engine's label for the line, for example
E-13B.confidencesarray of numbersrequiredEvery confidence the engine returned: zone-level values, then one per character.
klassintegerThe engine's class for the line.
skewnumberrequiredSkew of the line, in degrees.
warpedBoxarray of numbersThe engine's own box, verbatim (its spelling).
fontstringrequiredMICR font.
E-13BCMC-7printedstringrequiredThe line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.
confidencenumberrequiredSummary confidence for the line, 0 to 100.
char_confidencesarray of numbersrequiredOne confidence (0 to 100) per character of
text.min_char_confidencenumberThe weakest character's confidence.
boxarray of numbersrequiredFour corners x1,y1 … x4,y4, rounded, in image pixels.
segmentsarray of stringsrequiredThe groups the control symbols delimit.
fieldsarray of objectsFields named as the reader names them; empty when no template fits.
field_listarray of objectsEvery field the font can carry, empty where this line did not yield it.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
Show 2 fieldsHide fields
namestringrequiredvaluestringrequired
templatestringWhich fixed template named the line.
us_businessus_personalbr_cmc7fr_cmc7standardobjectAn official national layout (whole-line match only).
Show 5 fieldsHide fields
idstringrequiredThe standard, for example
ca_cpa_006orin_cts_2010.namestringrequiredThe standard's name, for example
Canada (Payments Canada Standard 006).countrystringrequiredISO 3166-1 alpha-2.
fieldsarray of objectsrequiredThe fields this line yielded.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
field_listarray of objectsEvery field of the standard, empty where the line did not yield it.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
routingobjectThe ABA proof behind a US routing number.
Show 8 fieldsHide fields
validbooleanrequiredTrue only when the checksum and the prefix both hold.
checksum_passbooleanrequiredThe ABA check digit holds.
check_digitintegerThe ninth digit as read. Absent when the number is not nine digits.
expected_check_digitintegerThe digit the first eight imply. An audit value, not a correction.
prefix_validbooleanrequiredThe first two digits are an assigned Federal Reserve routing symbol.
institution_typestringInstitution type from the routing number's prefix.
bankthriftelectronicgovernmenttravellers_chequefederal_reserve_districtstringThe Federal Reserve district, when valid.
reasonstringWhy it is not valid.
not_nine_digitscheck_digit_mismatchprefix_not_assigned
microbjectOne MICR line, exactly as the engine returns it, plus values derived from its text.
Show 19 fieldsHide fields
indexintegerrequiredPosition among the lines found, strongest first.
textstringrequiredAs read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).
descriptionstringrequiredThe engine's label for the line, for example
E-13B.confidencesarray of numbersrequiredEvery confidence the engine returned: zone-level values, then one per character.
klassintegerThe engine's class for the line.
skewnumberrequiredSkew of the line, in degrees.
warpedBoxarray of numbersThe engine's own box, verbatim (its spelling).
fontstringrequiredMICR font.
E-13BCMC-7printedstringrequiredThe line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.
confidencenumberrequiredSummary confidence for the line, 0 to 100.
char_confidencesarray of numbersrequiredOne confidence (0 to 100) per character of
text.min_char_confidencenumberThe weakest character's confidence.
boxarray of numbersrequiredFour corners x1,y1 … x4,y4, rounded, in image pixels.
segmentsarray of stringsrequiredThe groups the control symbols delimit.
fieldsarray of objectsFields named as the reader names them; empty when no template fits.
field_listarray of objectsEvery field the font can carry, empty where this line did not yield it.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
Show 2 fieldsHide fields
namestringrequiredvaluestringrequired
templatestringWhich fixed template named the line.
us_businessus_personalbr_cmc7fr_cmc7standardobjectAn official national layout (whole-line match only).
Show 5 fieldsHide fields
idstringrequiredThe standard, for example
ca_cpa_006orin_cts_2010.namestringrequiredThe standard's name, for example
Canada (Payments Canada Standard 006).countrystringrequiredISO 3166-1 alpha-2.
fieldsarray of objectsrequiredThe fields this line yielded.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
field_listarray of objectsEvery field of the standard, empty where the line did not yield it.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
routingobjectThe ABA proof behind a US routing number.
Show 8 fieldsHide fields
validbooleanrequiredTrue only when the checksum and the prefix both hold.
checksum_passbooleanrequiredThe ABA check digit holds.
check_digitintegerThe ninth digit as read. Absent when the number is not nine digits.
expected_check_digitintegerThe digit the first eight imply. An audit value, not a correction.
prefix_validbooleanrequiredThe first two digits are an assigned Federal Reserve routing symbol.
institution_typestringInstitution type from the routing number's prefix.
bankthriftelectronicgovernmenttravellers_chequefederal_reserve_districtstringThe Federal Reserve district, when valid.
reasonstringWhy it is not valid.
not_nine_digitscheck_digit_mismatchprefix_not_assigned
qualityobjectrequiredCapture-quality signals.
Show 3 fieldsHide fields
rotationnumberrequiredPage rotation, degrees.
skewnumberPrimary line skew, degrees.
min_char_confidencenumberWeakest character.
countryobjectThe cheque's country and where it came from.
Show 4 fieldsHide fields
codestringrequiredISO 3166-1 alpha-2, upper case.
namestringrequiredCountry name.
flagstringrequiredFlag emoji.
sourcestringrequiredWhere the country came from.
bank_directorycheque_facemicr_line
read_onobjectPresent when only a resized copy named fields; boxes are mapped back to the original.
Show 4 fieldsHide fields
imagestringrequiredscalenumberrequiredwidthintegerrequiredheightintegerrequired
Errors
400A field is missing or not valid.401No API key, or the key is not valid, expired or revoked.402Not enough credits for this call (insufficient_credits), or the key reached its spend cap. Nothing was charged.403The key may not call this API (permission, environment or IP allow-list). Nothing was charged.413The image or the request is too large.415The file type is not accepted (JPG, PNG or BMP).429Too many requests for this key: waitRetry-Afterseconds. Nothing was charged.5XXThe check could not run. Nothing was charged.
curl -X POST https://verisec.dev/v2/cheques/micr \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-F image=@cheque-us.jpg \
-F format=auto{
"id": "chq_T61gcnyxU8lf",
"object": "cheque",
"created_at": "2026-10-16T08:46:10.000Z",
"source": "api",
"env": "test",
"processing_ms": 566,
"image": {
"width": 1600,
"height": 732,
"url": "/v2/cheques/chq_T61gcnyxU8lf/image"
},
"status": "read",
"zones_detected": 1,
"zones": [
{
"index": 0,
"text": "A123456780A4821093755C1042",
"description": "E-13B",
"confidences": [
94.82305,
100,
99.47161,
95.96349,
95.77407,
94.82305,
97.75157,
98.45739,
96.92823,
97.80382,
97.50368,
95.37349,
99.95,
95.59242,
98.01218,
99.41121,
98.00035,
96.21138,
97.68338,
96.84993,
96.21704,
94.88116,
96.10776,
97.40173,
98.11028,
96.11909,
98.38227,
99.41477
],
"klass": 1,
"skew": 0,
"warpedBox": [
233.7,
641.6,
1170,
642,
1169.9,
685.3,
233.8,
685.1
],
"font": "E-13B",
"printed": "⑆123456780⑆4821093755⑈1042",
"confidence": 94.8,
"char_confidences": [
99.5,
96,
95.8,
94.8,
97.8,
98.5,
96.9,
97.8,
97.5,
95.4,
100,
95.6,
98,
99.4,
98,
96.2,
97.7,
96.8,
96.2,
94.9,
96.1,
97.4,
98.1,
96.1,
98.4,
99.4
],
"min_char_confidence": 94.8,
"box": [
234,
642,
1170,
642,
1170,
685,
234,
685
],
"segments": [
"123456780",
"4821093755",
"1042"
],
"fields": [
{
"Routing": "123456780"
},
{
"Account": "4821093755"
},
{
"Check number": "1042"
}
],
"field_list": [
{
"name": "Auxiliary On-Us",
"value": ""
},
{
"name": "EPC",
"value": ""
},
{
"name": "Routing",
"value": "123456780"
},
{
"name": "Account",
"value": "4821093755"
},
{
"name": "Check number",
"value": "1042"
},
{
"name": "Amount",
"value": ""
}
],
"template": "us_personal",
"routing": {
"valid": true,
"checksum_pass": true,
"check_digit": 0,
"expected_check_digit": 0,
"prefix_valid": true,
"institution_type": "bank",
"federal_reserve_district": "San Francisco"
}
}
],
"micr": {
"index": 0,
"text": "A123456780A4821093755C1042",
"description": "E-13B",
"confidences": [
94.82305,
100,
99.47161,
95.96349,
95.77407,
94.82305,
97.75157,
98.45739,
96.92823,
97.80382,
97.50368,
95.37349,
99.95,
95.59242,
98.01218,
99.41121,
98.00035,
96.21138,
97.68338,
96.84993,
96.21704,
94.88116,
96.10776,
97.40173,
98.11028,
96.11909,
98.38227,
99.41477
],
"klass": 1,
"skew": 0,
"warpedBox": [
233.7,
641.6,
1170,
642,
1169.9,
685.3,
233.8,
685.1
],
"font": "E-13B",
"printed": "⑆123456780⑆4821093755⑈1042",
"confidence": 94.8,
"char_confidences": [
99.5,
96,
95.8,
94.8,
97.8,
98.5,
96.9,
97.8,
97.5,
95.4,
100,
95.6,
98,
99.4,
98,
96.2,
97.7,
96.8,
96.2,
94.9,
96.1,
97.4,
98.1,
96.1,
98.4,
99.4
],
"min_char_confidence": 94.8,
"box": [
234,
642,
1170,
642,
1170,
685,
234,
685
],
"segments": [
"123456780",
"4821093755",
"1042"
],
"fields": [
{
"Routing": "123456780"
},
{
"Account": "4821093755"
},
{
"Check number": "1042"
}
],
"field_list": [
{
"name": "Auxiliary On-Us",
"value": ""
},
{
"name": "EPC",
"value": ""
},
{
"name": "Routing",
"value": "123456780"
},
{
"name": "Account",
"value": "4821093755"
},
{
"name": "Check number",
"value": "1042"
},
{
"name": "Amount",
"value": ""
}
],
"template": "us_personal",
"routing": {
"valid": true,
"checksum_pass": true,
"check_digit": 0,
"expected_check_digit": 0,
"prefix_valid": true,
"institution_type": "bank",
"federal_reserve_district": "San Francisco"
}
},
"quality": {
"rotation": 0,
"skew": 0,
"min_char_confidence": 94.8
}
}Read just the MICR line
/v2/cheques/micr-linecheques.micrLineReads the strongest MICR line with the same engine and naming as the full reads and returns a small response: the line, its named fields, its layout and confidence. Nothing is stored.
Price: 0.02 credits per successful call.
Form fields (multipart)
imagefilerequiredThe cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.
formatstringThe MICR font.
autofinds it.autoe13bcmc7
Returns
The read ran; check status.
Show the MicrLine fieldsHide fields
objectstringrequiredAlways
micr_line.statusstringrequiredpartial: read, but something a caller relies on is missing or failed a check (issue_codesays what).unreadable: nothing to read.readpartialunreadableissue_codestringWhy a read is
partialorunreadable:no_micr_line,routing_checksum_failed,routing_prefix_invalid,layout_unrecognised,weak_characters,no_card,number_unreadable,luhn_failed,low_confidence.issuestringPlain-words reason, when not
read.lines_foundintegerrequiredHow many MICR lines the photo has.
processing_msintegerrequiredHow long the engine took, in milliseconds.
lineobjectThe strongest line.
Show 6 fieldsHide fields
textstringrequiredprintedstringrequiredfontstringrequiredE-13BCMC-7confidencenumberrequiredmin_char_confidencenumberboxarray of numbersrequiredFour corners x1,y1 … x4,y4, in image pixels.
fieldsarray of objectsEach field by name; an empty value means this line does not carry it.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
Show 2 fieldsHide fields
namestringrequiredvaluestringrequired
templatestringWhich fixed template named the line.
us_businessus_personalbr_cmc7fr_cmc7standardobjectAn official national layout (whole-line match only).
Show 5 fieldsHide fields
idstringrequiredThe standard, for example
ca_cpa_006orin_cts_2010.namestringrequiredThe standard's name, for example
Canada (Payments Canada Standard 006).countrystringrequiredISO 3166-1 alpha-2.
fieldsarray of objectsrequiredThe fields this line yielded.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
Show 2 fieldsHide fields
namestringrequiredvaluestringrequired
field_listarray of objectsEvery field of the standard, empty where the line did not yield it.
Show 3 fieldsHide fields
namestringrequiredField name, for example
Routing.valuestringrequiredThe value; empty when this line does not carry the field.
partsarray of objectsSub-fields, when the field has them.
Show 2 fieldsHide fields
namestringrequiredvaluestringrequired
routingobjectThe ABA proof behind a US routing number.
Show 8 fieldsHide fields
validbooleanrequiredTrue only when the checksum and the prefix both hold.
checksum_passbooleanrequiredThe ABA check digit holds.
check_digitintegerThe ninth digit as read. Absent when the number is not nine digits.
expected_check_digitintegerThe digit the first eight imply. An audit value, not a correction.
prefix_validbooleanrequiredThe first two digits are an assigned Federal Reserve routing symbol.
institution_typestringInstitution type from the routing number's prefix.
bankthriftelectronicgovernmenttravellers_chequefederal_reserve_districtstringThe Federal Reserve district, when valid.
reasonstringWhy it is not valid.
not_nine_digitscheck_digit_mismatchprefix_not_assigned
Errors
400A field is missing or not valid.401No API key, or the key is not valid, expired or revoked.402Not enough credits for this call (insufficient_credits), or the key reached its spend cap. Nothing was charged.403The key may not call this API (permission, environment or IP allow-list). Nothing was charged.413The image or the request is too large.415The file type is not accepted (JPG, PNG or BMP).429Too many requests for this key: waitRetry-Afterseconds. Nothing was charged.5XXThe check could not run. Nothing was charged.
curl -X POST https://verisec.dev/v2/cheques/micr-line \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-F image=@cheque-us.jpg \
-F format=auto{
"object": "micr_line",
"status": "read",
"lines_found": 1,
"processing_ms": 566,
"line": {
"text": "A123456780A4821093755C1042",
"printed": "⑆123456780⑆4821093755⑈1042",
"font": "E-13B",
"confidence": 94.8,
"min_char_confidence": 94.8,
"box": [
234,
642,
1170,
642,
1170,
685,
234,
685
]
},
"fields": [
{
"name": "Auxiliary On-Us",
"value": ""
},
{
"name": "EPC",
"value": ""
},
{
"name": "Routing",
"value": "123456780"
},
{
"name": "Account",
"value": "4821093755"
},
{
"name": "Check number",
"value": "1042"
},
{
"name": "Amount",
"value": ""
}
],
"template": "us_personal",
"routing": {
"valid": true,
"checksum_pass": true,
"check_digit": 0,
"expected_check_digit": 0,
"prefix_valid": true,
"institution_type": "bank",
"federal_reserve_district": "San Francisco"
}
}Read a cheque's amount
/v2/cheques/amountcheques.amountReads the amount in figures and in words, turns it into a number, says whether the two agree, and resolves the currency. Nothing is stored.
Price: 0.02 credits per successful call.
Form fields (multipart)
imagefilerequiredThe cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.
Returns
The face was read.
Show the ChequeAmount fieldsHide fields
objectstringrequiredAlways
cheque_amount.figuresstringThe amount box, as written.
wordsstringThe amount in words, as written.
numericnumberThe amount as a number.
agreementbooleanWords and figures say the same amount.
currencyobjectShow 3 fieldsHide fields
codestringrequiredISO 4217.
namestringsymbolstring
processing_msintegerrequiredHow long the engine took, in milliseconds.
Errors
400A field is missing or not valid.401No API key, or the key is not valid, expired or revoked.402Not enough credits for this call (insufficient_credits), or the key reached its spend cap. Nothing was charged.403The key may not call this API (permission, environment or IP allow-list). Nothing was charged.413The image or the request is too large.415The file type is not accepted (JPG, PNG or BMP).429Too many requests for this key: waitRetry-Afterseconds. Nothing was charged.5XXThe check could not run. Nothing was charged.
curl -X POST https://verisec.dev/v2/cheques/amount \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-F image=@cheque-us.jpg{
"object": "cheque_amount",
"figures": "2,450.00",
"words": "Two thousand four hundred fifty and 00/100",
"numeric": 2450,
"agreement": true,
"currency": {
"code": "USD",
"name": "US Dollar",
"symbol": "$"
},
"processing_ms": 1186
}Read a cheque's date
/v2/cheques/datecheques.dateReads the cheque's date as written and as YYYY-MM-DD, with its age in days (negative when post-dated). Nothing is stored.
Price: 0.02 credits per successful call.
Form fields (multipart)
imagefilerequiredThe cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.
Returns
The face was read.
Show the ChequeDate fieldsHide fields
objectstringrequiredAlways
cheque_date.rawstringThe date as written.
isostring (date)The same date as YYYY-MM-DD.
age_daysintegerDays since the date; negative when it is in the future.
post_datedbooleanTrue when the date is in the future.
processing_msintegerrequiredHow long the engine took, in milliseconds.
Errors
400A field is missing or not valid.401No API key, or the key is not valid, expired or revoked.402Not enough credits for this call (insufficient_credits), or the key reached its spend cap. Nothing was charged.403The key may not call this API (permission, environment or IP allow-list). Nothing was charged.413The image or the request is too large.415The file type is not accepted (JPG, PNG or BMP).429Too many requests for this key: waitRetry-Afterseconds. Nothing was charged.5XXThe check could not run. Nothing was charged.
curl -X POST https://verisec.dev/v2/cheques/date \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-F image=@cheque-us.jpg{
"object": "cheque_date",
"raw": "October 14, 2026",
"iso": "2026-10-14",
"age_days": 2,
"post_dated": false,
"processing_ms": 1186
}Read a cheque's payee and drawer
/v2/cheques/partiescheques.partiesReads who the cheque is paid to (the name after Pay) and whose account pays it (the account holder printed on the cheque). Nothing is stored.
Price: 0.02 credits per successful call.
Form fields (multipart)
imagefilerequiredThe cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.
Returns
The face was read.
Show the ChequeParties fieldsHide fields
objectstringrequiredAlways
cheque_parties.payeestringThe name the cheque is paid to.
drawerstringThe account holder printed on the cheque.
processing_msintegerrequiredHow long the engine took, in milliseconds.
Errors
400A field is missing or not valid.401No API key, or the key is not valid, expired or revoked.402Not enough credits for this call (insufficient_credits), or the key reached its spend cap. Nothing was charged.403The key may not call this API (permission, environment or IP allow-list). Nothing was charged.413The image or the request is too large.415The file type is not accepted (JPG, PNG or BMP).429Too many requests for this key: waitRetry-Afterseconds. Nothing was charged.5XXThe check could not run. Nothing was charged.
curl -X POST https://verisec.dev/v2/cheques/parties \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-F image=@cheque-us.jpg{
"object": "cheque_parties",
"payee": "Keza Amani",
"drawer": "Northwind Logistics LLC",
"processing_ms": 1186
}Read a cheque's bank
/v2/cheques/bankcheques.bankReads the bank printed on the cheque and matches it in the directory of about 75,000 banks. A bank not in the directory is never forced onto another: bank is left out. Nothing is stored.
Price: 0.02 credits per successful call.
Form fields (multipart)
imagefilerequiredThe cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.
Returns
The face was read; bank is present when the directory has it.
Show the ChequeBank fieldsHide fields
objectstringrequiredAlways
cheque_bank.readobjectThe bank as printed on the cheque.
Show 4 fieldsHide fields
namestringbranchstringaddressstringcountrystring
bankobjectA bank from VeriSec's directory of about 75,000 banks.
Show 12 fieldsHide fields
profile_idstringrequiredThe bank's directory id.
namestringrequiredThe bank's name.
countrystringcountry_codestringISO 3166-1 alpha-2.
citystringaddressstringbicstringroutingstringparentstringstatusstringOnly when the record states it plainly.
activedissolvednulllogo_urlstringThe bank's logo, relative to the API base.
flag_urlstringThe country's flag (SVG), relative to the API base.
match_confidencenumberHow strong the match is, 0 to 1.
countryobjectShow 4 fieldsHide fields
codestringrequirednamestringrequiredflagstringflag_urlstring
processing_msintegerrequiredHow long the engine took, in milliseconds.
Errors
400A field is missing or not valid.401No API key, or the key is not valid, expired or revoked.402Not enough credits for this call (insufficient_credits), or the key reached its spend cap. Nothing was charged.403The key may not call this API (permission, environment or IP allow-list). Nothing was charged.413The image or the request is too large.415The file type is not accepted (JPG, PNG or BMP).429Too many requests for this key: waitRetry-Afterseconds. Nothing was charged.5XXThe check could not run. Nothing was charged.
curl -X POST https://verisec.dev/v2/cheques/bank \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-F image=@cheque-us.jpg{
"object": "cheque_bank",
"read": {
"name": "Harbor Point Bank",
"branch": "Portland, Oregon",
"country": "US"
},
"bank": {
"profile_id": "bank_404a7c517025f193fa",
"name": "Harbor Point Bank",
"country": "United States",
"country_code": "US",
"city": "Portland",
"address": "88 Harbor Point Plaza, Portland, OR 97209",
"bic": "HPBKUS6P",
"routing": "123456780",
"status": "active",
"logo_url": "/v2/banks/bank_404a7c517025f193fa/logo",
"flag_url": "/v2/flags/us.svg"
},
"match_confidence": 0.98,
"country": {
"code": "US",
"name": "United States",
"flag": "🇺🇸",
"flag_url": "/v2/flags/us.svg"
},
"processing_ms": 1186
}