# Checkout.com to Xero month-end reconciliation workbench

> Line up each day of Checkout.com takings against what Xero says hit the bank, work only the days that disagree, and sign them off with an audit trail.

- Workflow type: app
- Services: Checkout.com, Xero, Google Sheets
- Categories: Finance, Operations
- Published: 2026-08-16

## What it does

- Shows a day by day list across any date range you pick, with the money Checkout.com actually captured, the refunds issued, the resulting net, what Xero says landed in the bank, and the gap between the two.
- Marks every day with a green tick when the two sides agree within a tolerance you set and a red flag when they do not, so you only open the days that need a human.
- Opens a side by side view for a problem day, pairs up the obvious matches for you by amount and date, and leaves only the genuine exceptions to be explained and tagged as a fee, a next day settlement or a chargeback.
- Posts the fee or adjustment into Xero as a journal or a receive money entry, always showing you a preview of the exact entry before anything is written to your books.

## What you'll need

- A Checkout.com account you can connect, using the secret key from your Checkout.com dashboard
- A Xero organisation, and knowing which bank account your Checkout.com payouts land in
- A Xero account to post fees and adjustments to, such as merchant fees or bank charges
- A Google Sheet where the sign off log should be kept, shared with whoever needs to read it

## Prompt

Build me an internal app that our finance person opens at month end to reconcile what Checkout.com actually processed against what Xero says landed in the bank. It is a working surface rather than a report: the whole point is to get quickly to the handful of days that disagree, explain them, and sign them off.

Settings the app holds and remembers between sessions: the date range being reconciled, the tolerance that decides whether two sides agree (an absolute amount, for example 1.00), which Xero bank account the Checkout.com payouts land in, which Xero account fees and adjustments should be posted to, and the Google Sheet id and tab name used for the sign off log. Populate the two account pickers from the Xero List Accounts operation so the user chooses from their real chart of accounts rather than typing a code.

The main view is a calendar style list of days across the chosen range. Each row is one day for one currency and shows: the date, the currency, the Checkout.com gross captured amount, the refunds issued, the resulting net, the matching Xero bank transaction total, and the variance between net and Xero. Show a green tick when net and the Xero total agree within the tolerance, and a red flag when they do not. Days already signed off should be visibly marked as signed. Rows with a red flag are clickable and open the day detail.

Build the Checkout.com side from Search Payments over the date range, following its cursor pagination to the end, then Get Payment Actions on each payment to read the capture, refund and void actions. Important feasibility constraint: do not try to pull a settlement report or an account balance, because listing reports and fetching balances are not available to this app. The processed figures must come from payments plus their actions. Key the reconciliation off the action timestamp rather than the payment creation date, since captures and refunds are asynchronous and often land on a different day from when the payment was created. Gross captured for a day is the sum of capture actions dated that day, refunds is the sum of refund actions dated that day, and net is gross minus refunds.

Amounts from Checkout.com are integers in the currency's minor unit, so 1000 means 10.00 GBP. Convert with a currency aware rule: most currencies are two decimal places, zero decimal currencies such as JPY and KRW use the major unit directly, and three decimal currencies such as BHD, KWD and OMR are the value divided by 1000. Group and total days by currency as well as by date, and never add different currencies together. Xero money fields are already decimals rather than minor units, so compare like for like after conversion.

Build the Xero side from List Bank Transactions, filtered to the selected bank account and the chosen date range, following its pagination. Total the receive money transactions per day to get the figure shown in the Xero column.

Clicking a day that disagrees opens a split view. On the left, every Checkout.com payment contributing to that day, each with its amount, status, reference and any refund actions, with a drill in that calls Get Payment Details for the full record. On the right, every Xero bank transaction for that day on the selected account. The app should pre match the obvious pairs automatically by comparing amount and date, allowing a match when the amounts agree within tolerance and the dates are the same day or one day apart, so that settled next day activity still pairs up. Show matched pairs collapsed and quiet, and surface the unmatched items on both sides as the exceptions that actually need a person. The user can also match or unmatch a pair by hand when the automatic guess is wrong.

For each exception the finance user picks a reason tag: processor fee, timing difference where the payment settled the next day, chargeback, or other with a free text note. Timing differences and fees carry most of the weight in practice, because payouts usually arrive net of fees and batch several days of activity together, so make those two the fastest tags to apply. Persist the tags and the match decisions per day so the work survives closing and reopening the app.

From an exception the user can write the correction into Xero in one of two ways: post a balanced journal using Create Manual Journals for a fee or an accounting adjustment, or record a receive money entry using Create Bank Transactions for money that arrived but was never recorded. Both must go through a confirmation preview first, showing the exact date, accounts, description or narration, and the debit and credit lines with their amounts, and both need an explicit confirm before anything is sent. Never post automatically as a side effect of matching or tagging. After a successful write, store the returned Xero id against that exception, show it in the row, and stop the same exception being posted twice.

Signing off a day appends a row to the configured Google Sheet using Append Values, containing the date, the currency, the gross captured, the refunds, the net, the Xero total, the variance, the reason tags applied that day, the name of the person who signed it, and the time they signed. On load, read the sheet with Get Values so days that have already been signed show as signed in the main list and are not appended twice; if a day is re signed after a correction, use Update Values to amend the existing row rather than adding a duplicate. The sheet is the audit trail the accountant reads without ever opening the app, so keep the columns stable and readable.

Attribute the sign off to the person using the app, and make the main list the landing view so the finance user lands straight on the days that need attention.

## How to customize

- Set the tolerance that decides a match, so tiny rounding differences pass but real gaps get flagged
- Choose which Xero bank account is reconciled and which account fees and adjustments are posted to
- Rename the reason tags to match how your accountant categorises differences, or point the sign off log at a different sheet or tab

## FAQ

### Why do my Checkout.com totals never match the bank exactly?

Payouts usually arrive net of fees and often batch several days of sales into one deposit, so a day of takings and a day of bank activity rarely line up one to one. Fees and timing differences are the two most common causes, and the app is built so you can tag exactly that and move on.

### Will the app change anything in my accounts on its own?

No. Nothing is written to Xero until you review a preview of the exact entry and confirm it. Marking a day as matched never posts anything by itself, so you stay in control of the books.

### Can it handle more than one currency?

Yes. Days are grouped by currency as well as by date, so a day with sales in pounds and euros appears as separate rows and the totals are never mixed together.

### Do I need to download a settlement report from Checkout.com first?

No. The app builds the processed side from your actual payments and the capture and refund activity on them, so there is no report to export, download or upload.

### How does my accountant see the sign off history?

Every day you sign off is added as a row to a Google Sheet you own, with the figures, the reasons and the name of whoever signed it. Your accountant can read it straight from Sheets without needing access to the app.

Use this prompt in General Input: https://www.generalinput.com/prompts/checkoutcom-to-xero-month-end-reconciliation-workbench