Credit-card statements

A client's business card statement is not a bank statement. The signs flip, the subtotals lie in wait, and many issuers print no running balance. Here is how each of those is handled, and how the rows land in a credit-card account in Xero or QuickBooks.

Last updated September 10, 2026

What comes out

Upload the PDF, scan or photos of a client's card statement and you get the same eight exports as a bank statement: XLSX, CSV, a three-column CSV for an accounting import, QBO, OFX, QFX, QIF and JSON. Each transaction row carries the date, the description as printed, and the amount in the column the credit-card account in your accounting software expects, so the month's card spend goes into the books with the same check behind it as the bank account.

Purchases and fees

Exported as debits (money out). They increase what you owe.

Payments and refunds

Exported as credits (money in). They reduce what you owe.

Subtotals and headers

"Previous balance", "Total purchases", section subtotals and interest summaries are excluded so they are not imported as transactions.

The sign convention

On a bank statement, the balance is money you have: a deposit increases it, a payment reduces it. On a card statement, the balance is money you owe: a purchase increases it, a payment reduces it. If a converter treats both the same way, every card import lands in your books with the signs reversed, and the first sign of trouble is a liability account that goes the wrong way.

We detect a credit-card statement from its structure (previous balance, payments, purchases, new balance) and flip the convention accordingly. In the export, purchases are in the debit column and payments in the credit column, which is what Xero, QuickBooks and most CSV importers expect for a credit-card account. If your setup wants it the other way round, the JSON export carries the raw signed amount so you can map it yourself.

What the check does on a card statement

Our balance check rebuilds the running balance from the transactions and compares it with the balance printed on every line. Bank statements print that balance on every line. Most card statements print a previous balance at the top, a list of transactions, and a new balance at the bottom, so the check works against the totals instead and the badge says which of the two it did.

What the statement printsWhat we can checkBadge
A running balance on every lineEvery line and the closing totalBalances reconciled
Previous balance, transactions, new balancePrevious balance + purchases + fees + interest − payments − refunds = new balanceClosing total checked
Transactions only, with no figure to tie them toThe rows are extracted; there is no printed arithmetic to reconcile againstCheck unavailable

The badge always says which of those three happened, and the status travels into the export on every row. A file that had nothing to check against is never dressed up as one that passed, which is the whole point of showing the badge at all.

A short example

A card statement with a previous balance of 812.40, three purchases (54.99, 120.00, 18.75), one payment (500.00) and a new balance of 506.14.

Line as printedExported asDebitCredit
Previous balance 812.40excluded (opening figure, used for the check)
Payment received −500.00transaction500.00
Grocery store 54.99transaction54.99
Airline ticket 120.00transaction120.00
Coffee 18.75transaction18.75
Total purchases 193.74excluded (subtotal)
New balance 506.14excluded (closing figure, used for the check)

Check: 812.40 + 193.74 − 500.00 = 506.14. That matches the printed new balance, so the badge reads "closing total checked": the arithmetic ties end to end, and the statement prints no per-line balance to go further with. Four rows go into your books, not seven.

Things that trip up card imports

  • Interest and fees are transactions and are exported as debits. Some issuers list them in a separate section; we pick them up and keep them in date order.
  • Foreign-currency purchases are exported in the statement's billing currency, which is what the issuer charged you. The original-currency amount is left in the description as printed.
  • Installment plans (a purchase split across months) appear as the monthly installment charged, because that is what hits the balance.
  • Multiple cards on one statement (primary and supplementary cardholders) are exported as a single list in date order, matching the one account the issuer billed. Split them by cardholder in your spreadsheet if your books need them apart.
  • Screenshots from a card app carry no previous balance and no closing total, so the export marks the check unavailable. Use the issued statement PDF where the arithmetic is printed.

Getting it into your software

Import a card statement into a credit-card type account, not a bank account, so the signs land correctly. Xero: add the card as a bank account of type credit card, then Import a Statement with the OFX. QuickBooks: Upload from file with the QBO into the credit-card account. Anything else: CSV, mapping the debit column to purchases. Step-by-step paths are on the formats page.

A worked example, from the PDF to the rows in the spreadsheet, is in converting a credit-card statement to Excel.

Convert one and see

Three pages a day are free, and you don't need an account to run your own statement through it.