Financial · API reference

Cheques

Read a whole cheque

POST/v2/cheques/readcheques.read

Reads 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)

imagefilerequired

The cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.

formatstring

The MICR font. auto finds it.

autoe13bcmc7

Returns

The read ran; status says how much of the MICR line was read.

Show the ChequeDeepRead fields
idstringrequired

Scan id, chq_ followed by 12 characters.

objectstringrequired

Always cheque_read.

created_atstring (date-time)required

When it was created (ISO 8601, UTC).

sourcestringrequired

Where the call came from, as shown in the console's logs.

apisdkplayground
envstringrequired

The environment the read is recorded in: the credential's.

livetest
processing_msintegerrequired

The MICR engine's time alone, in milliseconds; timing has the rest.

imageobjectrequired
Show 3 fields
widthintegerrequired
heightintegerrequired
urlstringrequired

The stored photo, relative to the API base.

statusstringrequired

partial: read, but something a caller relies on is missing or failed a check (issue_code says what). unreadable: nothing to read.

readpartialunreadable
microbjectrequired

A cheque's MICR read (the MICR service's wire format).

Show 16 fields
idstringrequired

Scan id, chq_ followed by 12 characters.

objectstringrequired

Always cheque.

created_atstring (date-time)required

When it was created (ISO 8601, UTC).

sourcestringrequired

Where the call came from, as shown in the console's logs.

apisdkplayground
envstringrequired

The environment the read is recorded in: the credential's.

livetest
processing_msintegerrequired

How long the engine took, in milliseconds.

statusstringrequired

partial: read, but something a caller relies on is missing or failed a check (issue_code says what). unreadable: nothing to read.

readpartialunreadable
issue_codestring

Why a read is partial or unreadable: no_micr_line, routing_checksum_failed, routing_prefix_invalid, layout_unrecognised, weak_characters, no_card, number_unreadable, luhn_failed, low_confidence.

issuestring

The same reason in plain words, safe to show a person.

imageobjectrequired
Show 3 fields
widthintegerrequired
heightintegerrequired
urlstringrequired

The stored photo, relative to the API base.

zones_detectedintegerrequired

How many MICR lines were found.

zonesarray of objectsrequired

Every MICR line found, strongest first.

Show 19 fields
indexintegerrequired

Position among the lines found, strongest first.

textstringrequired

As read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).

descriptionstringrequired

The engine's label for the line, for example E-13B.

confidencesarray of numbersrequired

Every confidence the engine returned: zone-level values, then one per character.

klassinteger

The engine's class for the line.

skewnumberrequired

Skew of the line, in degrees.

warpedBoxarray of numbers

The engine's own box, verbatim (its spelling).

fontstringrequired

MICR font.

E-13BCMC-7
printedstringrequired

The line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.

confidencenumberrequired

Summary confidence for the line, 0 to 100.

char_confidencesarray of numbersrequired

One confidence (0 to 100) per character of text.

min_char_confidencenumber

The weakest character's confidence.

boxarray of numbersrequired

Four corners x1,y1 … x4,y4, rounded, in image pixels.

segmentsarray of stringsrequired

The groups the control symbols delimit.

fieldsarray of objects

Fields named as the reader names them; empty when no template fits.

field_listarray of objects

Every field the font can carry, empty where this line did not yield it.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

templatestring

Which fixed template named the line.

us_businessus_personalbr_cmc7fr_cmc7
standardobject

An official national layout (whole-line match only).

Show 5 fields
idstringrequired

The standard, for example ca_cpa_006 or in_cts_2010.

namestringrequired

The standard's name, for example Canada (Payments Canada Standard 006).

countrystringrequired

ISO 3166-1 alpha-2.

fieldsarray of objectsrequired

The fields this line yielded.

field_listarray of objects

Every field of the standard, empty where the line did not yield it.

routingobject

The ABA proof behind a US routing number.

Show 8 fields
validbooleanrequired

True only when the checksum and the prefix both hold.

