Guide · about an hour of setup, then a day of waiting
A test run with test money, from the shop to the bank
This guide opens three test accounts, makes a few test sales with problems built in on purpose, and checks that Matchwright finds each problem. No real money moves at any point: every account here is a practice copy that the provider keeps apart from real payments.
1
Shop
WooCommerce records the order: what was sold, for how much, refunded or not.
2
Stripe
Takes the card payment, keeps its fee, and every working day pays the rest out to the bank.
3
Bank
Revolut Business receives Stripe's payout. The statement shows it arrived.
Matchwright checks the three against each other: every order has its payment in Stripe, every payout is the sum of its payments, and every payout reached the bank. Anything that does not tie out is listed with the amount and what to do.
Words used here
- Test account (Stripe calls it a sandbox)
- A practice copy of the service. It looks and works like the real one, but cards are fake and no money moves.
- Test card
- A card number the provider publishes for practice, such as 4242 4242 4242 4242. It only works in a test account.
- Payout
- Stripe's transfer of collected money, minus its fees, to the company's bank account. It has a number that starts with
po_.
- Key
- A long password that lets a program read the account for you. Matchwright uses it to download two reports from Stripe. Treat it like a password.
- Application password
- A separate password that WordPress makes for one program only. You can cancel it at any time without changing your own login.
- camt.053
- The standard bank statement file (XML) that banks in the Baltics and Europe export. Matchwright reads the bank side from it.
Part 1
Stripe test account
Stripe processes the card payments. You need a test account and a key that lets Matchwright read its reports. You do not need a company, a bank account or any documents for this.
-
Create a Stripe account
Go to dashboard.stripe.com/register, enter your email, name and a password, and confirm the email when Stripe asks. Stripe then asks for business details: you can skip them. They are needed only to take real payments.
-
Open a sandbox
Click the account name in the top left corner, choose Switch to sandbox, then Create sandbox. Name it, for example, Matchwright test, choose Create an account from scratch and click Create sandbox.
From now on, check that the dashboard says Sandbox before you do anything. Everything in this guide happens inside the sandbox.
-
Check where payouts go
In the sandbox, open Balances. If Stripe shows a payout schedule (for example daily), there is nothing to do. If it asks for a bank account for payouts, add one with the IBAN that Stripe lists for testing, DE89 3704 0044 0532 0130 00. It is a made-up account that only works in test mode; nothing is ever sent to it.
-
Make a key for Matchwright
Open Developers → API keys and click Create restricted key. Name it Matchwright. In the long list of permissions, leave everything at None except these three (use your browser's search, Ctrl+F or ⌘+F, to find each name):
| Permission | Set to | Why |
| Report runs | Write | to ask Stripe to prepare the two reports |
| Report types | Read | to see which days the reports cover |
| Files | Read | to download the finished reports |
Click Create key, confirm with your second factor if Stripe asks, and copy the key. It starts with rk_test_. Keep it somewhere safe, like a password: in a password manager, not in an email.
The sandbox's Secret key (it starts with sk_test_, on the same page) also works, but it can do everything in the test account, not only read reports. The restricted key is the safer habit. Live keys (sk_live_, rk_live_) are refused by Matchwright Live.
Part 2
WooCommerce test shop
The shop is the order ledger: the record of what was sold and refunded. For the test you need a WordPress site with WooCommerce, connected to the Stripe sandbox from Part 1, so that every test order pays through Stripe.
-
Get a WordPress site to practise on
The site must open on https:// (with the lock in the address bar). Any of these works:
- A staging copy of your real shop. Most WordPress hosts have a Staging button that copies the site to a private address. It already has your products. Before testing, make sure its Stripe settings point to the sandbox, never to your real Stripe account (step 4).
- A free temporary WordPress site from a service such as TasteWP or InstaWP. They delete the site after a set time and some ask for a card to sign up; check their terms. Note the address, user name and password they give you.
- A test shop on a developer's computer. Matchwright's developers keep a ready-made one with the right settings. It is the quickest if a developer is helping you.
-
Install WooCommerce
In the WordPress admin, open Plugins → Add New Plugin, search for WooCommerce, click Install Now, then Activate. When WooCommerce offers its setup wizard, you can choose Skip guided setup.
Then open WooCommerce → Settings → General, set Currency to Euro (€) and click Save changes.
-
Add two products
Open Products → Add New. Give it a name and a Regular price, and click Publish. For the test run below, make two:
| Product name | Regular price |
| Consultation | 49.00 |
| Annual report | 450.00 |
Tick Virtual on both products so the checkout does not ask for shipping.
-
Connect the shop to the Stripe sandbox
In Plugins → Add New Plugin, find WooCommerce Stripe Payment Gateway (made by WooCommerce), install and activate it.
Open WooCommerce → Settings → Payments and open Stripe (the button says Complete setup on a fresh install, Manage later). In Account details, click Configure connection and go to the Test tab. Choose Create or connect a test account, sign in to Stripe with the account from Part 1 and pick the sandbox. You come back to WordPress when it is done.
If the Test tab offers to enter keys by hand instead, use the sandbox's Publishable key (pk_test_…) and Secret key (sk_test_…) from Developers → API keys in Stripe.
Check the plugin's Account details: it should say test mode, and Webhook should be Enabled. The webhook is how Stripe tells the shop about a chargeback; without it the shop never learns of one.
-
Turn on bank transfer (optional)
In WooCommerce → Settings → Payments, enable Direct bank transfer. One order in the test run is paid this way, to show how Matchwright looks for it on the bank statement instead of in Stripe.
-
Make an application password for Matchwright
Open Users → Profile (your own user; it must be allowed to manage WooCommerce, and an administrator always is) and scroll down to Application Passwords. Type Matchwright as the name and click Add New Application Password.
WordPress shows the password once, in groups of four characters. Copy it now; it cannot be shown again. Matchwright also needs your user name: the name you log in to WordPress with, shown at the top of the same page.
If the Application Passwords section is missing, the site is not on https, or the host has switched the feature off. Ask the host, or use another test site.
Part 3
Revolut Business test account
The bank is the last check: did Stripe's payout really arrive? Matchwright reads the bank side from a statement file, so for Revolut Business all you need is the statement in XML (Camt.053) format.
-
Create the test account
Go to sandbox-business.revolut.com/signup. Your real Revolut login does not work here: this is a separate practice bank. Any name, email and country will do, they are treated as made up.
When it asks to confirm your email, click Skip email verification in the top right corner. When it asks for a code, click Autofill code. The account is approved straight away. Next time, log in at sandbox-business.revolut.com/signin.
-
Understand where its money comes from
Stripe's test payouts are not sent anywhere real, so they never land in the Revolut test account on their own. Money appears in a Revolut test account only when it is put there with Revolut's developer tools (a simulated top-up). For the test run, the Matchwright team makes these top-ups for you: one per Stripe payout, with the same amount and the payout number in the reference, exactly as a real Stripe payout arrives.
So after the payout appears in Stripe (see the test run, day 2), send the team the payout number (po_…), its amount, and the name of your Revolut test account. They can then also give you the statement file, or you download it yourself as in the next step.
-
Download the statement as XML (Camt.053)
In Revolut Business, go to Home, click … (three dots) → Statements → Account statement. Choose the EUR account, the period of the test (from the day of the first test sale to today), file type XML (Camt.053), and click Generate. Do not pick CSV, PDF or MT940: Matchwright reads the XML.
These are the steps of the real Revolut Business. If the test account does not offer the XML statement, ask the Matchwright team for the file. For your real account later, the same steps give you the real statement.
Part 4
The test run
Eight test orders, each with a different situation an accountant meets at month end. You make them as a customer would, then change some of them in the shop admin. It takes about 20 minutes.
Day 1, Monday to Thursday
Make the sales
Stripe pays out on working days, so a sale on Friday is paid out on Monday. Open the shop in a private browser window, so you buy as a customer and not as the admin. Make the eight orders in the table below, then do the follow-up steps in the shop admin.
Day 2, after midday
Wait for Stripe
Stripe prepares its reports once a day: a day's payments are usually in the reports by midday the next day. In the sandbox, open Balances → Payouts: a payout for order B should appear within a day or two. Send its number and amount to the Matchwright team for the Revolut top-up.
Day 2 or 3
Reconcile
Once the payout is in Stripe and the top-up is in Revolut, load all three sides into Matchwright Live (Part 5) and compare what you see with the list in Part 6.
Paying with test cards
At checkout, choose to pay by card. For every test card: expiry date any date in the future (for example 12/34), CVC any three digits (for example 123), any name and postcode.
Write down the order numbers the shop gives each sale (for example #31 for A). Matchwright shows problems by order number.
Part 5
Load everything into Matchwright Live
Open Matchwright Live. Everything below happens in your browser tab: your files are not uploaded, and the key and password go straight to Stripe and to your shop, are used once and are not stored.
-
Set the timezone, the Stripe price and the bank fee
At the bottom of the Files page, check that Timezone of the reports is Europe/Riga (or your own). Leave Card fee in your Stripe contract at 1.5% + 0.25 EUR: that is Stripe's standard price for European cards, which the sandbox charges too.
Leave Largest bank fee taken from a payout at 35.00. A bank can keep a fixed fee when it passes on a transfer, so the credit on the statement is a little short of the Stripe payout. If the credit is short by up to this amount, Matchwright takes it as that payout, less the bank's deduction, and shows it as Amount differs on the Payouts tab. A credit larger than the payout is never matched this way.
-
Your orders: load from WooCommerce
In the box 1 Your orders, click Load from WooCommerce and fill in:
| Shop address | the test site's address, for example https://my-test-shop.example.com |
| User name | your WordPress user name |
| Application password | the password from Part 2, step 6 (with or without the spaces) |
| From | the day of the first test sale |
| To, inclusive | leave empty |
Click Load orders. A chip with the shop's ledger appears in the box.
-
Stripe: load the reports
In the box 2 Stripe, click Load from Stripe, paste the rk_test_ key from Part 1, set From to the day of the first test sale, leave To empty and click Load reports. Stripe takes about half a minute to prepare two reports: one with every payment, refund and fee, and one with what went into each payout.
-
Bank: drop the statement
Drag the Revolut XML file onto the dashed area Drop files here, or click choose files. Matchwright recognises it as a bank statement by what is inside, whatever the file is called; it appears in the box 3 Bank.
-
Reconcile
Click Reconcile. The result opens on Overview: the verdict, the path from sales to the bank, and the largest open items. Open items lists every difference; Orders follows each order from the shop to the bank.
Part 6
What you should see
The verdict should be not ready to close: the test run has problems on purpose. Each order should end up like this.
If you load the Stripe reports before the top-up is in Revolut, the Payouts tab shows Not on the bank for that payout. If you load without the bank statement, the Payouts tab shows No statement, and the verdict lists no bank statement was given, so payouts were not checked. That is correct; load again when the payout and the top-up are there.
If something goes wrong
- “That is a live-mode key.”
- You copied a key from the real Stripe account. Switch to the sandbox (Part 1, step 2) and make the key there.
- “The shop did not answer this page.”
- Check the shop address: it must start with
https:// and open in the same browser. Some hosts and security plugins block programs from reading the shop; ask the host to allow requests to /wp-json/.
- The shop says the user name or password is wrong
- Use the WordPress user name, not your email, and the application password, not your login password. If in doubt, make a new application password.
- Stripe's reports are empty or miss the last day
- Stripe adds a day to its reports by midday of the next day. Load again later, or set To to yesterday.
- No payout in Stripe
- Payouts happen once a working day and only from money that is already available. Make sure order B was paid with the card ending
0077, and check Balances in the sandbox for a payout schedule (Part 1, step 3).
- Order F does not show the chargeback in the shop
- The dispute comes in seconds, sometimes before the shop has saved the payment, and the Stripe plugin then misses it. Matchwright still sees it in Stripe's report, which is exactly the kind of gap it is there to catch.
- The bank file is not recognised
- Make sure it is the XML (Camt.053) statement, not CSV, PDF or MT940.
When you are done
- Delete the Stripe key: Developers → API keys, the … menu next to Matchwright.
- Revoke the WordPress application password: Users → Profile → Application Passwords → Revoke.
- Test accounts cost nothing and can stay. The sandbox, the test shop and the Revolut test account are never mixed with real money.
- For your real data, the steps are the same with real exports: the shop's real address, Stripe reports downloaded from the real account, and the real Revolut statement in XML (Camt.053). Matchwright Live itself takes only test keys; real Stripe reports can be dropped in as files.
Open Matchwright Live