Skip to content

Customer Cash Balances & Wire Reconciliation

This is the reconciliation exception Adventive hits most often, and the reason this SOP exists. An inbound wire or ACH arrives short of the invoice total because SWIFT or intermediary-bank fees were deducted in transit. Stripe cannot match the deposited amount to any open invoice, so the funds sit unapplied in the customer’s cash balance and the invoice stays open. The standard fix is to issue a pre-payment credit note for the fee shortfall, which drops the invoice’s amount due to the deposited amount so Stripe can automatically reconcile.

When a customer pays by bank transfer, ACH credit transfer or domestic/international wire, the funds do not attach directly to an invoice the way a card charge does. They first land in that customer’s cash balance: money Stripe is holding for the customer that has not yet been applied to a specific invoice. Stripe then attempts to reconcile the balance against the customer’s open invoices.

Stripe reconciles inbound bank transfers in a defined order:

  1. Reference (memo) match. If the transfer memo carries an invoice number, Stripe reconciles to that invoice: and a direct reference match bypasses the 30-day-overdue limit.
  2. Exact amount match. With no reference match, Stripe looks for the oldest open invoice whose amount exactly equals the amount received, and reconciles to it. Amount-based matching only considers invoices that are open or less than 30 days overdue.
  3. No match → unapplied. If neither matches, the funds remain in the cash balance as unapplied, waiting for reconciliation.

With automatic reconciliation enabled on the account, Stripe performs steps 1 to 2 on its own and, on a match, applies the funds and marks the invoice paid. When it cannot match, the funds stay unapplied until an operator acts.

The usual cause is fees taken in transit. On an international wire, the sending bank, one or more SWIFT / intermediary correspondent banks, and sometimes the receiving side each deduct a fee. The customer sends the full invoice amount, but Stripe receives that amount minus those fees. The deposited figure no longer equals any open invoice, so the exact-amount match in step 2 fails and the funds sit in the cash balance.

Note, This is a shortfall, not a customer underpayment The customer paid in full; the wire simply arrived light by the fee amount. The goal of the procedure below is to record the fee as a reduction of what’s collectible so the invoice reflects reality, not to chase the customer for the difference.

Wire arrives short by SWIFT fee, standard resolution 1 · Customer wires the invoice total Invoice INV-1042 is open for $10,000.00 − $45.00 SWIFT / intermediary fees 2 · Stripe receives $9,955.00 → cash balance No open invoice equals $9,955.00, so the exact-amount match fails. Funds sit unapplied; INV-1042 stays open. 3 · Operator issues a pre-payment credit note Credit note on INV-1042 for $45.00 (the fee). Amount due drops $10,000.00 → $9,955.00. 4 · Stripe auto-reconciles → invoice paid Amount due ($9,955.00) now equals the cash balance. Stripe applies the funds and marks INV-1042 paid. Cash balance returns to $0.00; event syncs to QuickBooks. INV-1042 · ledger view

Before Invoice total … $10,000.00 Cash received … $9,955.00 (unapplied) Amount due … $10,000.00 status: open

Action: pre-payment credit note -$45.00 Memo: SWIFT/intermediary wire fee, ref wire 8842

After Invoice total … $10,000.00 Credit note … -$45.00 Cash applied … -$9,955.00 Amount due … $0.00 status: paid

Cash balance: $0.00 · reconciled automatically

Perform this in the Dashboard, in live mode. The example figures ($10,000.00 invoice, $45.00 fee, $9,955.00 received) are illustrative; use the real numbers from the transfer.

Step 1, Confirm the funds and the shortfall. Open the customer from Customers, and view Cash balance on the customer detail. Confirm the deposited amount is present and unapplied. Note the exact amount received.

Step 2, Identify the target invoice and compute the fee. Find the customer’s open invoice the transfer was meant to pay (match by the customer’s remittance advice or the wire memo/reference). The fee shortfall is:

fee shortfall = invoice amount due - amount received

Confirm the shortfall equals plausible wire/SWIFT fees (typically a modest fixed amount). If the shortfall is large or does not look like a fee, stop and treat it as a genuine partial payment or misdirected wire, see Exceptions below.

Step 3, Issue a pre-payment credit note for the fee. Open the target invoice, choose More → Issue a credit note. Add a single line item (or a custom amount) equal to the fee shortfall, in the example, $45.00. In the memo, record that this is a SWIFT / intermediary-bank wire fee and reference the wire (for example SWIFT/intermediary wire fee, ref wire 8842) so the reason is auditable later. Because the invoice is open, this pre-payment credit note reduces the invoice’s amount due; it records no payment itself.

Step 4, Let Stripe reconcile, then verify. After the credit note posts, the invoice’s amount due equals the deposited cash balance. With automatic reconciliation enabled, Stripe applies the cash balance to the invoice and moves it to paid; the customer cash balance returns to zero. Confirm on the invoice detail that the status is paid, the credit note and the applied payment both appear, and the cash balance is cleared.

Note, If the invoice does not move to paid If the funds do not apply automatically within a few minutes, the account may be in manual reconciliation, or the received amount may still not match. Reconcile manually: on the invoice’s Payments section (or the customer cash balance view), apply the unapplied funds to the invoice. Verify the resulting amount due is $0.00. Do not re-issue the credit note.

Step 5, Confirm the downstream sync. Stripe emits events for the credit note and the payment; Acodei posts the corresponding entries to QuickBooks. No manual QuickBooks entry is required, but confirm the invoice reflects as paid downstream during the normal close. See Integration Overview for the sync path.

FieldValue
InvoiceINV-1042, open
Invoice amount due$10,000.00
Wire received (after fees)$9,955.00
Fee shortfall$45.00
ActionPre-payment credit note on INV-1042 for $45.00, memo “SWIFT/intermediary wire fee, ref wire 8842”
ResultAmount due → $9,955.00 → cash balance auto-applied → INV-1042 paid, cash balance $0.00

Critical, Match the credit note to the fee, nothing more The credit note amount must equal the fee shortfall exactly. Over-crediting writes off revenue the customer actually paid; under-crediting leaves a residual amount due and the invoice will not reconcile. Recompute invoice amount due − amount received before issuing.

  • The shortfall is not a fee. If the difference is large, a round number, or otherwise does not resemble bank fees, the customer likely underpaid or the wire was misapplied. Do not paper over it with a credit note: investigate the payment and, if needed, apply the partial funds and leave the balance due.
  • Multiple open invoices. If the customer has several open invoices, confirm which one the wire was intended for (memo/reference or remittance advice) before crediting. Crediting the wrong invoice creates two problems to unwind.
  • Invoice more than 30 days overdue with no memo reference. Stripe’s amount-based auto-match ignores invoices over 30 days overdue, so even after the credit note it may not auto-apply. Reconcile manually (apply the cash balance to the invoice): a memo reference match would have bypassed this, so encourage customers to include the invoice number on wires.
  • Never void a partially funded invoice. Voiding to “clean up” a short-paid invoice orphans the cash balance and loses the audit trail. Use the credit note path so the invoice, the credit, and the applied payment all reconcile and sync downstream.
  • Always work in live mode. Confirm the test-mode toggle is off before issuing any credit note.