checksum_passbooleanrequired

The ABA check digit holds.

check_digitinteger

The ninth digit as read. Absent when the number is not nine digits.

expected_check_digitinteger

The digit the first eight imply. An audit value, not a correction.

prefix_validbooleanrequired

The first two digits are an assigned Federal Reserve routing symbol.

institution_typestring

Institution type from the routing number's prefix.

bankthriftelectronicgovernmenttravellers_cheque
federal_reserve_districtstring

The Federal Reserve district, when valid.

reasonstring

Why it is not valid.

not_nine_digitscheck_digit_mismatchprefix_not_assigned
microbject

One MICR line, exactly as the engine returns it, plus values derived from its text.

Show 19 fields
indexintegerrequired

Position among the lines found, strongest first.

textstringrequired

As read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).

descriptionstringrequired

The engine's label for the line, for example E-13B.

confidencesarray of numbersrequired

Every confidence the engine returned: zone-level values, then one per character.

klassinteger

The engine's class for the line.

skewnumberrequired

Skew of the line, in degrees.

warpedBoxarray of numbers

The engine's own box, verbatim (its spelling).

fontstringrequired

MICR font.

E-13BCMC-7
printedstringrequired

The line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.

confidencenumberrequired

Summary confidence for the line, 0 to 100.

char_confidencesarray of numbersrequired

One confidence (0 to 100) per character of text.

min_char_confidencenumber

The weakest character's confidence.

boxarray of numbersrequired

Four corners x1,y1 … x4,y4, rounded, in image pixels.

segmentsarray of stringsrequired

The groups the control symbols delimit.

fieldsarray of objects

Fields named as the reader names them; empty when no template fits.

field_listarray of objects

Every field the font can carry, empty where this line did not yield it.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

templatestring

Which fixed template named the line.

us_businessus_personalbr_cmc7fr_cmc7
standardobject

An official national layout (whole-line match only).

Show 5 fields
idstringrequired

The standard, for example ca_cpa_006 or in_cts_2010.

namestringrequired

The standard's name, for example Canada (Payments Canada Standard 006).

countrystringrequired

ISO 3166-1 alpha-2.

fieldsarray of objectsrequired

The fields this line yielded.

field_listarray of objects

Every field of the standard, empty where the line did not yield it.

routingobject

The ABA proof behind a US routing number.

Show 8 fields
validbooleanrequired

True only when the checksum and the prefix both hold.

checksum_passbooleanrequired

The ABA check digit holds.

check_digitinteger

The ninth digit as read. Absent when the number is not nine digits.

expected_check_digitinteger

The digit the first eight imply. An audit value, not a correction.

prefix_validbooleanrequired

The first two digits are an assigned Federal Reserve routing symbol.

institution_typestring

Institution type from the routing number's prefix.

bankthriftelectronicgovernmenttravellers_cheque
federal_reserve_districtstring

The Federal Reserve district, when valid.

reasonstring

Why it is not valid.

not_nine_digitscheck_digit_mismatchprefix_not_assigned
qualityobjectrequired

Capture-quality signals.

Show 3 fields
rotationnumberrequired

Page rotation, degrees.

skewnumber

Primary line skew, degrees.

min_char_confidencenumber

Weakest character.

countryobject

The cheque's country and where it came from.

Show 4 fields
codestringrequired

ISO 3166-1 alpha-2, upper case.

namestringrequired

Country name.

flagstringrequired

Flag emoji.

sourcestringrequired

Where the country came from.

bank_directorycheque_facemicr_line
read_onobject

Present when only a resized copy named fields; boxes are mapped back to the original.

Show 4 fields
imagestringrequired
scalenumberrequired
widthintegerrequired
heightintegerrequired
visionobject

What is written on the cheque's face. The engine may add keys; they are kept.

Show 16 fields
fieldsarray of objects

Every field read, with its box.

Show 7 fields
source_idinteger

Index of the text box this field kept.

