Skip to main content
This page documents the full payload returned by POST /v3/transactions/ and GET /v3/transactions/{id}/.

Top-level structure

{
  "transaction_id": "uuid",
  "txn_id": "tx-0001",
  "txn_date": "2026-04-16T12:00:00Z",
  "direction": "OUTBOUND",
  "status": "IN_REVIEW",
  "score": 65,
  "amount": "12500.00",
  "currency": "USD",
  "amount_in_default_currency": "12500.00",
  "default_currency_code": "USD",
  "preferred_currency_amount": "12500.00",
  "transaction_type": "finance",
  "action_type": null,
  "rules_evaluated_count": 18,
  "rules_matched_count": 2,
  "decision_reason_code": "rule_score_threshold",
  "decision_reason_label": "Score above review threshold",
  "applicant": { ... },
  "remitter": null,
  "beneficiary": null,
  "counterparty": { ... },
  "payment_methods": [ ... ],
  "rule_runs": [ ... ],
  "alerts": [ ... ],
  "provider_results": [ ... ],
  "travel_rule": { ... } | null,
  "network_snapshot_id": null,
  "tags": [ ... ],
  "notes": [ ... ],
  "metadata": { },
  "custom_values": { },
  "session_id": null,
  "remediation_session_id": null,
  "remediation_session_url": null,
  "assigned_to": null,
  "created_at": "...",
  "updated_at": "..."
}

Key fields

Financial fields

  • amount / currency — transaction amount as submitted.
  • amount_in_default_currency / default_currency_code — amount converted to your app’s default currency (for cross-currency thresholding).
  • preferred_currency_amount — optional per-rule / per-app preferred reporting currency.

Status fields

  • statusAPPROVED, IN_REVIEW, DECLINED, AWAITING_USER.
  • score — integer score.
  • decision_reason_code / decision_reason_label — structured + human reason for the current status.

Parties

"applicant": {
  "uuid": "...",
  "vendor_data": "user-42",
  "full_name": "Jane Doe",
  "first_name": "Jane",
  "last_name": "Doe",
  "country_code": "USA",
  "date_of_birth": "1990-01-15",
  "address": { "line_1": "...", "city": "...", "country_code": "USA" },
  "institution_info": { "name": "...", "country_code": "..." },
  "device": {
    "ip": "203.0.113.5",
    "user_agent": "...",
    "fingerprint": "..."
  },
  "ip_enrichment": {
    "ip_country_code": "USA",
    "is_vpn_or_tor": false,
    "is_data_center": false,
    "asn_number": 15169,
    "asn_organization": "Google LLC"
  }
}
Each party (applicant, remitter, beneficiary, counterparty) has the same shape. See IP enrichment for the enrichment fields.

Payment methods

"payment_methods": [
  {
    "uuid": "...",
    "role": "SOURCE",
    "type": "BANK_ACCOUNT",
    "label": "Chase checking ****1234",
    "fingerprint": "bank:us:chase:****1234",
    "account_id": "...",
    "issuing_country": "USA",
    "institution_info": { "name": "JP Morgan Chase", "country_code": "USA" },
    "details": { }
  }
]
role: SOURCE, DESTINATION, FUNDING, BENEFICIARY. type: BANK_CARD, BANK_ACCOUNT, EWALLET, CRYPTO_WALLET, UNHOSTED_WALLET.

Rule runs

"rule_runs": [
  {
    "rule_uuid": "...",
    "rule_name": "High-value outbound",
    "matched": true,
    "is_test": false,
    "mode": "ACTIVE",
    "score_delta": 30,
    "severity": null,
    "status_target": null,
    "action_summary": { "add_score": 30 },
    "considered_payload": { "amount": "12500.00", "direction": "OUTBOUND" },
    "matched_payload": { "amount": "12500.00" }
  },
  {
    "rule_uuid": "...",
    "rule_name": "High-risk jurisdiction counterparty",
    "matched": true,
    "score_delta": 35,
    "action_summary": { "add_score": 35, "add_tags": ["high_risk_country"] }
  }
]
Every rule that evaluated is included — matched: false rules appear too, so you can audit selectivity.

Alerts

"alerts": [
  {
    "uuid": "...",
    "status": "OPEN",
    "source": "RULE",
    "title": "High-value + high-risk jurisdiction",
    "severity": null,
    "created_at": "..."
  }
]

Provider results

External provider outputs (wallet screening, fiat monitoring, sanctions screening).
"provider_results": [
  {
    "uuid": "...",
    "result_type": "WALLET_SCREENING",
    "provider": "CRYSTAL",
    "status": "COMPLETED",
    "severity": "HIGH",
    "score": 82,
    "summary": "Wallet has 18% exposure to mixer services",
    "payload": { "exposure": { "mixer": 0.18, "darknet": 0.02 } }
  }
]

Travel rule

Only present for virtual-asset transfers.
"travel_rule": {
  "status": "COMPLIANT",
  "required": true,
  "protocol": "TRP",
  "obligations_count": 2,
  "originator_data": { "name": "...", "wallet_address": "..." },
  "beneficiary_data": { "name": "...", "wallet_address": "..." }
}
See Travel rule.

Network snapshot

For crypto transactions, network_snapshot_id points to the stored network graph (nodes, edges, metrics). View the graph in the console transaction detail page.

Tags, notes, metadata

  • tags[] — attached tags (either by rule action or by analyst).
  • notes[] — analyst notes.
  • metadata — free-form JSON you submitted on the request.
  • custom_values — rule-engine-consumable JSON (typed fields you can reference in conditions).

Remediation

When a rule triggers AWAITING_USER:
  • remediation_session_id — the linked session UUID.
  • remediation_session_url — the URL to deliver to the user.

Currency conversion

amount_in_default_currency uses mid-market rates from our FX provider at the transaction’s txn_date. Rules that threshold on “amount” operate on amount_in_default_currency by default; rules can opt into the native amount via rule scope.

Next steps

Submit transactions

Full request schema.

Statuses

What each status means.

Risk scoring

How score is computed.