Skip to content

Webhooks

The Agio Platform uses an event-driven architecture. Webhooks fall into three categories: external service callbacks (from third-party providers), database event triggers (fired by Hasura when rows change), and cron triggers (scheduled jobs).

Authentication

CategoryAuth Mechanism
External (BitGo)Payload signature verification (HMAC)
External (Rain)Payload signature verification
External (Sumsub)Payload signature verification (HMAC-SHA1)
External (Auth0)IP allowlist
Database event triggersx-agio-api-token header (platform admin secret)
Cron triggersx-agio-api-token header (platform admin secret)

External Service Webhooks

These endpoints receive callbacks from third-party services. Each service signs its payloads using a service-specific scheme.

POST /webhooks/on-insert-bitgo-webhook-payload-transaction

Receives transaction notifications from BitGo. Payloads are signed using BitGo's webhook signature scheme.

  • Auth: BitGo HMAC signature
  • Triggers: Wallet balance updates, transaction confirmations, pending approval notifications

Example payload:

json
{
  "hash": "0xabc123...",
  "transfer": "txid_abc123",
  "coin": "eth",
  "type": "transfer",
  "state": "confirmed",
  "walletId": "wallet_abc123"
}

POST /webhooks/on-rain-webhook

Receives card and payment events from Rain Cards.

  • Auth: Rain payload signature
  • Triggers: Card status changes, transaction authorizations, settlements, card spend events

Example payload:

json
{
  "eventType": "TRANSACTION_AUTHORIZED",
  "cardId": "card_abc123",
  "amount": 150.0,
  "currency": "USD",
  "merchantName": "Example Merchant",
  "timestamp": "2026-03-23T10:30:00Z"
}

POST /webhooks/on-sumsub-webhook-payload

Receives KYC/AML verification events from Sumsub.

  • Auth: HMAC-SHA1 signature in x-payload-digest header
  • Triggers: Applicant review status changes, document verification results

See the KYC Webhook Data page for full field reference and status codes.

Example payload:

json
{
  "applicantId": "5cb744200a975a67ed1798a4",
  "inspectionId": "5cb744200a975a67ed1798a5",
  "externalUserId": "auth0|abc123",
  "type": "applicantReviewed",
  "reviewStatus": "completed",
  "reviewResult": {
    "reviewAnswer": "GREEN"
  },
  "createdAt": "2026-03-23T10:30:00+0000"
}

POST /webhooks/on-auth0-log-streams

Receives authentication log events from Auth0 Log Streams.

  • Auth: IP allowlist (Auth0 egress IPs only)
  • Triggers: Login events, failed authentication attempts, password changes, MFA events

Example payload:

json
{
  "log_id": "90020260323...",
  "data": {
    "type": "s",
    "connection": "Username-Password-Authentication",
    "user_id": "auth0|abc123",
    "ip": "203.0.113.42"
  }
}

Database Event Webhooks

These endpoints are called by Hasura event triggers when database rows are inserted, updated, or deleted. All require the x-agio-api-token header.

INFO

Database event webhooks are internal to the platform. They are documented here for completeness but are not intended for external consumption.

User Lifecycle

EndpointTriggerDescription
POST /webhooks/on-user-insertINSERT on userProvisions default wallets, sends welcome email
POST /webhooks/on-user-deleteDELETE on userCleans up associated resources

KYC

EndpointTriggerDescription
POST /webhooks/on-kyc-profile-updateUPDATE on kyc_profileSyncs verification status, triggers downstream checks

Trading

EndpointTriggerDescription
POST /webhooks/on-trade-request-updateUPDATE on trade_requestProcesses trade state transitions
POST /webhooks/on-trade-settlement-updateUPDATE on trade_settlementFinalizes settlements, updates balances

Wallets

EndpointTriggerDescription
POST /webhooks/on-digital-wallet-updateUPDATE on digital_walletSyncs wallet metadata changes

Transactions

EndpointTriggerDescription
POST /webhooks/on-asset-transaction-insertINSERT on asset_transactionTriggers notifications, updates balances

Invoicing

EndpointTriggerDescription
POST /webhooks/on-invoice-payment-insertINSERT on invoice_paymentMarks invoices paid, sends receipt
POST /webhooks/on-invoice-reminderScheduledSends payment reminders for overdue invoices

Cards

EndpointTriggerDescription
POST /webhooks/on-card-reminderScheduledSends card expiry and balance reminders

Fiat Operations

EndpointTriggerDescription
POST /webhooks/on-fiat-deposit-request-updateUPDATE on fiat_deposit_requestProcesses deposit state transitions
POST /webhooks/on-fiat-withdrawal-request-updateUPDATE on fiat_withdrawal_requestProcesses withdrawal state transitions

Cron Triggers

Scheduled jobs executed at fixed intervals via Hasura cron triggers. All require the x-agio-api-token header.

JobScheduleDescription
Coin price syncEvery 15 minFetches latest prices from exchanges and aggregators
Currency rate syncEvery 15 minUpdates fiat currency exchange rates
Midnight jobsDaily 00:00 UTCPortfolio snapshots, report generation, cleanup
Reaper jobsEvery 6 hoursWebhook health checks, stale data reconciliation
Webhooks has loaded