typestringrequired

Field type: payee, courtesy_amount, legal_amount, date, drawer, bank_name, memo, cheque_number, signature.

valuestring

The value, corrected.

confidencenumber

Confidence, 0 to 1.

verifiedboolean

Checked against the detector's text.

boxarray of array of numberss

The polygon (4 points) the field kept.

detector_textstring

What the text detector read there.

amountobject
Show 5 fields
figuresstring

The amount box, as written.

wordsstring

The amount in words, as written.

numericnumber
fractionstring
agreementboolean

Words and figures say the same amount.

currencyobject
Show 3 fields
codestring
symbolstring
sourcestring
dateobject
Show 5 fields
rawstring
isostring
formatstring
ambiguousboolean
post_datedboolean
payeestring

Who the cheque is paid to.

drawerobject

The account holder printed on the cheque.

Show 2 fields
namestring
addressstring
bankobject
Show 4 fields
namestring
countrystring
branchstring
addressstring
cheque_number_printedstring
account_number_printedstring
memostring
pay_wordingstring

The printed pay line.

crossingobject
Show 3 fields
presentboolean
typestring
textstring
signatureobject
Show 2 fields
presentboolean
countinteger
cheque_typestring
languagestring

ISO 639-1 language of the face.

region_guessstring

Country the face suggests, ISO 3166-1 alpha-2.

bankobject

A bank read on a document, matched in the directory.

Show 5 fields
readobjectrequired

What the document says.

Show 4 fields
namestring
countrystring
branchstring
addressstring
resolvedobject

A bank from VeriSec's directory of about 75,000 banks.

Show 12 fields
profile_idstringrequired

The bank's directory id.

namestringrequired

The bank's name.

countrystring
country_codestring

ISO 3166-1 alpha-2.

citystring
addressstring
bicstring
routingstring
parentstring
statusstring

Only when the record states it plainly.

activedissolvednull
logo_urlstring

The bank's logo, relative to the API base.

flag_urlstring

The country's flag (SVG), relative to the API base.

match_confidencenumberrequired

How strong the match is, 0 to 1.

name_matchnumber

How surely the two names name the same bank, 0 to 1.

alternativesarray of objectsrequired

Other close banks, best first.

Show 12 fields
profile_idstringrequired

The bank's directory id.

namestringrequired

The bank's name.

countrystring
country_codestring

ISO 3166-1 alpha-2.

citystring
addressstring
bicstring
routingstring
parentstring
statusstring

Only when the record states it plainly.

activedissolvednull
logo_urlstring

The bank's logo, relative to the API base.

flag_urlstring

The country's flag (SVG), relative to the API base.

currencyobject

A full currency record (ISO 4217 + CLDR).

Show 10 fields
codestring
numeric_codestring
namestring
symbolstring
local_symbolstring
minor_unitsstring
english_name_cldrstring
usd_per_unitnumber or string
units_per_usdnumber or string
wikidata_idstring
countryobject

The cheque's country and where it came from.

Show 4 fields
codestringrequired

ISO 3166-1 alpha-2, upper case.

namestringrequired

Country name.

flagstringrequired

Flag emoji.

sourcestringrequired

Where the country came from.

bank_directorycheque_facemicr_line
reader_errorstring

Set when the vision reader could not be reached; the MICR part still stands.

text_boxesobject

Every text box on the image, for drawing only (no text).

Show 3 fields
widthintegerrequired

Image width in pixels.

heightintegerrequired

Image height in pixels.

boxesarray of objectsrequired

Every text region found.

Show 2 fields
boxarray of numbersrequired

Four corners x1,y1 … x4,y4, in image pixels.

scorenumberrequired

Detection score, 0 to 1.

chequesarray of objects

Only when the photo holds more than one cheque. The fields above are cheque 1.

Show 7 fields
indexintegerrequired

1-based, from the top (left to right when side by side).

microbjectrequired
Show 8 fields
statusstringrequired

