> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Where Refund Money Comes From

> Which of your Waffo balances a refund is actually drawn from, in what order, why a refund can fail with insufficient balance right after a settlement paid out, how a refund reserve account prevents that, and why none of this changes the refund API.

A refund moves money **out** of your Waffo balances, so it can fail for a reason
that has nothing to do with the original order: there is nothing to take it from.
This page explains which balance is used, in what order, and what to do when a
refund is rejected for funds.

For everything else about refunds — partial refunds, retries, cross-currency
amounts, fee returns — see [Refund FAQ](/docs/en/support/refund-faq). For what each
balance is, see
[Balances & Account History](/docs/en/support/balance-and-account-history-faq).

## Which balance is a refund taken from?

In this order. The first source that can cover the refund is used, and the search
stops there:

| Order | Source | Condition |
| - | - | - |
| 1 | **Pending-settlement balance** | Its available balance **including any overdraft allowance on that account** covers the refund |
| 2 | **Refund reserve account** | You have an active refund reserve arrangement for that merchant account, entity and currency, **and** that account's available balance including its own overdraft allowance covers the refund |
| — | Neither | The refund is rejected with `A0012` — *Insufficient merchant account balance* |

Three details that decide most real cases:

* **Overdraft is part of step 1, not a step of its own.** Your pending-settlement
  account carries an overdraft allowance, and the check at step 1 already counts
  it. So a refund can succeed and push that balance negative — that is the
  designed behaviour, and the negative is cleared by your next incoming
  transactions.
* **The refund reserve account is a fallback, not the preferred source.** It is
  only consulted once the pending-settlement balance and its overdraft allowance
  are both exhausted.
* **The refund reserve step is gated on an active arrangement.** With no active
  refund reserve arrangement for that currency, there is no step 2 — the refund
  fails as soon as step 1 cannot cover it.

## Which currency's balance is checked?

The one the refund is in. Balance checks are **per currency**, against the
account held in that currency for your merchant account and legal entity.

This matters if you transact in several currencies: a healthy balance in one
currency does nothing for a refund in another. Funds are not swept between
currencies to cover a refund, and there is no cross-currency fallback in the
selection above — a refund in a currency whose balance is empty fails even
while your other currencies are well funded.

The same applies to the refund reserve account: the active-arrangement check is
made for that specific currency, so a refund reserve arrangement covering one
settlement currency does not extend to another.

## Why did a refund fail with insufficient balance the day after a settlement?

Because settlement empties the balance refunds are drawn from.

Your funds sit in the pending-settlement balance until their settlement date,
then move out to your settlement account and on to your bank. Once a settlement
has run, the pending-settlement balance can be at or near **zero** — and a refund
requested at that moment has nothing to draw on beyond the overdraft allowance.

This is why refund failures cluster right after a settlement payout, and why they
look inexplicable when the original order settled successfully weeks ago. The
order is fine; the balance is empty.

Your options:

| Option | Effect |
| - | - |
| Wait for new transactions | Incoming payments top the pending-settlement balance back up, and the refund then succeeds on retry |
| Top up the pending-settlement balance | The classic fix — but it means a funding transfer every time the timing works out badly |
| Set up a **refund reserve account** | Pre-fund an account dedicated to refunds, and step 2 above covers you without any per-incident action |

A refund reserve account exists precisely to remove the wait-or-top-up choice: it
is prepaid, it is only used for refunds, and it carries its own overdraft
allowance. Talk to your Waffo account manager about whether one makes sense for
your refund volume.

## A refund failed for funds. Can I just retry it?

Yes. An insufficient-funds rejection happens **before the refund order is
created**, as a pre-flight check — so nothing was booked, nothing is half-done,
and there is no state to clean up. The original order is untouched and its
refundable amount is unchanged.

Retrying is therefore safe, and it is the normal resolution: retry once funds are
available. Follow the same idempotency practice you would for any refund retry so
that a retry after an ambiguous response cannot double-refund — see
[Refund FAQ](/docs/en/support/refund-faq).

What a retry will **not** do is queue. There is no pending state for a refund that
could not be funded: it is rejected outright, and nothing happens automatically
when your balance later recovers. If you need the refund to go out as soon as funds
arrive, you have to re-issue it yourself.

