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.
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.