← Back to blog

Extract Driver's License Data with Zapier: Dropbox to Notion

Watch Dropbox license scans, call Cryvis POST /v1/documents/driver-license with required ISO alpha-3 country via Custom Request, and sync fields into Notion.

Driver's license OCR is country-specific. Cryvis requires a multipart country field (ISO 3166-1 alpha-3) alongside file so the correct schema runs — India vs USA vs UK are not the same JSON shape. Omitting country or sending US / IN returns 400. This Zap watches a Dropbox folder, sends each scan with an explicit alpha-3 code, and upserts a Notion database row.

PAN twin (single file): Extract PAN card data. Multi-ID intake: Automate KYC. Hub: /blog/zapier.

Architecture

Dropbox /licenses/{COUNTRY}/scan.jpg
        |
        v
Zapier: New File in Folder
  derive country from folder name (IND, USA, ...)
        |
        v
Custom Request
  POST https://api.cryvis.com/v1/documents/driver-license
  -F file=@scan.jpg
  -F country=USA
  -H "Authorization: Bearer ..."
        |
        v
Notion database: Licenses

Supported countries (alpha-3 required)

Pass exactly one of:

CodeCountry
INDIndia
USAUnited States
VNMVietnam
GBRUnited Kingdom
THAThailand
IDNIndonesia

Anything else is rejected. Do not send US, IN, UK, or VNalpha-3 only.

Step 1: Dropbox layout

/licenses
  /USA
  /IND
  /GBR
  /VNM
  /THA
  /IDN
  /_failed
  /_done

Folder name = country parameter. This avoids a fragile manual mapping table inside Zapier.

Step 2: Watch and download

Dropbox → New File in Folder on each country folder (or one Zap per country if recursive watch is unavailable).

Ensure the step exposes file content / binary for Custom Request.

Formatter by Zapier → Text (or Code) to set country:

country = upper(folder name under /licenses)
# e.g. /licenses/USA/jane.jpg -> USA

Filter by Zapier: country (Text) Is in IND,USA,VNM,GBR,THA,IDN. Else Dropbox → Move File to /_failed and stop.

Step 3: Cryvis Driver License API

Webhooks by Zapier → Custom Request

SettingValue
MethodPOST
URLhttps://api.cryvis.com/v1/documents/driver-license
HeadersAuthorization: Bearer YOUR_API_KEY
Payload TypeForm / multipart
PartRequiredValue
fileyesDownloaded binary
countryyesUSA / IND / … (text field, not a file)

Both parts must be present. Sending country as a file part or file as text fails validation.

cURL (USA example):

curl -X POST https://api.cryvis.com/v1/documents/driver-license \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "country=USA" \
  -F "file=@drivers-license.jpg"

Docs: /docs/api/extractDriverLicense · /apis/driver-license.

Step 4: USA response example

Shared identity/license fields plus US-specific extras:

{
  "success": true,
  "data": {
    "full_name": "JANE DOE",
    "date_of_birth": "1990-05-20",
    "address": "123 Main St, Austin, TX 78701",
    "license_number": "D1234567",
    "issue_date": "2022-01-15",
    "expiry_date": "2030-05-20",
    "state": "TX",
    "license_class": "C",
    "restrictions": null,
    "endorsements": null,
    "sex": "F",
    "height": "5-06",
    "eye_color": "BRN"
  },
  "meta": {
    "request_id": "req_dl_01hxyz"
  }
}

Always map the common set:

  • full_name, date_of_birth, address
  • license_number, issue_date, expiry_date

Then map country-specific fields when present (null-safe):

CountryExtra fields (examples)
USAstate, license_class, restrictions, endorsements, height, eye_color, sex
INDvehicle_classes, blood_group, issuing_rto, father_name_or_guardian
GBRcategories, issuing_authority, sex, place_of_birth
VNMlicense_class, place_of_issue
THAlicense_type, national_id_number, blood_group, issuing_authority
IDNlicense_type, blood_group, height, place_of_birth, issuing_authority

Step 5: Notion database

Properties:

PropertyType
NameTitle ← full_name
CountrySelect ← country
License numberRich text
DOBDate
AddressRich text
IssueDate
ExpiryDate
State / RegionRich text (USA state, etc.)
ClassRich text
RestrictionsRich text
EndorsementsRich text
SexRich text
HeightRich text
Eye colorRich text
Dropbox pathURL
StatusSelect

Notion → Create Database Item (or Find + Update if you key on license number + country).

Step 6: Paths for country-specific Notion fills

Because Zapier field mappings are static per step, use Paths by Zapier after Custom Request:

Path USA -> map state, license_class, restrictions, endorsements, height, eye_color, sex
Path IND -> map vehicle_classes, blood_group, issuing_rto, father_name_or_guardian
Path GBR -> map categories, issuing_authority, sex, place_of_birth
...

Each path still writes the common fields. Missing country-specific keys stay empty rather than inventing placeholders. One Notion database is enough; leave unused country columns blank.

Step 7: Expiry, hygiene, and common failures

Set Notion Status from expiry_date (expired / expiring_soon / valid) with Formatter + Filter — Cryvis returns dates; your Zap owns the rules.

On success: Dropbox → Move File to /licenses/_done/{country}/. On error: /_failed/{country}/ and Status error.

MistakeResult
Omit country400
country=US / IN / UKRejected — use USA / IND / GBR
IND scan with country=USAWrong schema — match folder to issuing country

Flat partner drops: require a filename suffix (jane_doe_USA.jpg), parse with Formatter → Split Text, Filter against the six alpha-3 codes before Custom Request.

Credits: 1 per PDF page or image (Credits). Prefer a single clear primary-side image unless you merge sides upstream.

CTA

Parse driver's licenses with country-aware schemas: /apis/driver-license. Docs: /docs/api/extractDriverLicense. From Zapier, Custom Request POST file + country (IND/USA/VNM/GBR/THA/IDN — alpha-3 only) to https://api.cryvis.com/v1/documents/driver-license with Bearer auth, then sync data.* into Notion.