Skip to main content
POST
curl

Authorizations

X-Transaction-Token
string
header
required

Short-lived scoped token minted by your backend via POST /v3/transactions/sdk-token/. Used by the Didit SDKs on the device-facing /v1/transactions/ endpoints.

Body

application/json
txnId
string
required

Your unique identifier for this transaction (maps to transaction_id, max 128 characters).

Example:

"wd-2026-07-07-0042"

type
string
required

Transaction category (maps to transaction_category), e.g. finance, kyc, travelRule, userPlatformEvent, gamblingBet.

Example:

"travelRule"

info
object
required

Core financial details of the transaction (maps to transaction_details).

subject
object
required

The subject (applicant) of the transaction. externalUserId is ignored here: the subject identity is always enforced from the token's vendor_data.

txnDate
string<date-time>

When the transaction occurred (maps to transaction_at). Defaults to now if omitted.

zoneId
string

IANA time zone identifier (maps to time_zone), e.g. Europe/Madrid.

counterparty
object

The counterparty of the transaction (optional). Same shape as subject; externalUserId is meaningful here.

props
object

Custom key-value pairs (maps to custom_properties). Each key can be referenced in rule conditions as custom_values.<key>.

travelRule
object

Travel Rule details (maps to travel_rule_details). When Travel Rule is enabled for the application, Didit ignores any status you send and drives the exchange itself.

includeCryptoScreening
boolean | null

Per-transaction override for crypto blockchain analytics screening (maps to include_crypto_screening).

fingerprint_v2
object

The didit-fp-v2 device fingerprint payload. Injected automatically by the SDKs; only relevant when calling the wire API directly.

Response

Transaction submitted and monitored. Same detail shape as GET /v3/transactions/{transaction_id}/, including the action_required block when the end user must complete a follow-up action (the SDKs auto-launch it by default).

Full monitoring record for one transaction, as returned by GET /v3/transactions/{transaction_id}/ and POST /v3/transactions/.

uuid
string<uuid>

Didit-stable transaction identifier. Use as {transaction_id} for follow-up calls.

transaction_number
integer

Application-scoped sequential transaction number shown in Console (e.g. 4123).

txn_id
string

The transaction_id you supplied at create time (max 128 chars). Unique per application.

txn_date
string<date-time>

When the transaction occurred (from transaction_at; defaults to submission time).

zone_id
string | null

IANA time zone identifier provided at create time.

transaction_type
string

Top-level category as stored: finance, kyc, travelRule, userPlatformEvent, gamblingBet, gamblingLimitChange, gamblingBonusChange, auditTrailEvent. Note multi-word values are echoed back in camelCase even when submitted in snake_case.

action_type
string

Sub-type within the category (e.g. deposit, withdrawal, transfer). Defaults to the category when not supplied.

direction
enum<string>

Direction relative to the subject. Stored uppercase regardless of the casing submitted (in/out/inbound/outbound are accepted on input).

Available options:
INBOUND,
OUTBOUND
status
enum<string>

Current monitoring verdict. Transactions are created APPROVED; rules may flip them to IN_REVIEW/DECLINED synchronously.

Available options:
APPROVED,
IN_REVIEW,
DECLINED,
AWAITING_USER
amount
string

Transaction amount as a decimal string with trailing zeros stripped (e.g. "1500", "0.5", "0.123456789012345678"). Up to 18 decimal places.

currency
string

Currency code of amount (e.g. EUR, USD, BTC).

currency_type
string | null

fiat or crypto, as submitted in currency_kind.

amount_in_default_currency
string | null

Pre-converted amount you supplied, as a decimal string with trailing zeros stripped.

default_currency_code
string | null
preferred_currency_amount
string | null

amount converted to the application's preferred currency, when available.

preferred_currency_code
string | null
payment_details
string | null

Free-text payment reference or memo from the submission.

payment_txn_id
string | null

External payment system reference (e.g. blockchain transaction hash) from payment_reference_id.

score
integer

Risk score accumulated by rules (typically 0–100). Higher = riskier.

severity
enum<string> | null

Categorical risk severity set by rules/providers (UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL). null until something sets it.

Available options:
UNKNOWN,
LOW,
MEDIUM,
HIGH,
CRITICAL
decision_reason_code
string | null

Machine-readable reason for the current status.

decision_reason_label
string | null

Human-readable label for decision_reason_code.

vendor_data
string | null

Convenience copy of the applicant's vendor_data.

metadata
object

Snapshot of the subject and counterparty payloads as submitted at create time.

props
object

The custom_properties you supplied at create time. Each key is addressable in rule conditions as custom_values.<key>.

tags
object[]

Tags attached to the transaction (manually or by rules).

parties
object[]

Transaction parties (applicant, counterparty).

payment_methods
object[]

Payment methods linked to the transaction.

activities
object[]

Activity log entries (creation, notes, manual reviews, status changes).

alerts
object[]

Alerts raised by rules and providers.

rule_runs
object[]

Per-rule execution results — which rule fired, with what score impact.

provider_results
object[]

Raw provider payloads (AML screening, blockchain analytics, etc.).

travel_rule
object | null

Travel Rule compliance check, present when travel_rule_details was submitted.

network_snapshot
object | null

Graph snapshot of related transactions/parties used by the rules engine, present when submitted.

remediation
object | null

Remediation session offered to the user when re-verification is required. Superseded by action_required, which is the canonical block; kept for backward compatibility.

action_required
Verification session · object

Pending end-user action required to complete this transaction, or null when there is none. The Didit SDKs auto-launch the action by default and refresh the transaction when it finishes. Two variants, discriminated by type: verification_session (a hosted verification session created by a rule action) and wallet_ownership (a wallet-ownership widget session auto-minted for a Travel Rule transfer that needs proof of wallet control, gated by the auto_wallet_verification Travel Rule setting). When both could apply, wallet_ownership takes precedence because it blocks the Travel Rule exchange.

cost_breakdown
object | null

Per-feature credit cost breakdown for this transaction.