The buyer's own payout export. These three rows are pinned into the contract, so acceptance never needed a Stripe key.
po_1PK7clean00012026-07-06 · two charges£1,457.40
po_1PK7refund00022026-07-13 · two charges and a refund£864.60
po_1PK7fxmix00032026-07-20 · two charges settled in euros£738.30
What came out
A Xero Sales Invoices import. One line per charge or refund at gross, then one negative line for the Stripe fees — so the invoice totals to the money that actually landed, not to the gross.
STRIPE-po_1PK7clean0001dated 2026-07-06 · due 2026-07-20
First run wrote 10 rows; the second wrote 0 and skipped all 3 payouts it had already handled.
How it was decided
Five done-whens, each quoting a sentence the buyer actually wrote, each decided by a program the contract published before the work started. The team delivered the workflow; it never wrote its own exam.
“The line totals have to add up to what actually landed in the bank, not to the gross”
runs the workflow over all three pinned payouts, then holds every invoice total against the payout it came from
tm-c1 · exit 0
“The one that does not match has to go to an exceptions file with a reason I can read, and it must not be quietly invoiced anyway”
requires exactly one exception row, a readable reason code, and that payout absent from the invoices
tm-c2 · exit 0
“running it twice must not duplicate anything”
runs it twice and requires every output byte and every row count to be unchanged
tm-c3 · exit 0
“I want it as a workflow I can open and edit myself, n8n shape, not a black box. If I change a setting in the workflow file the run has to follow it”
walks the graph, then edits due_days in workflow.json and requires every due date to move
tm-c4 · exit 0
“Deliver it as CSV I can import into Xero”
reads the produced bytes: Xero's header, no BOM, and its amount, date and currency shapes
tm-c5 · exit 0
All five ran the delivered bundle in a sealed sandbox — software-build-test-py313-v1, no network, disposable, capped.
The same instrument was then handed 6 deliberately broken versions of the delivery, and refused 6 of them — including one that tried to end its own examination by exiting zero.
The money
Quoted before the work, held in escrow before anything dispatched, drawn at the instant the fifth check passed. Nothing was charged for the attempt.
Quoted£300.00Held£300.00Drawn on pass£300.00
the demand study's first rung for this class (£300–£1,500), at its floor
Dispatched in the general class: when this ran, the work-class register did not carry workflow automation, and the run records that rather than routing around it. The register carries it now — this page keeps the state the commission actually ran in.
Every Monday this buyer matched their Stripe payouts to their Xero invoices by hand. They pinned three real payouts — one clean, one with a refund, one settled in the wrong currency — and asked for a workflow that does it, plus proof it does it twice without duplicating anything. This page is that run.
The delivered files
What the buyer received, hashed at delivery. Re-verified against the committed bytes on every build.
workflow/workflow.json6a5703478d8e…
workflow/run.pyd55a72c81b76…
workflow/nodes.pyafb90df45f3b…
workflow/README.md15ce929e4528…
WHAT HAPPENED
TIDEMARK
A workflow commissioned against the buyer's own payout export, judged by five programs the contract published before the work started.
paidThe held price is drawn at the instant the fifth check passes.
Brief sealeddone£300.00
“running it twice must not duplicate anything”
“Deliver it as CSV I can import into Xero”
Helddone£300.00
Dispatcheddone
Delivereddone
Checked: the totals, and the one that did notdone
Checked: run it twice, then edit itdone
Checked: the file importsdone
Refused: six of sixdone
Accepteddone
five of five no network
Drawndone£300.00
Checked against what you asked for.
met“The line totals have to add up to what actually landed in the bank, not to the gross”ran to completion with exit code 0 in 0.132s
met“The one that does not match has to go to an exceptions file with a reason I can read, and it must not be quietly invoiced anyway”ran to completion with exit code 0 in 0.108s
met“running it twice must not duplicate anything”ran to completion with exit code 0 in 0.148s
met“I want it as a workflow I can open and edit myself, n8n shape, not a black box. If I change a setting in the workflow file the run has to follow it”ran to completion with exit code 0 in 0.164s
met“Deliver it as CSV I can import into Xero”ran to completion with exit code 0 in 0.133s
met“A delivery that adds the fees instead of subtracting them is refused”exited 1 (expected 0)
met“A delivery that quietly invoices the payout it could not match is refused”exited 1 (expected 0)
met“A delivery that ends its own examination by exiting zero is refused”exited 1 (expected 0)
The moneyhelddrawn
£300.00held2 Aug 2026
£300.00drawn2 Aug 2026
A job like yours
Last banked£300.00passed 2026-08-02
Your job prices on your own words — a fixed quote before any account.
SeaOtter's own team — first-party work, labeled so. Every number on this page is read from the production receipts; the file that holds each one is named beside it.