Skip to main content
Withdrawal & Batch Payout FAQ covers the normal path: fees, beneficiary accounts, statements and the status list. This page covers what happens when a withdrawal does not complete — rejected at review, refused by the bank, or returned after it had already succeeded — and what each outcome does to your money, your fee and your ledger. Balances and Account History themselves are described in Balances & Account History.

What is the full status chain of a withdrawal?

There are three ways a withdrawal can end badly, and they are genuinely different states rather than one generic failure: Two things are easy to misread here:
  • Rejected and Failed are not the same event. Rejected means no instruction ever went to the bank. Failed after Processing means an instruction did go, and the bank declined it.
  • Bank Return is not terminal. It means a completed withdrawal is being unwound. It becomes Bank Return Confirmed once the return, and any charge the bank levied for it, are booked.

Why did my withdrawal close by itself?

Because it was still Not Submitted several hours after it was created, and an automatic sweep closed it. Applying for a withdrawal in the Portal is two steps. Entering the amount creates the withdrawal order and leaves it in Not Submitted; the confirmation screen that follows is what actually submits it. If you never get through that screen — you closed the tab, walked away, lost the session — the order simply sits there. After a fixed number of hours the system moves it to Closed. The sweep runs on a schedule rather than on a per-order timer, so the closure can land a little past the cut-off. Only withdrawals started in the Portal are eligible: one created through the API is identified by the withdrawRequestId you supplied and is excluded from the sweep entirely. Two things follow, and they are why a Closed withdrawal is rarely a problem:
  • Nothing was deducted. Your settlement account is debited when you confirm, not when the application is created. A withdrawal that closed unsubmitted never touched your balance, so there is no reversal to wait for and no ledger row to reconcile.
  • Backing out of the confirmation screen does the same thing immediately. Cancelling there closes the order on the spot instead of leaving it to the sweep. Same Closed status, same absence of any money movement.
Closed is terminal, and it maps to FAILURE on the API. To go ahead after all, apply again.

The API returned E0001 Unknown status when I created a withdrawal. Did it fail?

No — treat it as unknown, exactly as the published error codes reference says to. The withdrawal order may already exist and already be moving forward: an API withdrawal that was created but whose submission step did not finish is picked up and completed automatically shortly afterwards. So do not create a second withdrawal for the same intent. Query the first one by your withdrawRequestId — see Withdrawal & Balance APIs — and act on the status you get back. Creating a replacement is how merchants end up paying out twice.

The withdrawal API reports a status I do not see in the Portal. Why?

Because the API reports a deliberately smaller set, so your integration does not have to track every operational step. The mapping: BANK_DISPUTE_NOTIFIED is the one worth handling explicitly: it is not a failure yet. Treat it as “a completed withdrawal is being reversed” and wait for the follow-up, which will be FAILURE once the return is confirmed. See Withdrawal & Balance APIs for the polling sequence.

Do I get the withdrawal fee back when a withdrawal fails?

It depends entirely on whether a payment instruction had already been sent to the bank: The rule behind it: once Waffo has issued the payment instruction, the work and its cost have been incurred. Where the failure is caused by the beneficiary account — wrong details, a closed or restricted account — the fee stands. Where the withdrawal never left the review stage, it does not. For a cross-currency withdrawal the reversal is booked at the full amount instead, because the fee on that route is handled together with the bank’s return charge rather than netted off separately. Either way, you are not charged twice. The fee itself is always deducted inclusively — the amount remitted is your withdrawal amount minus the fee — so a “refunded fee” simply means the full original amount comes back.

Is the withdrawal fee taken out of the amount I enter, or charged on top of it?

