Skip to content

FAQ

Questions we get asked

Grouped by what you are probably trying to decide. If your question is not here, email us — the answer usually ends up on this page.

Integrating the scanner

How long does an integration actually take?

Two lines: a script tag with your publishable key, and a data-scanner attribute on an existing file input. If your form already uploads a file, you are done — the scanned PDF arrives in that input as a real File, and your existing submit handler does not change.

In React, Vue or anywhere the input is controlled, it is a few lines more: await Scanner.init({ publicKey }).open() resolves with a File.

Does the scanner run on my page?

No, and that is deliberate. Only a ~6 KB launcher runs on your page. The detection engine — camera handling, edge detection, perspective correction, PDF assembly — runs on our origin inside an iframe, so the ~9.6 MB of computer-vision code never lands in your bundle and never has to be updated by you.

What if my users are on a desktop with no camera?

Render the session's scan_url as a QR code. The user scans it with their phone, the phone opens the same hosted scanner, and the result arrives at your backend by webhook while the desktop page polls the session. Nothing extra to install.

Which browsers and devices work?

Any browser with getUserMedia and a rear camera: current Safari on iOS, Chrome and Firefox on Android, and desktop Chrome, Edge, Firefox and Safari. There is no app to install on either side.

Can I get the result on my server instead of in the browser?

Yes, and for anything that matters you should. Webhooks are the canonical delivery mechanism: we POST a signed scan.completed event to your endpoint, retried with backoff until you return 2xx. The browser postMessage and the polling endpoint are conveniences on top of the same event.

What formats come out?

A single PDF per scan, one page per capture, cropped and perspective-corrected. If you turn the watermark on, it is stamped into every page. Grayscale is an option and typically halves the file size.

Credits and metering

What exactly consumes a credit?

One scanned document consumes one credit, at the moment the finished PDF is delivered — test or live. That covers the whole scan: capturing as many pages as your page limit allows, assembling the PDF and delivering it.

Pages are free. A twelve-page contract costs the same one credit as a single ID card. Opening the scanner is free.

Is test mode free?

No. A document scanned with a test key (pk_test_… or sk_test_…) costs the same one credit as one scanned with a live key — and opening a session that never scans anything is free either way. Test vs live is a label so you can tell staging traffic from production in analytics, and revoke one set of keys without touching the other.

Every new account starts with 250 credits, which is enough to finish an integration and a demo before you buy a pack.

What happens if a user abandons the scan?

Nothing is charged. A credit is spent only when a finished document is delivered, so a QR code nobody scanned or a camera that was closed costs nothing.

Abandoned scans expire after fifteen minutes and show up in your analytics as expired, so you can see the ratio rather than guess at it. If abandonment is high, that is usually a placement problem in your own flow.

Do credits expire?

No. Credits are a prepaid balance, not a monthly allowance. Whatever you do not use this month is still there next month.

What happens when the balance reaches zero?

The scanner refuses to open (HTTP 402, insufficient_credits) instead of letting a user scan a document you cannot receive, and your balance never goes negative. Top up from the console and the next scan works immediately.

Is there a monthly fee or a contract?

No. You buy a pack of credits when you need one. There is no seat pricing, no platform fee and nothing to cancel.

Customization

Can the scanner speak my users' language?

It ships with English, French, Spanish, German, Portuguese and Dutch. Pick the language for your whole account in the console, or override it per session when you already know the user's locale.

Can I make it look like my product?

You can set the accent colour, corner radius, brand name and logo, the line shown over the camera, and the image and message shown on the success screen. You can also switch off controls you do not want — the torch, the zoom, the A4 alignment guides — and cap the number of pages.

What does the watermark do?

It repeats a short line of your text — "Acme Lending · Secure scan", say — in a light diagonal pattern over every page. The user sees it on the camera view, on the crop screen and in the page gallery, and the same pattern is stamped into the PDF you receive. You choose the text, colour, opacity and size.

It is a visible label, not a tamper-proof signature, so treat the PDF your server receives as the source of truth. It is off by default.

Can I have different setups for different flows?

Yes. Save named scanner profiles in the dashboard — a French one, an ID-capture one with a single page and a tailored prompt — and make one the default. The default is what the two-line integration uses; the others are there when your server wants to pick a specific one for a given scan.

Why can I not upload my own CSS?

Because the scanner is a camera UI with a very small margin for error: a stylesheet that breaks the shutter button breaks the scan. The options we expose are the ones the engine genuinely has controls for, and every one of them is validated server-side before it is saved.

Security and privacy

Is it safe to put a publishable key in my HTML?

Yes — that is what it is for. A publishable key can do exactly one thing: open a scan session, and only from an origin on your allowlist. It cannot read results, list sessions, or change your settings. Secret keys stay on your server and are stored only as hashes.

How long do you keep the scanned documents?

Result files are held for 24 hours by default and then dropped. Download URLs are signed and short-lived, so a leaked link stops working. If you would rather we never hold the file at all, ask about relay-only mode.

How do I know a webhook really came from you?

Every delivery carries an X-Scanner-Signature header of the form t=<timestamp>,v1=<hmac_sha256>. Verify it against your signing secret and reject anything that does not match or is too old. The secret is rotatable from the console, and rotation only affects future deliveries.

Do you train anything on my documents?

No. Detection is geometric, not learned: edges, contours and a perspective transform, computed on the end user's device. Your documents are not a dataset.

Still deciding?

The fastest way to answer most of these is to sign up and scan something. Every account starts with 250 credits. It takes about ten minutes.