BlogStripe billing

How to check customer outstanding balances in Stripe

Short answer: use open invoice amounts for collections work, then review the customer invoice-balance ledger in the same currency. They answer different questions: an invoice can still have an amount remaining, while a separate customer credit or debit is queued for a future invoice. Keep cash balance separate too.

Customer Balance SummaryExplore Workestic's planned read-only workflow for reviewing open invoices, credits, debits, and net customer balances.

View planned workflow

Keep three Stripe values separate

A useful review starts by naming the value on screen. The open invoice amount is the amount still remaining on selected invoices. The customer invoice balance is Stripe's immutable ledger of customer balance transactions; Stripe applies its credit or debit to a future finalized invoice under its documented rules. A customer with bank-transfer activity can also have a cash balance, which is a separate object. Treating those three values as one unlabeled "balance" can make a collection queue look wrong.

Start with the question you need to answer. For "which invoices need follow-up?", review open invoices and their amount_remaining. For "why will the next invoice change?", inspect the customer invoice-balance ledger. For bank-transfer funds, check the customer's cash-balance context separately. Stripe documents these distinctions in its customer invoice balance guide.

Why Stripe balances can be hard to read

Stripe stores related billing evidence in different records. Open invoices show what has not been paid. Credit notes can reduce a finalized invoice and can also create a customer-balance credit. Customer balance debits and credits can affect a later invoice. For finance and support teams, the practical question is usually not "which object changed?" but which documented value supports the next action.

Start with open invoices

Open and past-due invoices are the clearest starting point. Review the customer, invoice status, due date, currency, and amount remaining. If you only need to answer whether a single invoice is unpaid, the invoice view is enough.

For account-level work, group open invoice amounts by customer. This prevents the common mistake of chasing one invoice while missing that the same customer has several smaller unpaid invoices.

Then check credits

Do not assume every credit changes the same number. Stripe says a credit note first reduces the finalized invoice's remaining amount, up to zero. Any excess can become a customer balance credit for a future invoice, be refunded, or be recorded as an out-of-Stripe credit. Before contacting a customer, link the credit note to its invoice and identify which of those outcomes Stripe recorded.

A useful report can show credits beside invoice context, but it should keep the columns distinct rather than automatically subtract every credit from today's open-invoice total. Stripe's Credit Notes API can be filtered by customer or invoice when a reviewer needs the linked record.

Do not ignore debits and adjustments

Stripe treats a positive customer invoice-balance amount as a debit and a negative amount as a credit. Both belong to the customer invoice-balance ledger and normally apply to a future finalized invoice, so they should not be silently folded into the remaining amount on an already-open invoice. These entries matter when support explains a future amount due or when an account does not match a simple unpaid-invoice total.

Use two labeled summaries instead of one formula

Do not force open invoices, invoice-balance transactions, and cash balance into one universal formula. For a collections queue, the safe summary is:

Amount requiring invoice follow-up = the sum of amount_remaining on the selected open invoices, grouped by customer and currency.

Put the current customer invoice-balance ledger amount in a separate, clearly labeled field with its currency and retrieval time. The exact accounting treatment depends on how the Stripe account uses credits, debit notes, currencies, and revenue recognition. Finance and support can still use the two summaries together without implying they are the same value.

What to include in a Stripe customer balance report

Make each review row auditable

Use source identifiers instead of a single unexplained net number. An invoice-oriented row should retain the customer ID, invoice ID, status, currency, due date, and amount_remaining. A customer-balance row should retain the transaction ID, type, amount, currency, ending_balance, creation time, and any linked invoice or credit note. Those fields make it possible to open the original Stripe record when a customer asks why a number changed.

Keep currencies in separate totals and label the report's as-of time, live/test mode, and pagination completion. Do not convert currencies, decide that an invoice is collectible, or turn a support view into an accounting ledger without the business's own policy. This limited record set gives finance a traceable review queue while leaving credits, refunds, and balance adjustments to an authorized operator in Stripe. An as-of time matters because the balance can change after a list request begins. When Stripe returns another page of transactions, do not mark the history complete until the cursor sequence is finished. Keep that completion marker alongside the exported rows rather than in a separate operator log.

When a plugin is better than manual checks

Manual Stripe searches work for a single customer. They get slow when a team needs to review hundreds of customers, prepare collections work, or answer support questions quickly. A focused reporting plugin can keep the workflow inside Stripe while presenting open invoices, credits, debits, and outstanding balances in one read-only view.

Manual workflow: checking balances customer by customer

The manual Stripe workflow is to open a customer, inspect open invoices, check credits, review debits, and then decide whether the balance is collectible, expected, or just an accounting artifact. That works for a single account. It becomes slow when support or finance needs to triage dozens of customers before a billing review.

A useful customer balance report should show the amount, the direction of the balance, the related invoice context, and the customer record in one view. The goal is not to replace accounting policy. The goal is to make the next action obvious.

Reconcile a customer without changing Stripe data

  1. Choose the customer, live or test mode, reporting currency, and as-of time before comparing records.
  2. List that customer's invoices, filter to the statuses relevant to the review, and preserve each open invoice's remaining amount and due date.
  3. List the customer's balance transactions and retain the type, amount, currency, ending balance, linked invoice or credit note, and timestamp.
  4. Review linked credit notes separately, then record any unresolved difference for the finance owner instead of creating an adjustment from the report.

Stripe lists invoices newest first and lets reviewers filter the invoice list by customer and status. Its customer-balance endpoint returns up to 100 transactions per page, so a complete history needs cursor-based pagination. Preserve the report's retrieval time and page-complete status: otherwise a partial result can look like a zero balance. See Stripe's invoice-listing reference and customer balance transaction reference for the available filters and cursors.

Where teams get stuck

How to troubleshoot a balance that does not match

Reconcile the components before changing the customer record. Confirm that the report and invoice view use the same customer, currency, status set, and review time. Then compare open invoice amounts with credits, debits, credit notes, and recent adjustments one category at a time. Do not count a credit both as an invoice reduction and as a separate balance offset. If the operational balance still differs from the accounting view, keep the discrepancy visible and hand it to the finance owner instead of forcing the report to match. The report is designed to explain the Stripe-side customer position and support the next review; it does not replace the team's accounting policy or revenue-recognition process.

Customer balance review checklist

Customer Balance Summary is Workestic's planned read-only workflow for customer balance checks across invoices, credits, and debits. Request access to follow availability.

View planned workflow