Skip to main content
The config object on Create transaction declares what should be accepted. Every field is optional and has a default, so "config": {} is valid — you only set what you want to change. Configuration is per transaction, not per account. Two verifications for the same customer can enforce completely different rules, which is what lets you run a strict onboarding check and a lighter step-up check from the same integration.

Shape

Device policy

Rooted devices, emulators, VPNs and spoofed GPS.

Document policy

Accepted documents, expiry, and matching against expected data.

Biometric policy

Liveness and face-comparison thresholds, age and gender.

Blacklist policy

Faces on an internal or global blocklist.

Which policies apply

A policy that does not apply to the transaction type is ignored:

Policy actions

Most policy fields take one of three actions. This is the vocabulary that runs through the whole configuration:
WARN is how you observe a signal before you start enforcing it. Ship a new rule as WARN, watch how often it fires against real traffic, then move it to REJECT once you know the false-positive rate.

Defaults

What you get when you omit a field entirely:

Transaction lifetime

integer
default:"1440"
How long the user has to complete the flow, counted from creation. Range 1–1440 (24 hours). Once it elapses the transaction moves to EXPIRED and the sdk_token stops working.
Match the TTL to how you deliver the flow. A verification the user starts immediately after tapping a button does not need 24 hours — an hour is plenty, and a short window limits how long a leaked token is useful. A link sent by email is the case that justifies a long TTL.

Webhook

string (HTTPS)
Where chmod notifies you once the decision exists. Must start with https://.
See Webhooks for the payload, the signature and how to verify it.

A complete example

A strict onboarding check for Argentina, matching against data you already hold:
Build the config on your server from your own records. If your mobile app can influence any of these values, a modified client can weaken its own verification.