partial: read, but something a caller relies on is missing or failed a check (issue_code says what). unreadable: nothing to read.

readpartialunreadable
issue_codestring

Why a read is partial or unreadable: no_micr_line, routing_checksum_failed, routing_prefix_invalid, layout_unrecognised, weak_characters, no_card, number_unreadable, luhn_failed, low_confidence.

issuestring
zones_detectedinteger
zonesarray of objects
Show 19 fields
indexintegerrequired

Position among the lines found, strongest first.

textstringrequired

As read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).

descriptionstringrequired

The engine's label for the line, for example E-13B.

confidencesarray of numbersrequired

Every confidence the engine returned: zone-level values, then one per character.

klassinteger

The engine's class for the line.

skewnumberrequired

Skew of the line, in degrees.

warpedBoxarray of numbers

The engine's own box, verbatim (its spelling).

fontstringrequired

MICR font.

E-13BCMC-7
printedstringrequired

The line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.

confidencenumberrequired

Summary confidence for the line, 0 to 100.

char_confidencesarray of numbersrequired

One confidence (0 to 100) per character of text.

min_char_confidencenumber

The weakest character's confidence.

boxarray of numbersrequired

Four corners x1,y1 … x4,y4, rounded, in image pixels.

segmentsarray of stringsrequired

The groups the control symbols delimit.

fieldsarray of objects

Fields named as the reader names them; empty when no template fits.

field_listarray of objects

Every field the font can carry, empty where this line did not yield it.

templatestring

Which fixed template named the line.

us_businessus_personalbr_cmc7fr_cmc7
standardobject

An official national layout (whole-line match only).

routingobject

The ABA proof behind a US routing number.

microbject

One MICR line, exactly as the engine returns it, plus values derived from its text.

Show 19 fields
indexintegerrequired

Position among the lines found, strongest first.

textstringrequired

As read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).

descriptionstringrequired

The engine's label for the line, for example E-13B.

confidencesarray of numbersrequired

Every confidence the engine returned: zone-level values, then one per character.

klassinteger

The engine's class for the line.

skewnumberrequired

Skew of the line, in degrees.

warpedBoxarray of numbers

The engine's own box, verbatim (its spelling).

fontstringrequired

MICR font.

E-13BCMC-7
printedstringrequired

The line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.

confidencenumberrequired

Summary confidence for the line, 0 to 100.

char_confidencesarray of numbersrequired

One confidence (0 to 100) per character of text.

min_char_confidencenumber

The weakest character's confidence.

boxarray of numbersrequired

Four corners x1,y1 … x4,y4, rounded, in image pixels.

segmentsarray of stringsrequired

The groups the control symbols delimit.

fieldsarray of objects

Fields named as the reader names them; empty when no template fits.

field_listarray of objects

Every field the font can carry, empty where this line did not yield it.

templatestring

Which fixed template named the line.

us_businessus_personalbr_cmc7fr_cmc7
standardobject

An official national layout (whole-line match only).

routingobject

The ABA proof behind a US routing number.

countryobject

The cheque's country and where it came from.

Show 4 fields
codestringrequired

ISO 3166-1 alpha-2, upper case.

namestringrequired

Country name.

flagstringrequired

Flag emoji.

sourcestringrequired

Where the country came from.

bank_directorycheque_facemicr_line
qualityobject
Show 3 fields
rotationnumber
skewnumber
min_char_confidencenumber
visionobject or any
bankobject

A bank read on a document, matched in the directory.

Show 5 fields
readobjectrequired

What the document says.

Show 4 fields
namestring
countrystring
branchstring
addressstring
resolvedobject

A bank from VeriSec's directory of about 75,000 banks.

Show 12 fields
profile_idstringrequired

The bank's directory id.

namestringrequired

The bank's name.

countrystring
country_codestring

ISO 3166-1 alpha-2.

citystring
addressstring
bicstring
routingstring
parentstring
statusstring

Only when the record states it plainly.

