Skip to content
Syncline
fintech
finance
stripe, airtable, notion, slack

Daily reconciliation without a spreadsheet

Reconciliation happened once a month from three CSV exports, and it took the finance lead the best part of four days. Anything odd was found five weeks after it happened, when nobody could remember the customer or the context.

The problem

Reconciliation happened once a month from three CSV exports, and it took the finance lead the best part of four days. Anything odd was found five weeks after it happened, when nobody could remember the customer or the context.

What they built

Every successful payment writes a row into the ledger base within seconds, with the amount already converted from minor units and the currency kept beside it. Large charges and failures announce themselves the same day instead of surfacing at month end.

The flow, step by step

<ol class="sy-steps"><li><b>stripe</b> A payment succeeds and the event arrives within seconds, carrying the amount in minor units, the currency, the customer email and the invoice reference.</li><li><b>airtable</b> A row is written into the Ledger table with the converted decimal amount, the currency code, the customer, the invoice ID and the Stripe charge ID for auditing.</li><li><b>notion</b> A line is appended to the running daily finance log page, which the team reads each morning instead of opening the payments dashboard.</li><li><b>slack</b> Charges above five thousand dollars post into the finance channel immediately, so a large or unexpected payment is discussed on the day it lands.</li></ol>

What changed

<div class="sy-table-wrap"><table><thead><tr><th>Metric</th><th>Before</th><th>After</th></tr></thead><tbody><tr><td>Time spent on month end reconciliation</td><td>4 days</td><td>half a day</td></tr><tr><td>Delay before an anomaly is noticed</td><td>up to 5 weeks</td><td>same day</td></tr><tr><td>Manual CSV exports per month</td><td>3</td><td>0</td></tr></tbody></table></div><blockquote><p>The four days were bad, but the five week delay was worse. Finding a mismatch on the day it happens means I can still ask somebody what it was, and usually they remember.</p><footer>Ada Musleh, Finance Lead at Quillfare</footer></blockquote>
<p>Quillfare provides invoicing tools to freelancers and takes payment through Stripe on monthly plans and one off charges. The finance function is one person plus a bookkeeper two days a week, which is normal at their size and leaves no room for a process that only works when someone has a clear week.</p><p>Reconciliation ran monthly from three exports: charges, refunds and payouts. The finance lead pulled them into a spreadsheet, matched what she could, and chased whatever was left. Four days was the honest average, and the frustrating part was never the volume. It was that a mismatch found on the sixth of the month had happened on the third of the previous one, by which point the customer conversation that explained it was gone.</p><p>The flow does the copying continuously so nothing has to be reconstructed later. Every successful payment becomes a ledger row within seconds of Stripe reporting it, and the Stripe charge ID travels with it, which means any row in the base can be traced back to the exact object in the payments dashboard with no searching.</p><p>The currency handling is why they trusted it enough to stop exporting. Stripe reports in minor units, and about a fifth of Quillfare revenue is in euro and yen. Syncline converts using the rule for each currency, which matters because yen has no decimal places and a naive divide by one hundred would understate every Japanese invoice by a factor of a hundred. The run history shows the raw value, the converted value and which rule applied, and the bookkeeper spot checks twenty rows a month against the dashboard as a control.</p><p>Two additions came from living with it. The Notion daily log started as a convenience and became the thing the team reads at nine in the morning, because a page with fifteen lines is easier to scan than a dashboard with filters. The five thousand dollar Slack alert has fired on an accidental duplicate charge twice, both caught and refunded the same afternoon rather than at month end.</p><p>Month end is now half a day and mostly consists of checking the exceptions the flow could not resolve on its own, usually a payment with no invoice reference attached. That list has averaged four rows a month since March.</p>