eKYC SaaS for Bangladesh
Bangladesh NID eKYC that runs on your own servers
Owlstech eKYC reads every Bangladesh NID card in Bangla and English, checks liveness with facial landmarks and matches faces. You subscribe; it runs inside your network, with no government API and nothing sent to us. Designed first for banks, and ready for any business that onboards customers with an NID.
- No government API
- Runs offline on your servers
- Old laminated and smart NID
- Android and iOS
Front of the NID
Fit the card inside the frame
Turn your head to the left
Designed first for banks, open to every business that verifies customers with an NID
- Banks
- Mobile financial services
- Fintechs and NBFIs
- Microfinance
- Insurers
- Telecom operators
- Any business onboarding customers with an NID
We do not use any government API
Owlstech eKYC does not connect to or use any government API or database, including the Election Commission's NID server. It reads the card the customer shows, checks liveness and compares faces with facial-landmark and face-recognition models on your own server. It does not prove that a card is genuine or verify a person against a government registry. If your institution has its own authorised access to NID photos, face match can compare the selfie with that photo.
Every Bangladesh NID
Old laminated, new laminated and smart cards
One flow for every NID card in use. The card type is recognised from the photo, and a front and back from different card types are refused.
Old laminated NID
17-digit NID number
PDF417 barcode on the back
Old laminated NID
13-digit NID number
PDF417 barcode on the back
Newer laminated NID
10-digit NID number
PDF417 barcode with the 17-digit PIN
Smart NID card
10-digit NID number
Machine-readable zone (MRZ) on the back
What is read from each card
- Name in Bangla and English
- Father's, mother's or guardian's name
- Date of birth
- NID number
- Address, in full and in parts
- Blood group, place of birth and issue date, where printed
Features
Everything onboarding needs, from card to face
Your app shows the screens; your server reads the card and makes every decision.
Bangla and English OCR
Reads both languages on the card on your server, including the Bangla address split into house, road or village, post office, upazila and district.
Front and back cross-check
The barcode or MRZ on the back is read and compared with the printed text. A front and back from different cards are blocked.
Guided capture
An alignment frame, photo review and retake. The server says when a side needs a better photo, so bad captures never reach your records.
Field rules you set
Make each field required, optional or off, and require the front and back to match before a scan passes.
Review with an audit trail
Your app can let customers correct a reading; the original machine result stays attached to the result.
Evidence for compliance
OCR lines, confidence, where each field came from, barcode evidence and consistency warnings, plus process logs keyed by request ID.
Your brand, your words
The screens follow your app's theme, and every text can be replaced, in Bangla or English.
Flutter SDK for Android and iOS
One SDK for the front, back and liveness screens. Apps hold only an app key, never the server licence.
Liveness and face match
Landmark-based checks, decided by your server
The phone guides the person; your server decides. A modified app cannot pass a check the server did not see.
Liveness
- 1Your server picks two challenges for every check: a smile, a blink or a head turn.
- 2Facial landmarks follow each move, measured against the person's own resting face.
- 3Anti-spoofing models score every frame for signs of a printed photo or a screen.
- 4The same single person must stay in view from the first step to the selfie.
- 5Evidence reused from another check is refused.
- 6A passed check returns a short-lived proof tied to that exact selfie.
Face match
- 1Faces are aligned on five facial landmarks and compared with a face recognition model.
- 2The reference photo is compared with the selfie and with the resting face from each liveness step.
- 3Runs only with a valid liveness proof for that selfie, so an old or borrowed photo cannot stand in for it.
- 4You set the pass mark; an app can ask for a stricter one, never a looser one.
- 5Close calls, such as siblings, are flagged for a person to review instead of passing.
How it works
From card to verified face in four steps
- 01
Capture the card
Your Flutter app shows the SDK's front and back screens. The customer fits the card in the frame.
- 02
Read and cross-check
Your server reads Bangla and English text and the barcode or MRZ, and checks that both sides belong to one card.
- 03
Prove liveness
The customer follows two challenges; your server checks every step and the selfie, and issues a proof.
- 04
Match the face
With that proof, your server compares the selfie with the reference photo and returns the result to your app.
The demo app
What your customers see
The capture and liveness screens come from the SDK and take your app's colours and texts.
Front of the NID
Fit the card inside the frame
Back of the NID
Fit the card inside the frame
Turn your head to the left
Review your details
Name (Bangla)
Name (English)
Date of birth
NID number
Address
Face match
Selfie
Reference
Match
Screens are illustrated. Download the demo app to try the real ones.
Try it
Download the demo app
The demo app runs the full flow against the Owlstech demo server: card capture, OCR, liveness and face match.
- 1Download the app and allow your browser to install it.
- 2Open it and scan the front and back of an NID.
- 3Follow the liveness check, then try face match.
The demo sends images to our demo server. Use your own card or a sample card, never a customer's.
Deployment
SaaS you subscribe to, running inside your network
You get a server image and a licence. It runs on your hardware, under your control, and your data never reaches us.
Runs on the servers you already have
| Operating system | Container runtime |
|---|---|
| Ubuntu, Debian | Docker Engine |
| RHEL, Rocky, AlmaLinux | Podman or Docker |
| Windows Server | Docker Desktop or WSL2 |
Works without internet
Every model ships inside the image and nothing is downloaded at run time, so it runs on closed networks.
Offline licence
A signed licence is checked on the server itself, with no call home. Renewing needs only a new key.
Private by design
Images go only from your app to your server, and field values stay out of the logs unless you turn them on.
Hardened container
Compiled server code, a read-only filesystem, a non-root user and no public API description.
amd64 and arm64
Runs on Intel, AMD and ARM servers on CPU, with an optional GPU image.
Updates keep your licence
New versions are loaded next to the old one, which stays available for rollback.
Pricing
One subscription, every feature
From ৳8,000 a month. The minimum purchase is 3 months; longer terms cost less per month.
Custom integration
Need something beyond the Flutter SDK, such as a native Android or iOS app, a web flow, a different workflow or help fitting it into your onboarding? Tell us what you need.
Every plan includes
- Server image for amd64 and arm64, every model inside
- Offline licence for the whole term
- Flutter SDK for Android and iOS
- Bangla and English OCR for every NID card type
- Server-verified liveness and face match
- Updates during the term, keeping your licence
- Installation guide
Prices are in Bangladeshi taka (BDT). The minimum purchase is 3 months.
FAQ
Common questions
Do you use the government (Election Commission) NID API?
No. Owlstech eKYC does not connect to or use any government API or database. It reads the card the customer shows, checks liveness and compares faces on your own server. If your institution has its own authorised access to NID photos, face match can compare the selfie with that photo.
Where do card images and selfies go?
Only from your app to the server you run. The server needs no internet access and downloads nothing, and field values are not written to its logs unless you turn that on.
Which NID cards does it read?
Every Bangladesh NID in use: old laminated cards with 17- or 13-digit numbers, newer laminated cards with 10-digit numbers, and smart NID cards.
Does it prove a card is genuine?
No. It reads the card and cross-checks the printed text with the barcode or MRZ. It is not a document authenticity check and does not verify a person against a government registry.
How are liveness and face match done?
The server picks two challenges (smile, blink or a head turn), follows each move with facial landmarks and scores every frame with anti-spoofing models. Face match aligns faces on five landmarks and compares them with a face recognition model, and it only runs with the proof of a passed liveness check.
Which servers can run it?
Any server that runs Linux containers: Ubuntu and Debian with Docker, RHEL, Rocky and AlmaLinux with Podman or Docker, and Windows Server with Docker Desktop or WSL2. Intel/AMD (amd64) and ARM (arm64), on CPU, with an optional GPU image.
Which apps can use it?
Today the SDK is for Flutter apps on Android and iOS (iOS 15.5 or newer).
What happens when the subscription ends?
The server stops accepting requests until you renew. Renewing needs only a new licence key, not a new installation.
OwlstechReady to run eKYC inside your organisation?
Tell us about your app and your servers, and we will get back to you about a subscription.