Skip to content
Last updated

Transaction Types and Fund Flows

VAS does not permit arbitrary movement between any two accounts you can see in the same client profile. Supported flows are tightly constrained by the Settlement -> Parent -> Sub hierarchy.

Supported VAS flows

Transaction TypeDirectionSupportedNotes
DepositExternal -> SubYesCustomer deposits into the dedicated sub account
ACRT - Authorized Credit TransferSettlement -> Parent -> SubYesApproved funding flow into a customer account
ADBT - Authorized Debit TransferSub -> Parent -> SettlementYesApproved debit or consolidation flow out of a customer account
OTWT - Withdrawal TransferSub -> ExternalYesExternal withdrawal to the customer's same-name beneficiary account
OTST - Settlement TransferSettlement -> External CounterpartyYesPayment or settlement flow from the settlement layer
REVERSALReject inboundYesReject or reverse unauthorized inbound funds

Unsupported VAS flows

FlowSupportedReason
Sub -> SubNoVAS does not allow direct virtual account to virtual account movement
Settlement -> Sub direct bypassNoParent layer must remain in the routing chain
Sub -> Settlement direct bypassNoParent layer must remain in the routing chain
Third-party or joint-account funding that fails same-name checksNoSame-name controls still apply

Important developer rule

The generic internal transfers API is not a free-form VAS transfer tool.

Before using any transfer endpoint with VAS accounts, confirm that the selected source and destination represent one of the supported flows above.

Flow details

Deposits (External -> Sub)

  • A customer sends funds from an external bank account to the dedicated virtual account number.
  • Deposits remain subject to same-name and source-of-funds controls.
  • Use GET /v1/virtual-accounts/{virtualAccountNumber}/deposits and GET /v1/virtual-accounts/{virtualAccountNumber}/transactions to verify activity.

Authorized customer credit (Settlement -> Parent -> Sub)

  • Corporate client initiates an approved credit flow.
  • Funds move from Settlement to Parent and then into the selected Sub Account.
  • This is the valid way to move funds down the hierarchy.

Authorized customer debit (Sub -> Parent -> Settlement)

  • Corporate client initiates an approved debit flow.
  • Funds move from the Sub Account back up through Parent to Settlement.
  • This is the valid way to consolidate or settle funds out of a customer account.

Withdrawals (Sub -> External)

  • Corporate client initiates an external withdrawal from the sub account.
  • The beneficiary account must satisfy the same-name control requirements.
  • The published endpoint for this flow is POST /v1/virtual-accounts/{virtualAccountId}/withdrawals/external.

Settlement transfers (Settlement -> External Counterparty)

  • Corporate client initiates the payment from the Settlement Account.
  • Use the settlement layer for approved external counterparties and platform settlement obligations.

Common mistakes

  • Mistake: "Both virtual accounts are in USD, so the transfer should work."
    • Correction: Same currency is necessary, but not sufficient. Sub -> Sub is still unsupported.
  • Mistake: "The account create call returned 202, so the account exists."
    • Correction: The account exists only after the background job finishes successfully.
  • Mistake: "GET /v1/virtual-accounts should return only virtual accounts."
    • Correction: It returns settlement, parent, and sub accounts together. Filter by category.