Webhook Event Catalogue
Every webhook event Depa sends, grouped by topic, with when it fires and what its payload contains.
Each section below is a topic: register a URL for it to receive its events. Every payload has the same shape:
{
"data": {
"event": "fiat_payment_received",
"attributes": { "…": "…" }
}
}Failure events marked (error) use an error key instead of data. Amounts are decimal strings
unless noted, and timestamp fields are Unix seconds unless noted.
Fiat payments: fiat_payment
Bank transfers in and out of your bank accounts. Card payments also arrive on this topic, with
kind: "card", unless you register URLs for card_payment.
| Event | When |
|---|---|
fiat_payment_received | Money arrived on a bank account and was credited. |
fiat_payment_pending | An outgoing payment was created and queued, or approved after four-eyes review. Also sent for incoming transfers that couldn't be matched to an account yet. |
fiat_payment_sent | An outgoing payment left Depa. |
fiat_payment_settled | A card-funded payment was settled. Only sent when this is enabled for your vault. |
fiat_payment_processing_refund | A refund of a card-funded payment is being processed. |
fiat_payment_failed | A payment failed, was rejected or was cancelled. Sent either with the fields below or (error) with a message. |
Fields
| Field | Description |
|---|---|
fiat_payment_uuid | ID of the fiat payment. |
account_id | ID of the account. |
bank_account_id | ID of the bank account. |
iban | IBAN or account number of the other party. |
recipient | Name of the beneficiary (outgoing) or sender (incoming). |
description | Payment reference. |
amount, currency | Amount and currency. |
status | Status of the payment. |
settlement_status | Settlement status, when the rail reports one. |
kind | bank for bank transfers, card for card-funded payments. |
rail | Rail of a bank transfer, for example sepa or swift. Not sent for cards. |
identification_uuid | Your ID (external_uuid) of the account holder's identification. |
timestamp | When the payment was created. |
refusal_code, refusal_description | Why the payment was refused. Only when it was. |
card_bin, last_four | Card details. Only for card-funded payments. |
{
"data": {
"event": "fiat_payment_received",
"attributes": {
"fiat_payment_uuid": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74",
"bank_account_id": "6d1c9e2a-3f4b-4c8d-a7e6-5b2f0e9d1c47",
"account_id": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23",
"iban": "DE89370400440532013000",
"recipient": "Müller Bürobedarf GmbH",
"description": "INV-2026-0142",
"amount": "1250.0",
"currency": "EUR",
"status": "confirmed",
"settlement_status": null,
"kind": "bank",
"rail": "sepa",
"identification_uuid": "016aba24-5d22-4008-b7ed-0c77bbe044c6",
"timestamp": 1772813114
}
}
}The (error) form of fiat_payment_failed carries fiat_payment_uuid, identification_uuid,
description, kind and a message:
{
"error": {
"event": "fiat_payment_failed",
"attributes": {
"fiat_payment_uuid": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74",
"identification_uuid": "016aba24-5d22-4008-b7ed-0c77bbe044c6",
"description": "INV-2026-0142",
"kind": "bank",
"message": "Payment has not been processed correctly"
}
}
}Card payments: card_payment
Card acquiring and card payment links. This topic is optional: when it has no URLs, these events
go to fiat_payment instead.
| Event | When |
|---|---|
card_payment_completed | A card payment succeeded. |
card_payment_failed (error) | A card payment was declined or failed. |
card_payment_refunded | A card payment was refunded, fully or partly. |
widget_session_completed | A customer paid through a card payment link. |
widget_session_failed | A card payment through a payment link failed. The link can't be used again. |
Card payment fields: card_payment_uuid, account_uuid, amount, currency, status,
card_bin, last_four, card_holder_name, trx_uuid (your reference), kind (card) and
timestamp (last update). card_payment_failed adds refusal_code, refusal_reason and the
3-D Secure details eci, three_ds_version and ds_transaction_id when available.
card_payment_refunded adds refunded_at.
{
"data": {
"event": "card_payment_completed",
"attributes": {
"card_payment_uuid": "0197a671-4c41-70ac-b9e1-ea60b8c41403",
"account_uuid": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23",
"amount": "120.0",
"currency": "EUR",
"status": "completed",
"card_bin": "400000",
"last_four": "2701",
"card_holder_name": "Jane Doe",
"trx_uuid": "01976967-364c-7824-9046-d4dbd50e3daf",
"kind": "card",
"timestamp": 1750844190
}
}
}Payment link fields: widget_session_uuid, card_payment_uuid, account_uuid, amount,
currency, status (paid or failed), trx_uuid, kind (card) and timestamp.
{
"data": {
"event": "widget_session_completed",
"attributes": {
"widget_session_uuid": "01a062c8-3c80-71fe-bdc8-f079ebae3fb2",
"card_payment_uuid": "0197a671-4c41-70ac-b9e1-ea60b8c41403",
"account_uuid": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23",
"amount": "250.0",
"currency": "EUR",
"status": "paid",
"trx_uuid": "ord_882910",
"kind": "card",
"timestamp": 1772813190
}
}
}Blockchain payments: blockchain_payment
On-chain deposits and payouts.
| Event | When |
|---|---|
blockchain_payment_received | A deposit arrived on a wallet and was credited. |
blockchain_payment_enqueued | An outgoing payment was queued for broadcasting. |
blockchain_payment_sent | An outgoing payment was broadcast. |
blockchain_payment_confirmed | A payment was confirmed. |
blockchain_payment_failed | A payment failed or was rejected. Sent either with the fields below or (error) with only blockchain_payment_uuid and a message. |
Fields: blockchain_payment_uuid, account_id, blockchain_wallet_id, amount,
currency, status and client_id (your reference). When available: tx_hash,
blockchain_payment_fee_amount and blockchain_payment_fee_currency.
{
"data": {
"event": "blockchain_payment_sent",
"attributes": {
"blockchain_payment_uuid": "0c4f8a2e-6b1d-4e7a-8f3c-9d5b2a1e7c60",
"account_id": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23",
"blockchain_wallet_id": "9a7b3c2d-1e4f-4a6b-8c9d-0e1f2a3b4c5d",
"amount": "25000.0",
"currency": "USDC",
"status": "sent",
"client_id": "payout-7731",
"tx_hash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b",
"blockchain_payment_fee_amount": "0.05",
"blockchain_payment_fee_currency": "USDC"
}
}
}Blockchain wallets: blockchain_wallet
| Event | When |
|---|---|
blockchain_wallet_created | A whitelisted payout wallet (kind: source) was added to an account. |
Fields: blockchain_wallet_uuid, account_uuid, address, network, name, kind,
timestamp, and memo when the network uses one.
{
"data": {
"event": "blockchain_wallet_created",
"attributes": {
"blockchain_wallet_uuid": "9a7b3c2d-1e4f-4a6b-8c9d-0e1f2a3b4c5d",
"account_uuid": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23",
"address": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
"network": "ETHEREUM",
"name": "Treasury cold wallet",
"kind": "source",
"timestamp": 1772813114
}
}
}Accounts: account
Account lifecycle, plus several account-level activities.
| Event | When |
|---|---|
account_created | An account was created, for example after its holder was verified. |
account_locked | An account was blocked: trades and payments stop. |
account_unlocked | A block was lifted. |
bank_account_updated | Details of a bank account changed. |
trade_filled | A trade executed. |
trade_pending | A trade was accepted and is waiting to execute. |
trade_non_created | A trade couldn't be placed with the liquidity provider. |
circle_payment_completed | A local payout completed. |
account_created: account_uuid, referral (payment reference), timestamp,
external_uuid (your ID of the holder's identification) and bank_account_uuid when the account
already has one. Accounts created from a KYB application also include external_kyb, your KYB
reference, next to attributes.
{
"data": {
"event": "account_created",
"attributes": {
"account_uuid": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23",
"referral": "P2ZRZ5",
"external_uuid": "016aba24-5d22-4008-b7ed-0c77bbe044c6",
"timestamp": 1772813114
}
}
}account_locked and account_unlocked: account_uuid, referral, external_uuid,
reason (such as fraud, closure or manual) and timestamp. When a compliance case caused
the block, account_locked also includes ticket_uuid and ticket_number so you can follow up.
{
"data": {
"event": "account_locked",
"attributes": {
"account_uuid": "8f3a2c1e-5b7d-4e9a-9c21-7d4b6e0f1a23",
"referral": "P2ZRZ5",
"external_uuid": "016aba24-5d22-4008-b7ed-0c77bbe044c6",
"reason": "fraud",
"ticket_uuid": "8b3e6f1a-2d9c-4a7e-b1f5-0e4c7d2a9b83",
"ticket_number": "TKT-00012",
"timestamp": 1772813114
}
}
}bank_account_updated: id, name, holder_name, kind, swift, currency,
account_number (the IBAN or account number), routing_number and created_at (ISO 8601).
trade_filled: id, pair, trade_type, order_type, status, and volume, amount and
price as numbers. trade_pending and trade_non_created carry only id and status.
{
"data": {
"event": "trade_filled",
"attributes": {
"id": "5b9d2e7f-3a1c-4f6b-8e2d-7c0a9f4b1e38",
"volume": 1000.0,
"amount": 920.0,
"price": 0.92,
"pair": "USDC/EUR",
"trade_type": "buy",
"order_type": "market",
"status": "filled"
}
}
}circle_payment_completed: the payout's quote_id, trx_uuid (your reference),
external_id (Depa's transaction reference), source_amount, source_currency,
destination_amount, destination_currency, price, iban, recipient, status, the
trade_id and fiat_payment_id it created, and timestamp.
Identifications: identification
KYC and KYB verification results.
| Event | status | When |
|---|---|---|
identification_pending | pending | Verification started or is waiting for the customer. |
identification_verified | verified or approved | Verification passed. |
identification_manual_review | manual_review | Depa is reviewing it manually. |
identification_retry | retry or attention | The customer needs to resubmit something. |
identification_failed | failed | Verification failed. message explains why, when available. |
identification_rejected | rejected | Verification was rejected. |
kyb_verified | approved | A KYB application was approved. |
Fields: identification_id (your ID for the identification, its external_uuid),
status, timestamp (when the identification was created) and, on failures, message.
kyb_verified adds kyb_id, the company name and kyb_external_id, your KYB reference.
{
"data": {
"event": "identification_failed",
"attributes": {
"identification_id": "016aba24-5d22-4008-b7ed-0c77bbe044c6",
"status": "failed",
"message": "Document is expired",
"timestamp": 1772813114
}
}
}Look the identification up with GET /identifications?filter[external_uuid]=….
Open banking: open_banking_transaction_completed
| Event | When |
|---|---|
open_banking_transaction_completed | An open banking payment finished. |
Fields: open_banking_transaction_uuid, email, recipient (the payer), description,
amount, currency, status and timestamp. Here timestamp is an ISO 8601 string, not Unix
seconds.
Daily settlement: daily_settlement
| Event | When |
|---|---|
daily_settlement_completed | A day's card payments were settled into your vault. |
Fields: date (YYYY-MM-DD) and amounts_by_currency, the amount settled per currency.
Support tickets: ticket
| Event | When |
|---|---|
ticket.created | A ticket was opened. |
ticket.status_changed | A ticket's status changed. |
ticket.new_message | A message was added to a ticket. |
ticket.created: ticket_uuid, subject, description, status, priority, category,
ticketable_type, ticketable_uuid and created_at. ticket.status_changed: ticket_uuid,
ticket_subject, status, previous_status and closed_at. ticket.new_message:
ticket_uuid, ticket_subject, ticket_status and a message with uuid, body_preview
(the first 200 characters), message_type, has_attachments, author_email and created_at.
Ticket timestamps are ISO 8601 strings.
{
"data": {
"event": "ticket.new_message",
"attributes": {
"ticket_uuid": "8b3e6f1a-2d9c-4a7e-b1f5-0e4c7d2a9b83",
"ticket_subject": "Incoming SEPA payment not credited",
"ticket_status": "waiting_customer",
"message": {
"uuid": "9e1b4d7a-2c8f-4a6e-b3d0-5f7c1a9e2b48",
"body_preview": "We've located the transfer. Could you confirm the sender's reference?",
"message_type": "staff",
"has_attachments": false,
"author_email": "support@depa.finance",
"created_at": "2026-03-06T10:22:41Z"
}
}
}
}Transaction monitoring: transaction_monitoring
Compliance cases and flags that Depa shares with you, and service blocks.
| Event | When |
|---|---|
case.created | A case was opened. Includes its flags. |
case.updated | A case's status or priority changed, or flags were added. changes lists what changed. |
case.resolved | A case was resolved, with its resolution and summary. |
case.message_added | A message was added to the case's ticket. |
flag.created | A transaction was flagged. |
account.blocked | Services were blocked on an account, identification or vault. |
account.unblocked | Services were unblocked. |
Case fields: case_uuid, case_number, status, priority, flags_count and timestamps;
case.created adds title, vault_uuid, identification_uuid and a flags list with each
flag's uuid, reason, payment_type, payment_uuid and created_at.
Block fields: blockable_type (Account, Identification or Vault), blockable_uuid,
services_blocked or services_unblocked, reason, blocked_at or unblocked_at, and
identification_uuid. Blocks caused by a case also include case_uuid, case_number,
ticket_uuid and ticket_number.
{
"data": {
"event": "flag.created",
"attributes": {
"flag_uuid": "c1d7e3a9-4b2f-4e8c-9a6d-0f5b3e1c7a28",
"case_uuid": "a4f9c2e7-8b1d-4c3a-9e6f-2d0b7a5c1e93",
"case_number": "TM-2026-000031",
"reason": "high_risk_countries",
"payment_type": "FiatPayment",
"payment_uuid": "7e2a9c4b-5d1f-4b8e-9a3c-6f0e2d8b1a74",
"identification_uuid": "25f21bf7-54d2-4b47-9db2-af48558df5eb",
"created_at": 1772813114
}
}
}Manual review: manual_review
| Event | When |
|---|---|
manual_review.activated | Manual review of payouts was switched on for your organization. Outgoing payouts wait for approval until it's switched off. |
Fields: timestamp.