Purser
T:0 sandbox, test data

Our books, in a real ledger

Purser posts its books to T:0's general ledger, then reads them back, line by line.

What ran live

  • 10 Nov: 95 journal entries posted, the main run's books, read back with 0 differences. record ↗
  • 10 Nov: T:0's balance sheet balances to the cent; its financing line is our owner funding. record ↗
  • 10 Nov: the platform run booked 2 entries. record ↗
  • 3 Nov: refused, 403: the shared key could read, not post. record ↗
  • 5 Nov: refused, 401: the new key was not accepted. record ↗

Not done

  • Accounts are made in T:0's app; its API cannot create them.
  • One rate per currency, given by us; no daily rate source yet.
  • A supplier bill on T:0's payables account needs a T:0 vendor (refused, 400).
What Purser sends
  • One journal entry per entry of Purser's books, debits equal to credits, dated by the movement's day.
  • Each line's memo carries its proof: the transaction hash, the clearing receipt or the Airwallex id.
  • A stable id per entry (PUR- and a hash of its content) and an idempotency key: a second push posts nothing twice.
  • Test money on Metal (*USDZ) is posted as USD, labelled in the memo; other currencies at the rate we give.
  • How it works, and the account map ↗
Our books against T:0's, per account (10 Nov)
T:0 account (ours)Ours, net debitT:0
11120 (1200)11,144,700.0511,144,700.05
11210 (1201)9,995,581.949,995,581.94
11410 (1210)20.0320.03
11999 (1590)1.321.32
32000 (3000)-21,140,636.23-21,140,636.23
42000 (4000+4100)-1.90-1.90
51200 (5000+6350)269.48269.48
63410 (6100)50.3150.31
63700 (6800)15.0015.00
  • All 95 entries match; debits and credits 21,141,221.86 USD each, the same as our books.
  • A second push posted 0 and skipped 95: re-running is safe.
  • Balance sheet: 26,447,805.98 = 3,807,739.87 + 22,640,066.11 USD, difference 0.00. Cash flow, financing: 21,140,636.23 USD, exactly our owner funding. The entity is shared with other teams, so these totals hold their entries too.
The ids in T:0
  • First entry: je_prod_z7kTCuZ1iiwad01q.
  • Platform run: je_prod_wop0vx1B8xOmHQl0, je_prod_WN96JsvKXGCY7mYs.
All the proof