Payments
Understand how Verto supports inbound collections across wallets, local rails, card flows, and approved third-party acceptance models.
Payments Engine
Use the Payments layer to understand how Verto handles inbound collection flows across local accounts, cards, and approved third-party acceptance models.
✅ Before you build a collection flow
Complete these steps before you accept inbound money:
- Decide whether your collection flow uses local account details, cards, or another approved acceptance method.
- Create the wallet that will receive the funds.
- If you are collecting for downstream customers, create and approve the relevant sub-account first.
- Register webhook endpoints so you can reconcile inbound payment events.
🔀 Payments vs. Send — What's the Difference?
These are two distinct outbound money flow primitives:
| Concept | 💳 Payments | 🚀 Send |
|---|---|---|
| What it is | Collection infrastructure — accepting inbound money via virtual accounts or card rails. | Real-time external payouts — dispatching capital to beneficiary bank accounts. |
| Direction | Inbound (money comes IN) | Outbound (money goes OUT) |
| When to use | Accepting payments from customers. | Disbursing funds to suppliers, users, or partners. |
Payments = money arriving. Send = money leaving.
🚀 Acceptance Rails
Verto supports three primary collection methods:
1️⃣ Virtual Accounts (Local Rails)
Provide domestic banking details to your customers.
- Rails: FPS (UK), SEPA (EU), ACH (US), NIP (Nigeria).
- Pro: Feels domestic to the sender; no cross-border fees.
2️⃣ Card Acceptance
Accept Visa/Mastercard payments natively.
- Use Case: E-commerce checkout or on-demand invoice payment.
3️⃣ Third-Party Acceptance
Accept funds from entities other than the account owner.
- Requirement: ⚠️ Advanced Approval.
🗺️ Global Coverage Matrix
| Currency | Local Account | Direct Debit |
|---|---|---|
| GBP (UK) | ✅ FPS/BACS | ✅ Yes |
| EUR (EU) | ✅ SEPA Instant | ✅ Yes |
| USD (US) | ✅ ACH/Wire | ✅ Yes |
| NGN (NG) | ✅ NIP | ❌ No |
| KES (KE) | ✅ M-Pesa/Bank | ❌ No |
⏱️ Settlement Timelines
When does the capital hit your wallet?
- Real-Time: KES (M-Pesa), AUD (NPP), SGD (PayNow).
- T+1 (Next Day): GBP, EUR, NGN.
- T+2 (Standard): USD Card/ACH.
⚖️ Compliance Guardrails & RFIs
Your ability to collect depends on your Atlas verification level.
- Standard Partner: Can collect funds for their own corporate operations.
- Atlas Platform: Can issue unique collection funnels (Virtual Accounts) to thousands of sub-accounts simultaneously.
Programmatic RFIs (Request for Information)
On rare occasions, a high-value transaction may be held pending additional documentation (e.g., an invoice). The RFI process is fully programmatic:
- Notification: Verto sends a webhook with
subState: "rfi_required". - Submission: You submit the required JSON data and file metadata to
POST /payments/{reference}/documents. - Upload: You use the returned secure S3 link to upload the document.
- Acceptance: Verto sends a webhook with
subState: "rfi_accepted"once verified.
[!IMPORTANT] Settlement Check There may be situations where
state: "completed"butsubState: "rfi_required". This means funds have moved internally but are blocked from final settlement. Do not provide value to your customer until you receivesubState: "rfi_accepted".
Global Clearing Requirements
[!IMPORTANT] Global Clearing: Ultimate Sender is Mandatory If you are operating in Global Clearing mode (i.e., acting as a pass-through entity for your underlying clients), you must include the
ultimate_senderobject in every outbound payment. This is a regulatory requirement at the correspondent bank level.Payments missing
ultimate_senderin Global Clearing contexts may be rejected by the receiving bank.
Troubleshooting
| Issue | What to check |
|---|---|
| Funds are collected but your app does not update | Confirm your webhook consumer is subscribed to inbound payment events and only marks funds available at the correct final state. |
| Customer cannot receive funds | Verify the wallet exists, the account details were issued correctly, and the currency rail is supported. |
| Transaction is held for review | Check whether an RFI is required and do not release value until the hold is resolved. |
🎯 Next Steps
| Receive (Deep Dive) → Explore specific regional rails and inbound wallet credit flows. | Exchange → Swap your collections for other value. |
Updated about 1 month ago
