Test run guide Stripe, WooCommerce, Revolut Business

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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):

    PermissionSet toWhy
    Report runsWriteto ask Stripe to prepare the two reports
    Report typesReadto see which days the reports cover
    FilesReadto 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.

  1. 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.
  2. 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.

  3. 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 nameRegular price
    Consultation49.00
    Annual report450.00

    Tick Virtual on both products so the checkout does not ask for shipping.

  4. 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.

  5. 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.

  6. 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.

  1. 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.

  2. 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.

  3. 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.

OrderBuyPay withThen, in the shop admin
A. Clean saleConsultation, 49.00Latvian test card
4000 0042 8000 0005
Nothing.
B. Sale paid out next dayAnnual report, 450.00Test card that makes the money available at once
4000 0000 0000 0077
Nothing. This order makes Stripe pay out to the bank tomorrow; money from other test cards waits several days. It is the larger sale so that the refund and the chargeback below, which Stripe takes from the same balance, still leave something to pay out.
C. Refund done properlyConsultation, 49.00Latvian test cardOpen the order, click Refund, tick the line or type 49.00, click the button Refund €49.00 via … that names Stripe or the card, not the one that says manually.
D. Refund only written downConsultation, 49.00Latvian test cardOpen the order, click Refund, type 49.00, click Refund €49.00 manually. The shop records a refund, but no money goes back.
E. Cancelled, money keptConsultation, 49.00Latvian test cardOpen the order, change Status to Cancelled, click Update. Do not refund.
F. ChargebackConsultation, 49.00Test card that the cardholder disputes
4000 0000 0000 0259
Nothing. The payment goes through, then the customer's bank disputes it within seconds.
G. Declined cardConsultation, 49.00Test card that is always declined
4000 0000 0000 0002
Nothing. The checkout says the card was declined; close the page.
H. Bank transfer optionalAnnual report, 450.00Direct bank transfer instead of a cardOpen the order, change Status to Processing (as if the transfer arrived), click Update.

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.

  1. 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.

  2. Your orders: load from WooCommerce

    In the box 1 Your orders, click Load from WooCommerce and fill in:

    Shop addressthe test site's address, for example https://my-test-shop.example.com
    User nameyour WordPress user name
    Application passwordthe password from Part 2, step 6 (with or without the spaces)
    Fromthe day of the first test sale
    To, inclusiveleave empty

    Click Load orders. A chip with the shop's ledger appears in the box.

  3. 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.

  4. 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.

  5. 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.

OrderMatchwright showsWhy
A. Clean saleMatchedShop, Stripe and fee agree.
B. Paid out next dayMatched, and its payout received on the bank statementThe payout amount and reference are found in Revolut. The payout is not simply order B: Stripe also takes the refund of C and the chargeback of F out of the same balance. The Payouts tab shows every line in it. The card is American, so its fee is above the contract (see F).
C. Refund done properlyMatchedRefund in the shop and in Stripe, same amount. Stripe keeps its fee on a refund; it is listed under Fees kept on refunded payments.
D. Refund only written downRefund booked, but not sent through StripeThe customer has not had the money back.
E. Cancelled, money keptCharged for a cancelled orderThe shop cancelled it, but Stripe still holds the customer's money.
F. ChargebackCard dispute not booked in the ledgerThe customer's bank took the money back; the shop's books still show a sale. This test card is also American, as is B's, so a separate open item says their fees are above your 1.5% + €0.25 contract: Stripe charges more for cards from outside Europe. Stripe also charges a dispute fee, shown with the chargeback.
G. Declined cardnot counted as sales (status failed), in the ledger noteNo money moved, so there is nothing to match. The note under Files, on the ledger, lists the order with its number.
H. Bank transferNot checked
outside the statement's dates
A bank transfer is looked for on the bank statement, not in Stripe. Matchwright calls it missing only when the statement covers 14 days before to 5 days after the order, because customers pay early and late. A statement from the day of the sale is too short, so it stays unchecked; with a statement covering that whole range it becomes Bank transfer not on the statement, since the test account received no transfer.

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