Stablecoin settlements are easier to reconcile than card payments — every payment is a single on-chain transaction with a deterministic hash, and there is no T+2 batch deposit. The trade-off is that each payment is its own deposit, so your accounting system needs the right mapping. This page describes the canonical export and the three native integrations.
We generate a CSV at 00:30 UTC for the prior calendar day's activity and post it to your dashboard, S3 bucket, or SFTP destination (configured under Settings → Reporting). One row per money movement — payments, refunds, fee invoices, and chain-credit grants.
id,type,created_at,settled_at,gross,fee,net,token,chain,tx_hash,fx_rate,fx_currency,customer,memo
pay_9fX0a2E1,payment,2026-04-17T09:14:02Z,2026-04-17T09:14:08Z,199.00,2.985,196.015,USDC,base,0x9a2f…3bc1,1.0001,USD,cus_9fX0a2E1,Pro plan April
pay_4Hq2XZpL,payment,2026-04-17T11:42:18Z,2026-04-17T11:42:23Z,49.00,0.735,48.265,USDT,tron,0x77ce…a4f2,0.9998,USD,cus_4Hq2XZpL,
rf_7Hq2XZpL,refund,2026-04-17T15:08:51Z,2026-04-17T15:08:55Z,-49.00,0.00,-49.00,USDC,base,0x4ae1…b9d7,1.0001,USD,cus_4Hq2XZpL,Refund ZD-7184
inv_fee_apr,fee_invoice,2026-04-17T00:01:00Z,—,—,—,-128.41,USDC,base,—,1.0001,USD,—,April fee aggregateBy default, fees are deducted on every payment row (net = gross − fee). For finance teams that prefer one fee posting per period, switch to aggregate billing in Settings → Reporting. We then post the full gross amount on each payment and a single fee_invoice row at month end. Both modes total to the same dollar amount; the difference is journal granularity.
Every settlement carries an fx_rate and fx_currency captured at the moment the payment confirmed on-chain. The rate is the midpoint of three reputable feeds (Coinbase, Kraken, Chainlink) and is stable for the lifetime of the row — re-pulling next week returns the same value. Use it to book USD revenue against USDC inflows without introducing FX drift between your books and the chain.
All timestamps in the CSV are UTC ISO-8601. The dashboard displays in your account-local zone (set under Settings → General). Daily exports always cover a UTC calendar day; if you need exports aligned to a different fiscal day boundary, configure a report_offset of up to ±12h.
Each payment posts as a Sales Receipt against the customer, with the stablecoin treated as a Bank account (one per chain). Fees post to an Expense account named "OpenSettle fees". Refunds reverse the originating Sales Receipt. Sync is bidirectional for customer match and runs every 15 minutes.
Payments arrive as Bank Transactions on a per-chain bank account. Invoices generated in OpenSettle push as Authorised Sales Invoices and reconcile automatically to the matching Bank Transaction on settlement. Fees flow to a single chart-of-accounts line.
We provide a SuiteApp that maps payments to Customer Deposits or Cash Sales (configurable per subsidiary). Multi-subsidiary and multi-currency books are supported via the FX snapshot. Fee aggregation posts as a vendor bill from "OpenSettle, Inc." each month.