Collection to Payout

Understand when to use the nested Global Collection to Payout flow, how the downstream collection-to-payout sequence works, and where to continue into the recipe and product guides.

Integration Architecture

[!WARNING] Platform & Global Clearing Access This recipe utilizes Global Clearing logic. Access to the pass-through clearing rails is completely restricted and requires extensive enhanced due diligence (EDD) and a strict reliance model agreement with Verto Compliance. Standard Atlas Platform users cannot perform nested global clearing without special provisioning.

Use this flow when your platform must collect funds into a downstream customer context and later send those funds onward through a nested Global Clearing payout.

✅ Before you start

Complete these steps before you implement this flow:

  1. Confirm your account is approved for Global Clearing and nested third-party payout activity.
  2. Authenticate with your master platform credentials.
  3. Prepare to create and track a sub-account for the downstream customer.
  4. Register webhook endpoints so you can detect inbound credits and payout state changes.
  5. Gather the sender and recipient details required for the final payout.

📚 Use this page with the recipe

This guide explains when to use the Global Collection to Payout flow and the minimum sequence. For the implementation walkthrough, use the recipe:

Global Collection to Payout Recipe →

sequenceDiagram
    participant P as Your Platform
    participant V as Verto API
    participant C as Sub-Account (End-User)
    participant B as External Beneficiary

    P->>V: 1. Create Sub-Account (POST /sub-accounts)
    V-->>P: sub_acc_id_998
    P->>V: 2. Add KYC/KYB Data (POST /onboarding-data)
    V-->>P: Verification: PENDING
    P->>V: 3. Issue vIBAN (POST /accounts)
    V-->>P: IBAN: GB29VERT...
    C->>V: 4. Inbound Payment (Local Rail)
    V-->>P: Webhook: iban_to_wallet (5000 GBP)
    P->>V: 5. Execute Payout (POST /send)
    V-->>B: Funds Dispatched

The Global Collection to Payout workflow

This use case follows a strict sequence:

  1. Create the sub-account that will own the collection and payout context.
  2. Complete onboarding and wait for approval before the customer can transact.
  3. Issue collection details in that same sub-account context.
  4. Wait for the inbound collection event and confirm the funds have arrived.
  5. Send the payout from the same customer context with the required ultimate_sender data.

What makes this use case different?

Unlike standard receive or payout flows, this model is specifically for programs that need to:

  • collect funds into a downstream customer context
  • keep collection and payout activity tied to the same sub-account
  • satisfy nested Global Clearing requirements
  • include ultimate_sender data in the final outbound payment

Where to go deeper

Use the product guides when you need implementation detail for a specific step:


🎯 Success Indicators

EventWebhook SignatureAction
Collectioniban_to_walletNotify your UI that the user's balance has increased.
Payoutwallet_to_accountConfirm to the sub-account that the transfer is in progress or completed.

Troubleshooting

IssueWhat to check
Sub-account cannot receive or pay outConfirm onboarding is complete and the sub-account is operationally approved for this flow.
Inbound funds arrive but payout should not startWait for the receive webhook status to reach completed before releasing funds downstream.
Payout is rejected immediatelyCheck that ultimate_sender is present and that the recipient and corridor are approved for Global Clearing.
Wrong customer context is debitedVerify the X-Sub-Account-Id header and the source wallet belong to the intended sub-account.

Next steps

Retry a Timed-Out Payout Safely →
Handle uncertain payout outcomes safely with idempotency and webhook reconciliation.
End-to-End Payment Flow →
Return to the simpler direct own-funds payout pattern.