A copyable FX policy for stablecoin payout teams: who can execute, re-quote tolerances, approval thresholds, float and depeg limits, and review cadence.
An FX policy for stablecoin payouts is a one-page rulebook: who can execute, which quotes you accept, how far a re-quote may drift before re-approval, how much stablecoin you hold, and when you review it. Quotes last 5 minutes, so the decisions have to be made before the quote exists. Copy the template below and fill in your numbers.
Most payout teams already have these rules. They just live in Slack threads and in one person's head. Writing them down is what lets a second person run payroll on a Friday without calling the first.
Key takeaways
Because the 5-minute quote window removes the time to ask. A payout quote locks the rate and fees for 5 minutes, sometimes less on SEPA and Faster Payments (cut-off times). Nobody convenes a meeting inside that window.
Controls also pay for themselves. The ACFE's 2026 Report to the Nations, built from 2,402 real occupational fraud cases, says the presence of anti-fraud controls is associated with lower fraud losses and quicker detection (ACFE). Segregating who prepares a payment from who releases it is the oldest of those controls, and the COSO Internal Control framework, first issued in 1992 and refreshed in 2013, is where most auditors will look for it (COSO).
For the FX side specifically, the FX Global Code is the industry's set of good-practice principles, last updated in December 2024 and developed by central banks and market participants from 20 jurisdictions (Global Foreign Exchange Committee). It's written for wholesale FX, but its habits (know what you're being quoted, document how you execute) translate directly.
Ten sections. The template below is meant to be pasted into your wiki and edited. Brackets are yours to fill.
1. Purpose and scope. This policy governs every stablecoin-funded payout and on-ramp made by Company through provider, in all corridors listed in section 3. It applies to employees and contractors with access to the payout dashboard or API keys.
2. Roles. Map each duty to a person and a role on the instance. BlindPay's instance docs list seven member roles:
| Role | Suggested duty in this policy |
|---|---|
owner | Policy owner. Approves changes to sections 4 to 7 |
admin | Manages members and API keys |
finance | Prepares payout runs and funding transfers |
checker | Second approver on runs above the threshold in section 5 |
operations | Executes approved runs, handles exceptions |
developer | Builds and maintains the integration, no money movement |
viewer | Read-only for audit and support |
The docs list owner, admin, finance, checker, and operations as holding the transaction-create permission for transfer quotes, and member role changes need owner, admin, or checker. Instances also expose a require_passkey setting. The maker-checker step itself is your process: the person who prepares a run is never the one who signs it off.
3. Approved corridors, rails, and providers. List each corridor (for example USDC to BRL over Pix, USDC to MXN over SPEI, USDC to EUR over SEPA), the provider, and the date it was approved. New corridors need a liquidity check first; the 10-point liquidity scorecard is a usable bar.
4. Quote acceptance. We execute only against binding quotes, inside their window, read from expires_at. We never execute a quote created more than 5 minutes earlier or retry an expired one; we re-quote. Staff check that the quote shows both the market rate and the rate after fees (how to read an FX quote).
5. Approval thresholds and tolerances. Runs are approved on an estimate with a tolerance, then quoted live:
| Run size (USD equivalent) | Approvers | Re-quote tolerance before re-approval |
|---|---|---|
| Under $10,000 | 1 (finance) | 100 bps |
| $10,000 to $250,000 | 2 (finance + checker) | 50 bps |
| Over $250,000 | 2 + owner notified | 25 bps |
6. Float limits. We hold between 3 and 10 business days of payouts in stablecoins, across no more than 2 networks. Top-ups are made by finance and logged. How much USDC to hold for payouts has the sizing formula.
7. Token and depeg limits. Approved tokens: USDC, USDT. If an approved token trades below $0.995 on named reference source for more than 1 hour, payouts in that token pause and owner decides next steps. Stablecoin depeg risk covers how to set the trigger.
8. Exceptions and failed payouts. Expired quotes are re-quoted, never forced. Failed or refunded payouts go to operations within 1 business day. When stablecoins were already collected and the payout can't be delivered, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails that refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review.
9. Monitoring. Weekly report on expiry rate, re-quote delta, delivery success, and cost per delivered dollar by corridor (payout quality metrics).
10. Review. Numbers reviewed monthly by finance and checker. Whole policy reviewed every 12 months by owner, and whenever a corridor, token, or network is added.
Measure it, in basis points, between the approved estimate and the live quote. One basis point is 0.01%.
Illustrative example. Finance approves a run of R$ 400,000.00 in salaries, fixed in reais, on an estimate of 5.4000 BRL per USDC. When the run starts, the live quote shows 5.3820.
| Line | Value |
|---|---|
| Approved estimate | 5.4000 BRL per USDC → 400,000 / 5.4000 = 74,074.07 USDC |
| Live quote | 5.3820 BRL per USDC → 400,000 / 5.3820 = 74,321.81 USDC |
| Rate move | (5.4000 - 5.3820) / 5.4000 = 0.333% = 33 bps |
| Extra USDC | 74,321.81 - 74,074.07 = 247.74 USDC |
| Policy tier | $10,000 to $250,000, tolerance 50 bps |
| Decision | Within tolerance. The run proceeds without re-approval |
At 5.3460 the move would be (5.4000 - 5.3460) / 5.4000 = 100 bps, about 74,822.30 USDC needed. Outside tolerance: the run pauses and goes back to the checker.
Pick the band from your own data. If a corridor's typical re-quote delta is 20 bps, a 50 bps tolerance rarely bothers anyone and still catches a real move. Should you wait for a better exchange rate? explains why the policy should not let operators hold runs to time the market.
The policy governs execution; the forecast governs budget. Your monthly FX budget sets the expected cost per corridor, and the policy's tolerances say how much the actual run may deviate before someone looks. Forecasting FX costs on cross-border payouts shows the budget model.
Live quotes are not a hedge. If a large payable is due in 90 days, a forward from your bank fixes the economic rate, and the payout still runs on a live quote on the day. Live quote vs forward contract vs fixed rate covers that split. If you use forwards, add a section 11 naming the bank and the hedge ratio.
Evidence that the policy runs, not just that it exists. Expect requests for:
Store quote ids with each executed payout. A quote is the record of the price you accepted, and it's the first thing anyone asks for when a rate gets questioned months later.
Paste the ten sections into your wiki, fill sections 2, 5, and 6 this week, and assign roles on your instance to match. The instance docs show how to list and update member roles.
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.