← Back to blog

Extract Driver's License Data with Make.com: Dropbox to Notion

Watch Dropbox license scans, call Cryvis POST /v1/documents/driver-license with required ISO alpha-3 country, 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. This Make.com tutorial watches a Dropbox folder, sends each scan with an explicit country code, and upserts a Notion database row.

Passport twin (two-page multipart): Extract passport data. Multi-ID intake: Identity document processing.

Architecture

Dropbox /licenses/{COUNTRY}/scan.jpg
        |
        v
Make: Watch files
  derive country from folder name (IND, USA, ...)
        |
        v
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

Pass exactly one of:

CodeCountry
INDIndia
USAUnited States
VNMVietnam
GBRUnited Kingdom
THAThailand
IDNIndonesia

Anything else is rejected. Do not send US or IN — alpha-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 Make.

Step 2: Watch and download

Dropbox → Watch Files on /licenses (recursive if available) or one Watch per country folder.

Dropbox → Download a File for binary content.

Set variable country:

country = upper(first path segment under /licenses)
# e.g. /licenses/USA/jane.jpg -> USA

Filter: country is one of IND, USA, VNM, GBR, THA, IDN. Else move to /_failed.

Step 3: Cryvis Driver License API

HTTP → Make a request

SettingValue
URLhttps://api.cryvis.com/v1/documents/driver-license
MethodPOST
HeaderAuthorization: Bearer {{cryvis_api_key}}
BodyMultipart/form-data
PartRequiredValue
fileyesDownloaded binary
countryyesUSA / IND / …

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"
  }
}

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 a Database Item (or Update if you key on license number + country).

For multi-country Notion views, create filtered views per Country select — one database is enough.

Step 6: Router for country-specific Notion fills

Because Make mappings are static, use a Router after HTTP:

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

Each route still writes the common fields. Missing country-specific keys stay empty rather than inventing placeholders.

Step 7: Expiry view

Notion formula or Make Filter:

IF parseDate(expiry_date) < now
  Status = expired
ELSE IF parseDate(expiry_date) < addMonths(now; 3)
  Status = expiring_soon
ELSE
  Status = valid

Cryvis returns dates; your scenario owns compliance rules.

Step 8: File hygiene

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

Error handler should capture HTTP status. Classic mistake: omitting country → 400.

Testing matrix

CaseExpect
Clear USA DL in /USAstate, license_class populated
IND DL with country=USAPoor/wrong schema — always match folder to real issuing country
country=USRejected — use USA
Expired dateStatus expired via Make/Notion logic

Multipart field order and types

In Make’s HTTP module, add two multipart items:

#Field nameTypeValue
1countryTextUSA (or mapped variable)
2fileFileDropbox download binary

Order does not matter to Cryvis; both must be present. Sending country as a file part or file as text will fail validation.

India vs USA mapping example

USA route → Notion

state           = data.state
license_class   = data.license_class
restrictions    = data.restrictions
endorsements    = data.endorsements
height          = data.height
eye_color       = data.eye_color
sex             = data.sex

IND route → Notion (same common fields, different extras)

vehicle_classes           = data.vehicle_classes
blood_group               = data.blood_group
issuing_rto               = data.issuing_rto
father_name_or_guardian   = data.father_name_or_guardian

Keep one Notion database; leave unused country columns empty rather than maintaining six databases.

Credits

Driver's license extraction is 1 credit per PDF page or image. Double-sided PDFs cost per page — prefer a single clear image of the primary side unless your country schema needs both and you merge upstream.

Partner folder drops

If external partners upload into Dropbox without country subfolders, require a filename suffix:

jane_doe_USA.jpg
rahul_sharma_IND.pdf

Parse with Make substring / split to set country, then validate against the allowed six codes before HTTP.

CTA

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