activedissolvednull
logo_urlstring

The bank's logo, relative to the API base.

flag_urlstring

The country's flag (SVG), relative to the API base.

match_confidencenumberrequired

How strong the match is, 0 to 1.

name_matchnumber

How surely the two names name the same bank, 0 to 1.

alternativesarray of objectsrequired

Other close banks, best first.

Show 12 fields
profile_idstringrequired

The bank's directory id.

namestringrequired

The bank's name.

countrystring
country_codestring

ISO 3166-1 alpha-2.

citystring
addressstring
bicstring
routingstring
parentstring
statusstring

Only when the record states it plainly.

activedissolvednull
logo_urlstring

The bank's logo, relative to the API base.

flag_urlstring

The country's flag (SVG), relative to the API base.

countryobject or any
currencyobject or any
reader_errorstring
timingobject

Where the time went, in milliseconds.

Show 4 fields
micr_msinteger
model_msinteger
boxes_msinteger
total_msinteger
image_qualityobject

Photo quality from the check before the read. It never blocks the read, only warns.

Show 3 fields
statusstringrequired
okdocument_not_foundtoo_farblurryglareunreadable
normalisedboolean
msinteger

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: wait Retry-After seconds. Nothing was charged.
  • 5XXThe check could not run. Nothing was charged.
Request
curl -X POST https://verisec.dev/v2/cheques/read \
  -H "Authorization: Bearer $VERISEC_API_KEY" \
  -F image=@cheque-us.jpg \
  -F format=auto
Response · 200
{
  "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

POST/v2/cheques/micrcheques.micr

Finds 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)

imagefilerequired

The cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.

formatstring

The MICR font. auto finds it.

autoe13bcmc7

Returns

The read ran; check status.

Show the ChequeResponse fields
idstringrequired

Scan id, chq_ followed by 12 characters.

objectstringrequired

Always cheque.

created_atstring (date-time)required

When it was created (ISO 8601, UTC).

sourcestringrequired

Where the call came from, as shown in the console's logs.

apisdkplayground
envstringrequired

The environment the read is recorded in: the credential's.

livetest
processing_msintegerrequired

How long the engine took, in milliseconds.

statusstringrequired

partial: read, but something a caller relies on is missing or failed a check (issue_code says what). unreadable: nothing to read.

readpartialunreadable
issue_codestring

Why a read is partial or unreadable: no_micr_line, routing_checksum_failed, routing_prefix_invalid, layout_unrecognised, weak_characters, no_card, number_unreadable, luhn_failed, low_confidence.

issuestring

The same reason in plain words, safe to show a person.

imageobjectrequired
Show 3 fields
widthintegerrequired
heightintegerrequired
urlstringrequired

The stored photo, relative to the API base.

zones_detectedintegerrequired

How many MICR lines were found.

zonesarray of objectsrequired

Every MICR line found, strongest first.

Show 19 fields
indexintegerrequired

Position among the lines found, strongest first.

textstringrequired

As read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).

descriptionstringrequired

The engine's label for the line, for example E-13B.

confidencesarray of numbersrequired

Every confidence the engine returned: zone-level values, then one per character.

klassinteger

The engine's class for the line.

skewnumberrequired

Skew of the line, in degrees.

warpedBoxarray of numbers

The engine's own box, verbatim (its spelling).

fontstringrequired

MICR font.

E-13BCMC-7
printedstringrequired

The line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.

confidencenumberrequired

Summary confidence for the line, 0 to 100.

char_confidencesarray of numbersrequired

One confidence (0 to 100) per character of text.

min_char_confidencenumber

The weakest character's confidence.

boxarray of numbersrequired

Four corners x1,y1 … x4,y4, rounded, in image pixels.

segmentsarray of stringsrequired

The groups the control symbols delimit.

fieldsarray of objects

Fields named as the reader names them; empty when no template fits.

field_listarray of objects

Every field the font can carry, empty where this line did not yield it.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

