Which quote fields finance should export, illustrative journal entries for a USDC to BRL payout and a Pix payin, and where FX gains and losses land.
Book a stablecoin payout like any foreign currency payment: record it at the rate on the transaction date, split the cost of conversion from market movement, and keep the quote as evidence. Export each quote's market rate, your rate, both amounts, and every fee line. Then post three lines: the payable you settled, the FX difference, and the fee.
This is not accounting advice. Classification of stablecoin holdings and the exact chart of accounts are judgment calls for your controller and auditor. What follows is the data you need to make those calls, and illustrative entries that show where each number goes.
Key takeaways
expires_at, both quotations, both amounts, and the fee lines.billing_fee_amount means the fee arrives on a monthly invoice. Accrue it when the quote executes.Everything the quote returned, joined to the transaction it backed. A payout quote is created against one bank account and expires 5 minutes after creation, and each quote can back only one payout (payout quotes docs). That one-to-one link is what makes reconciliation clean.
| Field | Where it comes from | Why finance needs it |
|---|---|---|
id (qu_...) | Quote | Joins the quote to the payout or payin |
expires_at | Quote | Timestamp of the rate, in epoch milliseconds |
commercial_quotation | Quote | Raw market rate at that moment |
blindpay_quotation | Quote | Rate net of BlindPay's fee, the rate you actually got |
sender_amount | Quote | What left the funding wallet or the payer, in minor units |
receiver_amount | Quote | What the bank account or wallet received, in minor units |
flat_fee | Quote | Flat-fee component |
partner_fee_amount | Quote | Your own markup, if you passed a partner_fee_id |
billing_fee_amount | Quote | Fee invoiced at month end instead of charged now |
id (po_... or payin id), status | Payout or payin | Proves it executed, and how it ended |
Payin quotes return the same pricing fields plus is_otc (payin quotes docs). Rates read as local currency per unit of stablecoin, so a BRL quote of 5.33 means 5.33 reais per USDC. How to read an FX quote covers the direction if your ERP expects the inverse.
Pull these from payout.complete and payin.complete webhooks or the list endpoints, and write them to a table your close process reads. Webhooks for reconciliation shows the event handling.
The spot rate at the date of the transaction. The IFRS Foundation describes IAS 21's principal issues as "which exchange rate(s) to use and how to report the effects of changes in exchange rates in the financial statements" (IFRS Foundation, IAS 21). Under the standard, a foreign currency transaction is recorded first at the spot rate on the transaction date, and exchange differences that arise when a monetary item is settled go to profit or loss, with an exception for net investments in foreign operations. US GAAP has a parallel framework in ASC 830.
For a payout, two rates sit on the quote. commercial_quotation is the market. blindpay_quotation is what you got. Teams generally use the market rate to measure the FX difference and treat the gap to the quoted rate as a fee. That keeps "the market moved" and "the provider charged" on separate lines.
One open question: whether your USDC balance is cash, a financial asset, or something else depends on your framework and your auditor. If USDC is your functional or working currency, a USD payout has no FX difference at all. Is USDC to USD one to one? explains the redemption side.
Three debits and one credit. Illustrative example, with invented rates and fees:
currency_type: receiver for R$ 54,000.00. The quote shows commercial_quotation 5.35 and a sender_amount of 10,133.33 USDC.| Account | Debit (USD) | Credit (USD) |
|---|---|---|
| Accounts payable, supplier | 10,000.00 | |
| Realized FX loss | 93.46 | |
| Payment processing fees | 39.87 | |
| Stablecoin holdings (USDC) | 10,133.33 |
The FX loss is market movement: 10,093.46 minus the 10,000.00 you booked. The fee is the conversion cost: 10,133.33 minus 10,093.46. Debits and credits both total 10,133.33.
If the quote had a billing_fee_amount, that part of the fee is not taken from the USDC. Accrue it on the execution date and clear the accrual when the month-end invoice arrives (billing docs).
The mirror image. Illustrative example: a Brazilian customer owes you an invoice of R$ 27,000, booked October 1 at 5.40 as a USD 5,000.00 receivable. On October 15 they pay by Pix against a payin quote with a market rate of 5.30. The destination wallet receives 5,065.65 USDC.
At market, R$ 27,000 is worth 27,000 / 5.30 = USD 5,094.34.
| Account | Debit (USD) | Credit (USD) |
|---|---|---|
| Stablecoin holdings (USDC) | 5,065.65 | |
| Payment processing fees | 28.69 | |
| Accounts receivable, customer | 5,000.00 | |
| Realized FX gain | 94.34 |
The real strengthened between invoice and payment, so you gained 94.34 on the currency and paid 28.69 for the conversion. Totals match at 5,094.34.
From the time between booking and settling. A payout executed the same minute you book it has almost no FX difference, only a fee. A payout made 30 days after the invoice carries 30 days of market movement.
Three patterns show up in month-end reviews:
Who carries the movement in the first place is a commercial choice, covered in who carries FX risk on a stablecoin payout.
Match every executed quote to exactly one payout or payin, then match those to the ledger. A short routine:
completed, failed, refunded.sender_amount equals the stablecoin that left the wallet on chain.failed and refunded payouts. A refunded payout returns stablecoins; it does not settle the payable.billing_fee_amount totals to the month-end invoice.Keep the raw responses. Under 31 CFR 1010.430, records that FinCEN's rules require financial institutions to keep "shall be retained for a period of five years" (Cornell LII). Your obligations may differ, but five years is a sensible floor for payment evidence.
Every one of these numbers exists because a provider prices conversions somewhere between market and quote. How on/off-ramp providers make money explains what sits in that gap.
Export one week of quotes and payouts from a development instance into your close template, post the entries above, and ask your auditor to sign off on the account mapping before you go live. The payout quotes docs list every field.
Seven places blockchain payments beat bank rails: contractor payroll, remittances, B2B suppliers, marketplaces, 24/7 treasury, bill pay, and PSP payouts.
Push means the payer sends an ACH transfer. Pull means you debit a connected account. How each funds a USD to USDC on-ramp, the fees, and the return risk.
AP2, ACP, and x402 each verify that an AI agent had permission to spend. Here is what every protocol covers, who backs it, and the reconciliation gap none of them close.