Business and transactions
Transaction monitoring
Score every payment in real time and decide allow, review or block.
#Send a transaction
bash
curl -X POST https://{{HOST}}/v1/transactions -H "x-api-key: sk_live_..." -H "Content-Type: application/json" -d '{
"external_id": "tx_9812", "customer_ref": "user_123", "amount": 2500, "currency": "EUR",
"direction": "out", "type": "sepa",
"counterparty": { "name": "Jane Doe", "iban": "DE89370400440532013000", "country": "DE" }
}'json
{ "decision": "review", "score": 40, "rule_hits": [{ "rule": "large_transaction", "action": "review" }], "alert_id": "alrt_..." }Use the same customer_ref as your KYC vendor_data or external_ref, so the user's KYC result feeds the rules. Amounts are converted to your base currency.
#Fields
| Field | Description |
|---|---|
external_id | Your transaction ID |
customer_ref | Your customer ID |
amount, currency | Amount in major units and ISO currency |
direction | in or out |
type, channel | Payment type (for example sepa, card, crypto) and channel |
counterparty | name, iban, account, country, wallet_address |
country, ip, device_id | Where it came from |
occurred_at | ISO time. Defaults to now |
state | pending, completed, failed or reversed |
metadata | Anything else |
#Rules
| Rule | Fires when |
|---|---|
| Large transaction | One payment at or above a threshold |
| High transaction frequency | Too many payments in a time window |
| High value in 24h | Total value in a window is too high |
| Possible structuring | Several payments just under a threshold |
| Rapid in-and-out movement | Money leaves soon after it arrives |
| High-risk country | Counterparty or origin in a listed country |
| Sanctions match on counterparty | The counterparty name is on a sanctions list |
| Sanctioned crypto address | The wallet is sanctioned |
| New customer, high value | A large payment from a new customer |
| Dormant account reactivated | Activity after a long quiet period |
| Unusual amount for this customer | Far above the customer's normal amount |
| Repeated round amounts | Several round-number payments |
| Customer KYC not approved | Payment from a customer without approved KYC |
| Many counterparties | Fan-in or fan-out to many parties |
| Customer marked high risk | The customer's risk level is high |
| Risky crypto wallet | Wallet screening found high or severe risk |
Change thresholds, actions (alert, review, block) and scores in Monitoring → Rules.
#Lifecycle and batches
- Update a transaction:
POST /v1/transactions/{id}/statewith{"state":"reversed"}. Failed and reversed payments are left out of velocity rules. - Send up to 500 at once:
POST /v1/transactions/batchwith{"transactions":[...]}.