Show 2 fields
namestringrequired
valuestringrequired
templatestring

Which fixed template named the line.

us_businessus_personalbr_cmc7fr_cmc7
standardobject

An official national layout (whole-line match only).

Show 5 fields
idstringrequired

The standard, for example ca_cpa_006 or in_cts_2010.

namestringrequired

The standard's name, for example Canada (Payments Canada Standard 006).

countrystringrequired

ISO 3166-1 alpha-2.

fieldsarray of objectsrequired

The fields this line yielded.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

field_listarray of objects

Every field of the standard, empty where the line did not yield it.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

routingobject

The ABA proof behind a US routing number.

Show 8 fields
validbooleanrequired

True only when the checksum and the prefix both hold.

checksum_passbooleanrequired

The ABA check digit holds.

check_digitinteger

The ninth digit as read. Absent when the number is not nine digits.

expected_check_digitinteger

The digit the first eight imply. An audit value, not a correction.

prefix_validbooleanrequired

The first two digits are an assigned Federal Reserve routing symbol.

institution_typestring

Institution type from the routing number's prefix.

bankthriftelectronicgovernmenttravellers_cheque
federal_reserve_districtstring

The Federal Reserve district, when valid.

reasonstring

Why it is not valid.

not_nine_digitscheck_digit_mismatchprefix_not_assigned
microbject

One MICR line, exactly as the engine returns it, plus values derived from its text.

Show 19 fields
indexintegerrequired

Position among the lines found, strongest first.

textstringrequired

As read, with the control symbols as letters (E-13B A-D, CMC-7 F-J).

descriptionstringrequired

The engine's label for the line, for example E-13B.

confidencesarray of numbersrequired

Every confidence the engine returned: zone-level values, then one per character.

klassinteger

The engine's class for the line.

skewnumberrequired

Skew of the line, in degrees.

warpedBoxarray of numbers

The engine's own box, verbatim (its spelling).

fontstringrequired

MICR font.

E-13BCMC-7
printedstringrequired

The line with the printed E-13B glyphs (⑆ ⑇ ⑈ ⑉), CMC-7 symbols as bars.

confidencenumberrequired

Summary confidence for the line, 0 to 100.

char_confidencesarray of numbersrequired

One confidence (0 to 100) per character of text.

min_char_confidencenumber

The weakest character's confidence.

boxarray of numbersrequired

Four corners x1,y1 … x4,y4, rounded, in image pixels.

segmentsarray of stringsrequired

The groups the control symbols delimit.

fieldsarray of objects

Fields named as the reader names them; empty when no template fits.

field_listarray of objects

Every field the font can carry, empty where this line did not yield it.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

Show 2 fields
namestringrequired
valuestringrequired
templatestring

Which fixed template named the line.

us_businessus_personalbr_cmc7fr_cmc7
standardobject

An official national layout (whole-line match only).

Show 5 fields
idstringrequired

The standard, for example ca_cpa_006 or in_cts_2010.

namestringrequired

The standard's name, for example Canada (Payments Canada Standard 006).

countrystringrequired

ISO 3166-1 alpha-2.

fieldsarray of objectsrequired

The fields this line yielded.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

field_listarray of objects

Every field of the standard, empty where the line did not yield it.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

routingobject

The ABA proof behind a US routing number.

Show 8 fields
validbooleanrequired

True only when the checksum and the prefix both hold.

checksum_passbooleanrequired

The ABA check digit holds.

check_digitinteger

The ninth digit as read. Absent when the number is not nine digits.

expected_check_digitinteger

The digit the first eight imply. An audit value, not a correction.

prefix_validbooleanrequired

The first two digits are an assigned Federal Reserve routing symbol.

institution_typestring

Institution type from the routing number's prefix.

bankthriftelectronicgovernmenttravellers_cheque
federal_reserve_districtstring

The Federal Reserve district, when valid.

reasonstring

Why it is not valid.

