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: LicensesSupported countries
Pass exactly one of:
| Code | Country |
|---|---|
IND | India |
USA | United States |
VNM | Vietnam |
GBR | United Kingdom |
THA | Thailand |
IDN | Indonesia |
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
/_doneFolder 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 -> USAFilter: country is one of IND, USA, VNM, GBR, THA, IDN. Else move to /_failed.
Step 3: Cryvis Driver License API
HTTP → Make a request
| Setting | Value |
|---|---|
| URL | https://api.cryvis.com/v1/documents/driver-license |
| Method | POST |
| Header | Authorization: Bearer {{cryvis_api_key}} |
| Body | Multipart/form-data |
| Part | Required | Value |
|---|---|---|
file | yes | Downloaded binary |
country | yes | USA / 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,addresslicense_number,issue_date,expiry_date
Then map country-specific fields when present (null-safe):
| Country | Extra fields (examples) |
|---|---|
| USA | state, license_class, restrictions, endorsements, height, eye_color, sex |
| IND | vehicle_classes, blood_group, issuing_rto, father_name_or_guardian |
| GBR | categories, issuing_authority, sex, place_of_birth |
| VNM | license_class, place_of_issue |
| THA | license_type, national_id_number, blood_group, issuing_authority |
| IDN | license_type, blood_group, height, place_of_birth, issuing_authority |
Step 5: Notion database
Properties:
| Property | Type |
|---|---|
| Name | Title ← full_name |
| Country | Select ← country |
| License number | Rich text |
| DOB | Date |
| Address | Rich text |
| Issue | Date |
| Expiry | Date |
| State / Region | Rich text (USA state, etc.) |
| Class | Rich text |
| Restrictions | Rich text |
| Endorsements | Rich text |
| Sex | Rich text |
| Height | Rich text |
| Eye color | Rich text |
| Dropbox path | URL |
| Status | Select |
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 = validCryvis 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
| Case | Expect |
|---|---|
Clear USA DL in /USA | state, license_class populated |
IND DL with country=USA | Poor/wrong schema — always match folder to real issuing country |
country=US | Rejected — use USA |
| Expired date | Status expired via Make/Notion logic |
Multipart field order and types
In Make’s HTTP module, add two multipart items:
| # | Field name | Type | Value |
|---|---|---|---|
| 1 | country | Text | USA (or mapped variable) |
| 2 | file | File | Dropbox 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.sexIND 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_guardianKeep 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.pdfParse with Make substring / split to set country, then validate against the allowed six codes before HTTP.
Related reading
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.