Accounts

Issue local and global receiving details for wallets, understand supported rails, and manage inbound account-based collections.

Accounts & IBANs

Issue local or global receiving details for a wallet so you or your downstream customers can collect funds through domestic rails, SEPA, SWIFT, and other supported banking networks.

[!CAUTION] Advanced Flow Approval Required Issuing bank details to third-party customers (Platforms) or sub-accounts requires Stage 2 Compliance Approval. Review Go-Live Requirements →


🔀 Accounts vs. Receive — What's the Difference?

These are two distinct but complementary concepts:

Concept🏦 Accounts📥 Receive
What it isThe virtual banking identity — IBAN, sort code, account number.The transaction event — money arriving into that account.
LayerIdentity / InfrastructureTransactional
When to useSetting up the ability to receive funds.Monitoring and processing incoming payments.
💡

Think of Accounts as the address and Receive as the delivered parcel.


⚖️ Wallets vs Accounts

Understanding the difference is critical for your ledger design:

Primitive💼 Wallet🏦 Account (Virtual)
FunctionHolds the balance (The Bucket).Receives the funds (The Funnel).
RequirementMandatory for all users.Optional (Used for collections).
Detailswallet_id, balance.iban, swift_code, routing_number.

✅ Before you issue an account

Complete these steps before you call the account issuance flow:

  1. Create the wallet that will receive the funds.
  2. Confirm the target currency and rail are supported for your account.
  3. If you are issuing for a downstream customer, create and approve the sub-account first.
  4. Use the X-Sub-Account-Id header when you need the account to belong to a specific sub-account.

🚀 Issuance Capabilities

Verto provides two tiers of account issuance:

1️⃣ Local Accounts

Real domestic bank details in specific jurisdictions (e.g., NGN Account via local Nigerian banks, GBP Account via UK Faster Payments).

  • Latency: Instant arrival.
  • Visibility: Funds appear as domestic transfers to the sender.

2️⃣ Virtual IBANs (Global)

International banking rails (SWIFT/SEPA) scoped to your customer's name.

  • Scalability: 50+ currencies supported.
  • Visibility: Multi-currency collection from 100+ countries.

💱 Supported Currencies

CurrencyLocal AccountVirtual IBANInbound Rails
GBPFPS, BACS, CHAPS
EURSEPA, SEPA Instant
USDACH, Fedwire
NGNNIP (Instant)
KESRTGS, EFT
GHSGhIPSS Instant Pay

[!NOTE] Currency coverage is subject to change based on global banking partner availability. Contact your Verto account manager to confirm the latest corridor status for exotic currencies.


📥 How Accounts Get Funded

Accounts are credited through inbound banking rails. The mechanism depends on the account type and currency:

MethodHow It WorksTypical Settlement
Domestic Transfer (e.g. FPS)Sender uses your sort/acc noInstant (24/7)
SEPA InstantSender uses your IBAN/BICInstant (~10 seconds)
SWIFT WireInternational SWIFT networkT+1 to T+3
ACHUS domestic ACH pull/pushT+1
Internal TransferVerto-to-Verto wallet movementInstant

🔔 Notifications & Webhooks

Verto emits real-time webhook events when your accounts are credited. Subscribe to these events to automate your reconciliation:

EventTriggerKey Fields
account.creditFunds arrive in your accountamount, currency, sender_name, reference
payment.receivedInbound payment confirmedpayment_id, account_id, status
account.debitFunds leave your accountamount, recipient, payment_id
// Example: account.credit webhook payload
{
  "event": "account.credit",
  "data": {
    "account_id": "acc_gbp_001",
    "amount": "5000.00",
    "currency": "GBP",
    "sender_name": "Acme Corp Ltd",
    "reference": "INV-20260401",
    "timestamp": "2026-04-09T08:30:00Z"
  }
}

🏢 Atlas for Platforms Workflow

For Marketplaces and SaaS platforms, you issue accounts to your users to facilitate seamless payout and collection cycles.

  1. Sub-Account Creation: Register the user via Onboarding API.
  2. Identity Verification: Verto executes KYB/KYC on the user.
  3. Wallet Provisioning: Create the currency container.
  4. Account Issuance: Trigger the POST /v2/accounts call to generate the IBAN.

Issue an account for a wallet

Run the account issuance request after the wallet exists and the sub-account is ready to receive funds.

curl -X POST https://api.sandbox.vertofx.com/v2/accounts \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Sub-Account-Id: sub_acc_990" \
  -H "Content-Type: application/json" \
  -d '{
    "currency": "GBP",
    "type": "local"
  }'

After the request succeeds, store the returned account details with the wallet record that owns them. Depending on the corridor, this can include fields like IBAN, sort code, routing number, account number, or SWIFT details.


🗺️ Regional Rails Matrix

Availability of local details varies by currency.

CurrencyLocal RailsIBAN Support
GBPFPS, BACS, CHAPS✅ Yes
EURSEPA, SEPA Instant✅ Yes
USDACH, Wire✅ Yes
NGNNIP❌ No
⚠️

Pro-Tip: Always verify corridor status before advertising "Local Banking" to your end-users. Coverage changes based on global banking partner availability.


Troubleshooting

Use these checks when account issuance or inbound collections do not behave as expected:

IssueWhat to check
Account cannot be issuedConfirm the wallet already exists, the currency is supported, and your account is approved for that corridor.
Sub-account flow is blockedConfirm the sub-account has passed the required KYB or KYC review and that your platform has Stage 2 approval.
Funds arrived but your app did not updateSubscribe to account.credit and payment.received so your reconciliation logic runs when the account is credited.
Sender instructions are incompleteDisplay the exact returned bank details for the corridor, including IBAN, routing data, and any required payment reference.

🎯 Next Steps

Receive Funds →
Learn how to process inbound capital after account issuance.
Sub-Accounts →
Manage the customer context that owns the account.