not_nine_digitscheck_digit_mismatchprefix_not_assigned
qualityobjectrequired

Capture-quality signals.

Show 3 fields
rotationnumberrequired

Page rotation, degrees.

skewnumber

Primary line skew, degrees.

min_char_confidencenumber

Weakest character.

countryobject

The cheque's country and where it came from.

Show 4 fields
codestringrequired

ISO 3166-1 alpha-2, upper case.

namestringrequired

Country name.

flagstringrequired

Flag emoji.

sourcestringrequired

Where the country came from.

bank_directorycheque_facemicr_line
read_onobject

Present when only a resized copy named fields; boxes are mapped back to the original.

Show 4 fields
imagestringrequired
scalenumberrequired
widthintegerrequired
heightintegerrequired

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: wait Retry-After seconds. Nothing was charged.
  • 5XXThe check could not run. Nothing was charged.
Request
curl -X POST https://verisec.dev/v2/cheques/micr \
  -H "Authorization: Bearer $VERISEC_API_KEY" \
  -F image=@cheque-us.jpg \
  -F format=auto
Response · 200
{
  "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

POST/v2/cheques/micr-linecheques.micrLine

Reads 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)

imagefilerequired

The cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.

formatstring

The MICR font. auto finds it.

autoe13bcmc7

Returns

The read ran; check status.

Show the MicrLine fields
objectstringrequired

Always micr_line.

statusstringrequired

partial: read, but something a caller relies on is missing or failed a check (issue_code says what). unreadable: nothing to read.

readpartialunreadable
issue_codestring

Why a read is partial or unreadable: no_micr_line, routing_checksum_failed, routing_prefix_invalid, layout_unrecognised, weak_characters, no_card, number_unreadable, luhn_failed, low_confidence.

issuestring

Plain-words reason, when not read.

lines_foundintegerrequired

How many MICR lines the photo has.

processing_msintegerrequired

How long the engine took, in milliseconds.

lineobject

The strongest line.

Show 6 fields
textstringrequired
printedstringrequired
fontstringrequired
E-13BCMC-7
confidencenumberrequired
min_char_confidencenumber
boxarray of numbersrequired

Four corners x1,y1 … x4,y4, in image pixels.

fieldsarray of objects

Each field by name; an empty value means this line does not carry it.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

Show 2 fields
namestringrequired
valuestringrequired
templatestring

Which fixed template named the line.

us_businessus_personalbr_cmc7fr_cmc7
standardobject

An official national layout (whole-line match only).

Show 5 fields
idstringrequired

The standard, for example ca_cpa_006 or in_cts_2010.

namestringrequired

The standard's name, for example Canada (Payments Canada Standard 006).

countrystringrequired

ISO 3166-1 alpha-2.

fieldsarray of objectsrequired

The fields this line yielded.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

Show 2 fields
namestringrequired
valuestringrequired
field_listarray of objects

Every field of the standard, empty where the line did not yield it.

Show 3 fields
namestringrequired

Field name, for example Routing.

valuestringrequired

The value; empty when this line does not carry the field.

partsarray of objects

Sub-fields, when the field has them.

Show 2 fields
namestringrequired
valuestringrequired
routingobject

The ABA proof behind a US routing number.

Show 8 fields
validbooleanrequired

True only when the checksum and the prefix both hold.

checksum_passbooleanrequired

The ABA check digit holds.

check_digitinteger

The ninth digit as read. Absent when the number is not nine digits.

expected_check_digitinteger

The digit the first eight imply. An audit value, not a correction.

prefix_validbooleanrequired

The first two digits are an assigned Federal Reserve routing symbol.

institution_typestring

Institution type from the routing number's prefix.

bankthriftelectronicgovernmenttravellers_cheque
federal_reserve_districtstring

The Federal Reserve district, when valid.

reasonstring

Why 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: wait Retry-After seconds. Nothing was charged.
  • 5XXThe check could not run. Nothing was charged.
