Skip to main content
Bank transfer suits larger payments and invoice-style collections. Tanda creates a temporary virtual account for one payment. When the customer transfers the exact amount before it expires, the payment is matched to your transaction automatically.

1. Create the account

Call Bank transfer.
Response

2. Show the details

Display these to the customer:
  • Bank: bankName (and bankLogo if you like)
  • Account number: accountNumber
  • Amount: amount, stated as an exact figure
  • Pay before: expiresAt, ideally with a countdown
The customer must send the exact amount before expiresAt. Partial payments, overpayments and transfers after expiry won’t reconcile automatically and may need manual handling through support.
If the account expires before the customer pays, create a new one with a new externalReference.

3. Confirm the payment

You’ll get a transaction_created webhook when the account is issued and a transaction_updated webhook with status: "successful" or "failed" when it settles. Bank transfers can take longer than mobile money, so prefer webhooks over polling. To check manually, use Get transaction. A settled transfer has chargeStatus: "successful", method: "bank" and the bank’s thirdPartyReference.

Good practice

  • Don’t fulfil when the account is created. Wait for successful.
  • Store both transactionId and externalReference against the invoice.
  • Remind the customer to send the exact amount, without deducting their own bank charges.