Collect Bank Transfers

Collect bank transfers into Aella Wallets using virtual accounts. Use dynamic accounts for one-off payments and static accounts when the same payer should reuse an account number.

This flow is best for checkout bank transfers, invoice settlement, account funding, and marketplace collections.

1. Choose the account type

Use POST /wallets/virtual/dynamic when the payment is amount-bound and short-lived. Use POST /wallets/virtual/static when the payer needs a reusable account number.

Dynamic accounts are the safer default for checkout because the amount and expiry window narrow what can be reconciled to that order.

2. Create a dynamic virtual account

Call POST /wallets/virtual/dynamic with an account name, expected amount, and expiry window.

POST/wallets/virtual/dynamic
curl https://api.aellaapp.com/wallets/virtual/dynamic \
  -X POST \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"accountName":"Order 1001","amount":2000,"expiryTimeInMinutes":30}'

Show the returned bank account details to your payer. Keep the virtual account number beside your order or funding reference.

3. Wait for settlement

Prefer the inwards.completed webhook for final settlement. Your handler should credit your internal ledger only once for the same payment reference or account number.

If you are using dynamic accounts, you can also query GET /wallets/virtual/dynamic/{account_number}/transaction to fetch the transaction tied to the account number.

4. Reconcile wallet activity

Use GET /wallets/main to identify your main wallet, GET /wallets/balance for aggregate balances, and GET /wallets/transactions or GET /wallets/{id}/transactions for transaction history.

5. Split funds when needed

If you need customer, department, or seller ledgers, create Sub-Accounts and use POST /wallets/sub-accounts/{id}/credit, POST /wallets/sub-accounts/{id}/debit, or POST /wallets/transfer to move funds internally.

What's next

Was this page helpful?