Webhooks
Use webhooks to receive real-time updates, reconcile asynchronous state changes, and route review or RFI delays into an exception workflow.
Webhooks
Use webhooks to receive real-time updates for receive, exchange, payout, refund, and statement events without polling the Verto API.
🛠️ Lifecycle Workflow
Set up your webhook flow in this order:
| Step | Action | Objective |
|---|---|---|
| 1️⃣ Config | Set up an HTTPS endpoint. | Ensure your listener is publicly reachable and uses SSL. |
| 2️⃣ Register | Add the webhook URL in the dashboard. | Subscribe only to the event types your application needs. |
| 3️⃣ Process | Receive and route the POST payload. | Map each event to your internal ledger or workflow. |
| 4️⃣ ACK | Return 200 OK quickly. | Acknowledge receipt within 5 seconds, then continue processing asynchronously. |
📂 Webhook Catalog
Verto emits events across every major module. Subscribe to the events that match your business logic.
🔵 Inward Liquidity (iban_to_wallet)
iban_to_wallet)Triggered when external capital lands in a Verto vIBAN or Ledger account.
- Primary Use Case: Auto-funding user accounts in a Marketplace.
- Key Data:
walletId,amount,reference,account(remitter details).
🔄 Currency Conversion (remittance_complete)
remittance_complete)Triggered when an FX order executes successfully.
- Primary Use Case: Updating treasury balances post-swap.
- Event Types:
outward_remittance_complete,inward_remittance_complete.
🔴 Outbound Payouts (wallet_to_account)
wallet_to_account)Triggered when funds successfully exit the Verto ecosystem.
- Primary Use Case: Sending "Payment Confirmed" notifications to end-users.
💰 Lifecycle Events
- Refunds:
refund.completed - Audit Logs:
wallet.statement.generated
🧩 Handle webhook deliveries
Use this page as the high-level lifecycle guide, then use Webhook Event Handling for implementation examples and routing patterns.
At a minimum, your webhook consumer should:
- receive the incoming
POSTrequest - identify the event type and payload
- deduplicate the event before mutating internal state
- route the event to the correct handler
- return
200 OKwithin 5 seconds
🚦 Status Mappings
When processing webhook payloads, use the transactionState or status string to drive your internal business logic.
Send & Receive Data Mapping
| Flow | State | Meaning for your platform |
|---|---|---|
| Inbound / Receive | requested | Funds received but not yet applied to wallet. |
| Inbound / Receive | completed | Funds applied to the wallet successfully. |
| Outbound / Send | requested | Wallet debited, payout instruction dispatched. |
| Outbound / Send | completed | Payout reached correspondent bank (Note: Final delivery may vary by country rail). |
| Any | archived / refunded | Transaction cancelled or returned. Re-credit your user internally. |
Exchange Mapping
| API State | Meaning for your platform |
|---|---|
confirmed | FX order placed. |
inwardSettlementDone | Funds deposited. |
outwardSettlementDone | Funds converted successfully. |
Sub-Account KYB Mapping
| State | Meaning for your platform |
|---|---|
created | Missing documentation. |
in_progress | Awaiting Verto Compliance review. |
approved | Unlocked. OK to issue wallets. |
rejected | Blocked by compliance. |
🔬 Atlas Payload Nuances
Depending on your integration path, the webhook payload might contain different identifying headers to help you route logic internally.
| Pathway | Scoping Logic |
|---|---|
| 🏦 Atlas for Fintech | The payload usually refers to the Master Wallet ID or corporate reference. |
| 🏢 Atlas for Platforms | The payload will contain the Sub-Account ID mapping, ensuring you can credit the correct individual user in your database! |
Handle review and RFI-related delays
Not every delayed webhook means a transaction failed. A payout, FX trade, beneficiary, receive flow, or onboarding workflow may be under review or waiting for a Request for Information (RFI).
If your system has not received a terminal webhook after your approved processing threshold:
- Check the latest status through the relevant read endpoint.
- Check whether the workflow is under review or waiting for additional information.
- Move the item into an internal exception queue instead of retrying the original write request.
- Notify your operations team or customer according to your RFI workflow.
- Resume downstream processing only after the next status update or webhook confirms it is safe to continue.
Use Handle RFIs and Compliance Exceptions for the recommended exception state machine, customer messaging, and safe-retry rules.
🏆 Best Practices
The Gold Rules of Webhooks
- Idempotency: Always check the
idoreventId. Verto may deliver the same event multiple times if your ACK response is slow.- Asynchronous Processing: Don't process long-running logic (like database writes) inside the webhook handler. Return
200 OKfirst, then queue the task.- HTTPS Only: Verto will never send webhooks to a non-SSL (
http://) URL.- Acknowledge Quickly: Return a success response within 5 seconds so Verto does not treat the delivery as failed.
- Monitor Retries: Alert on repeated delivery failures and investigate handler errors before they affect reconciliation.
🎯 Next Steps
| Webhook Event Handling → See implementation examples and routing patterns. | Triggered when a refund is completed → Review the refund payload contract and event details. |
| Error Codes →
Handle failures gracefully. | Handle RFIs and Compliance Exceptions →
Route review-blocked workflows into an exception queue. |
Updated 23 days ago