Taken out of it. The amount you enter is the gross amount: that is the figure that leaves your settlement account, and the fee comes out of it before the remittance goes out. For a same-currency withdrawal that means the figure reaching your bank is always smaller than the figure you typed. If a specific amount has to arrive, apply for that amount plus the fee. Three consequences worth knowing:
  • You are never billed the fee a second time. Only the withdrawal amount is debited, and the fee lives inside it. There is no separate charge afterwards and no invoice for it.
  • The withdrawal amount has to be greater than the fee. An amount equal to or below the fee would leave nothing to remit, so the application is rejected at that point rather than accepted and failed later.
  • The fee is charged in the currency you are paid in, which has to match the fee currency on your withdrawal agreement. That is why an agreement quotes one currency pair rather than any pair you ask it for.
A cross-currency withdrawal is treated the same way — the fee comes out of the amount, not on top of it — but the received amount cannot be stated when you apply; see For a cross-currency withdrawal, why is the received amount blank but the fee shown? below. What this page deliberately does not tell you is how the fee amount itself is arrived at. That comes from your withdrawal agreement, and the figures that apply to you are the ones on it.

The bank charged for returning my withdrawal. Where does that show up?

As its own row in Account History, against your settlement account. A bank return therefore produces two kinds of ledger movement, not one: Both rows share the same identifying attributes, which is how you tie them back: So if you are reconciling a settlement account movement you cannot account for, and its Description reads Withdrawal Cancelled, look up the Business Id in Withdrawal History — it is a withdrawal being unwound, not a settlement adjustment.

What does the Description column on a withdrawal show?

It changes with the status, and it is legitimately blank in some states: An empty Description on a Bank Return row is expected behaviour, not missing data. The reason appears once the state becomes Bank Return Confirmed. Note that Actual Payment Amount is the amount actually paid out. It is not the same figure as the amount that arrived in your bank account if the receiving bank or an intermediary deducted anything on its side.

Why is the Withdraw button greyed out?

The entry has three states, driven by a check Waffo runs against your settlement account before the button is rendered: The balance that check uses is your withdrawable balance, not your settlement account balance — any amount held back to keep a reserve whole is excluded first. See Balances & Account History for how the two differ. The check is also re-run when you click. If your balance moved in the meantime — a refund or chargeback landed between the page loading and your click — the attempt is stopped and you are asked to try again with the refreshed figures. That is a safety re-check, not an error in your account. Inside the application drawer a second, per-amount validation applies: the amount you type must be at or above the minimum, at or below the maximum on your agreement, and within your available balance.

For a cross-currency withdrawal, why are the fee and the received amount blank?

Because neither can be stated honestly until the rate is known: The application page tells you the amount will be converted and that the actual received amount can differ, and it deliberately lets you submit with these figures still empty — a blank fee at this stage is not an error and does not mean the withdrawal is free. Both the rate and the final amounts are written onto the withdrawal record and its statement afterwards, so reconcile from the record, not from the application page.

Why does my mixed-currency withdrawal show as one payment when several accounts were involved?

Because the account structure behind a settlement currency is deliberately not exposed to you. Whatever happens internally to source the funds, what you get is:
  • one settlement account per settlement currency,
  • one Account History entry for the settlement,
  • one payout for the withdrawal.
The fee is deducted inclusively from the total, once — not once per internal movement. You should never need to reconcile against more than the single figures the Portal shows you.

My withdrawal is stuck in Processing. When should I contact support?

Processing covers everything between review passing and a result coming back, which includes the remittance leg outside Waffo’s systems. Before opening a ticket:
  1. Check the status has not already moved to Result Submitted — that means a result is in and being finalised.
  2. If it reached Success, check the Description for Serial No. — the bank reference you can give your own bank when tracing an inbound payment.
  3. If it reached Bank Return, no action is needed from you: the reversal is already in progress and the funds return to your settlement account when it is confirmed.
For a return, arranging a fresh withdrawal is the way forward — the original order is terminal once confirmed and is not retried automatically. Fix the beneficiary details with Waffo first, since the same account will otherwise return the funds again.
Still stuck? Contact support with the withdrawal order id — it is the Business Id on any related Account History row.