Request
curl -X POST https://verisec.dev/v2/cheques/micr-line \
  -H "Authorization: Bearer $VERISEC_API_KEY" \
  -F image=@cheque-us.jpg \
  -F format=auto
Response · 200
{
  "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

POST/v2/cheques/amountcheques.amount

Reads 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)

imagefilerequired

The cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.

Returns

The face was read.

Show the ChequeAmount fields
objectstringrequired

Always cheque_amount.

figuresstring

The amount box, as written.

wordsstring

The amount in words, as written.

numericnumber

The amount as a number.

agreementboolean

Words and figures say the same amount.

currencyobject
Show 3 fields
codestringrequired

ISO 4217.

namestring
symbolstring
processing_msintegerrequired

How 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: wait Retry-After seconds. Nothing was charged.
  • 5XXThe check could not run. Nothing was charged.
Request
curl -X POST https://verisec.dev/v2/cheques/amount \
  -H "Authorization: Bearer $VERISEC_API_KEY" \
  -F image=@cheque-us.jpg
Response · 200
{
  "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

POST/v2/cheques/datecheques.date

Reads 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)

imagefilerequired

The cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.

Returns

The face was read.

Show the ChequeDate fields
objectstringrequired

Always cheque_date.

rawstring

The date as written.

isostring (date)

The same date as YYYY-MM-DD.

age_daysinteger

Days since the date; negative when it is in the future.

post_datedboolean

True when the date is in the future.

processing_msintegerrequired

How 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: wait Retry-After seconds. Nothing was charged.
  • 5XXThe check could not run. Nothing was charged.
Request
curl -X POST https://verisec.dev/v2/cheques/date \
  -H "Authorization: Bearer $VERISEC_API_KEY" \
  -F image=@cheque-us.jpg
Response · 200
{
  "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

POST/v2/cheques/partiescheques.parties

Reads 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)

imagefilerequired

The cheque photo: JPG, PNG or BMP, up to 10 MB. Read exactly as uploaded, never resized.

Returns

The face was read.

Show the ChequeParties fields
objectstringrequired

Always cheque_parties.

payeestring

The name the cheque is paid to.

drawerstring

The account holder printed on the cheque.

processing_msintegerrequired

How 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: wait Retry-After seconds. Nothing was charged.
  • 5XXThe check could not run. Nothing was charged.
Request
curl -X POST https://verisec.dev/v2/cheques/parties \
  -H "Authorization: Bearer $VERISEC_API_KEY" \
  -F image=@cheque-us.jpg
Response · 200
{
  "object": "cheque_parties",
  "payee": "Keza Amani",
  "drawer": "Northwind Logistics LLC",
  "processing_ms": 1186
}

Read a cheque's bank

POST/v2/cheques/bankcheques.bank

Reads 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)

imagefilerequired

The 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 fields
objectstringrequired

Always cheque_bank.

readobject

The bank as printed on the cheque.

Show 4 fields
namestring
branchstring
addressstring
countrystring
bankobject

A bank from VeriSec's directory of about 75,000 banks.

Show 12 fields
profile_idstringrequired

The bank's directory id.

namestringrequired

The bank's name.

countrystring
country_codestring

ISO 3166-1 alpha-2.

citystring
addressstring
bicstring
routingstring
parentstring
statusstring

Only when the record states it plainly.

activedissolvednull
logo_urlstring

The bank's logo, relative to the API base.

flag_urlstring

The country's flag (SVG), relative to the API base.

match_confidencenumber

How strong the match is, 0 to 1.

countryobject
Show 4 fields
codestringrequired
namestringrequired
flagstring
flag_urlstring
processing_msintegerrequired

How 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: wait Retry-After seconds. Nothing was charged.
  • 5XXThe check could not run. Nothing was charged.
Request
curl -X POST https://verisec.dev/v2/cheques/bank \
  -H "Authorization: Bearer $VERISEC_API_KEY" \
  -F image=@cheque-us.jpg
Response · 200
{
  "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
}