## Does an overdraft allowance mean a refund can never fail?

No. An overdraft allowance is a limit, not an absence of one.

The check at each step is *balance plus that account's overdraft allowance*
against the refund amount — so a refund larger than that combined figure still
fails, and it fails the same way, with `A0012`. What the allowance buys you is
tolerance for the common case of a balance that has just been emptied by
settlement; it is not an unlimited line.

Two consequences:

* A large refund can fail while smaller ones on the same account succeed. The
  check is per refund, against the full amount — refunds are not partially funded
  from one source and topped up from another.
* Once the pending-settlement balance is negative, the remaining allowance is
  smaller, so subsequent refunds have less room. A burst of refunds against an
  empty balance will start failing part-way through the burst rather than all at
  once.

## Does any of this change my settlement or withdrawal?

Not directly, but a negative pending-settlement balance has a knock-on effect
worth knowing about.

* **Settlement**: refunds are netted into your settlement calculation as `REFUND`
  transactions regardless of which account funded them. If a period's refunds
  outweigh its payments, the period nets negative and carries forward — see
  [Settlement Calculation Explained](/docs/en/support/settlement-calculation-explained).
* **Withdrawal**: withdrawals draw on your settlement account, not on the
  pending-settlement balance, so a refund does not directly reduce what you can
  withdraw today. It reduces what will settle into that account later.

## Can I choose which balance a refund comes from?

No, and you do not need to. The selection happens entirely server-side.

* The refund API's **request fields are unchanged** — there is no parameter for
  the funding source, and nothing to add to your integration.
* The refund API's **response fields are unchanged** — the chosen source is not
  returned, in the create-refund response or in a refund inquiry.
* The behaviour is the same whether you refund through the API, through a batch
  refund file, or from the Merchant Portal.

The practical consequence: **if you already integrated refunds, a refund reserve
account requires no code change from you at all.** It changes where the money
comes from, not how you ask for it.

One field that *is* on the refund API and is easy to mistake for this:
`refundSource` describes **who initiated** the refund (you, or one of the
dispute-prevention services that can auto-refund on your behalf). It has nothing
to do with which balance funds it.

Where the funding source does become visible is after the fact, in your
reconciliation data: the settlement and ledger records distinguish a refund
funded from the pending-settlement balance from one funded out of the refund
reserve account, so you can tell them apart when you reconcile.

## Does a batch refund check balances differently?

No — a batch refund runs the same check, per row, before the refund order is
created. A row that cannot be funded is rejected with the same insufficient-funds
condition rather than being queued for later.

The consequence for batch planning is that you should size a batch against your
**pending-settlement balance plus overdraft allowance plus refund reserve balance
at the time of upload**, not against the total value of the orders you are
refunding. See [Refund FAQ](/docs/en/support/refund-faq) for how a rejected row
affects the rest of the batch.

## Can a refund be taken out of my contractual reserve?

The **rolling or fixed reserve held under your contract** is a different thing
from a refund reserve account, despite the similar name:

| | Refund reserve account | Contractual reserve (rolling / fixed) |
| - | - | - |
| Purpose | Pre-funded source for refunds | Risk cover held back under your contract |
| Who puts money in | You, by topping it up | Withheld automatically from each settlement |
| Comes out automatically | Yes, as refund fallback | No |
| Where you see it | Refund reconciliation records | Portal **Reserve Account** module |

See [Reserve Accounts](/docs/en/support/reserve-faq) for the contractual reserve. Note
that the two are asked about interchangeably in support tickets — if you are
being told "your reserve can/cannot fund refunds", establish which of the two is
meant first.

## Where does a chargeback take its money from?

A chargeback and its chargeback fee are debited **at settlement time, against
your pending-settlement balance**, and both travel through the same path — the
fee is not funded differently from the amount.

Because that balance is overdraftable, a chargeback is not blocked by an empty
balance the way a refund is: it is allowed to push the balance negative, and the
negative is cleared by later incoming funds. If the whole settlement period nets
out negative, no funds move that day and the amount carries forward — see
[Settlement Calculation Explained](/docs/en/support/settlement-calculation-explained).

The contractual reserve is not drawn on for a chargeback either.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.