Skip to content

FX policy template for stablecoin payouts: tolerances, approvals, and float limits

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

  • Decide approvals on estimates and tolerances, then let the run quote and execute live.
  • Map duties to BlindPay's member roles: owner, admin, finance, checker, operations, developer, viewer.
  • Set the re-quote tolerance per corridor in basis points and measure it monthly.
  • Size the float in days of payouts, with a floor and a ceiling.
  • Write the depeg and failed-payout playbooks before you need them.

Why does a stablecoin payout team need an FX policy at all?

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.

What should the policy contain?

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:

RoleSuggested duty in this policy
ownerPolicy owner. Approves changes to sections 4 to 7
adminManages members and API keys
financePrepares payout runs and funding transfers
checkerSecond approver on runs above the threshold in section 5
operationsExecutes approved runs, handles exceptions
developerBuilds and maintains the integration, no money movement
viewerRead-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)ApproversRe-quote tolerance before re-approval
Under $10,0001 (finance)100 bps
$10,000 to $250,0002 (finance + checker)50 bps
Over $250,0002 + owner notified25 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.

How do you set a re-quote tolerance?

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.

LineValue
Approved estimate5.4000 BRL per USDC → 400,000 / 5.4000 = 74,074.07 USDC
Live quote5.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 USDC74,321.81 - 74,074.07 = 247.74 USDC
Policy tier$10,000 to $250,000, tolerance 50 bps
DecisionWithin 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.

How does the policy fit with forecasting and hedging?

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.

What do auditors ask to see?

Evidence that the policy runs, not just that it exists. Expect requests for:

  • The member list with roles, and the date each changed.
  • Two or three payout runs with the prepared total, the approval, the live quotes, and the executed payouts.
  • Every exception in a period: expired quotes, failed payouts, refunds, and how each closed.
  • Monthly review notes showing a tolerance or float limit was actually revisited.

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.

What to do next

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.

FAQ

One API.
Multiple payment rails.

Blind Pay, Inc. (“BlindPay”) is a United States-based financial technology and payments infrastructure company, incorporated in the State of Delaware on May 2, 2024. BlindPay is duly registered as a Money Services Business (“MSB”) with the Financial Crimes Enforcement Network (“FinCEN”) under registration number 31000277566153. BlindPay is not a state-licensed money transmitter and does not, in its own capacity, engage in regulated money transmission services. All such regulated activities are conducted exclusively through, and under the licenses of, duly authorized financial institution partners. BlindPay's role is limited to providing financial technology, virtual account management, payment processing, and related payments infrastructure services that facilitate payment flows and account functionalities. These services are provided in coordination with its licensed partners and in compliance with applicable federal MSB requirements and relevant state regulatory frameworks.

Blind Pay, LLC (“BlindPay”) is a Delaware limited liability company formed on June 24, 2025. BlindPay is duly registered as a Money Services Business (“MSB”) with the Financial Crimes Enforcement Network (“FinCEN”) under registration number 31000318334247 and is listed in the Nationwide Multistate Licensing System (“NMLS”) under NMLS ID #2745309.

BLIND PAY SOCIEDADE PRESTADORA DE SERVIÇOS DE ATIVOS VIRTUAIS LTDA. (“BlindPay”) is a Virtual Asset Service Provider (“VASP”) operating in Brazil. The company is presently completing the regulatory adaptation process required of Virtual Asset Service Provider Companies (SPSAV) under Central Bank of Brazil Resolution No. 520/2025, and remains subject to the transitional regime set forth in Article 88 of that Resolution. Registered address: Avenida Princesa Isabel, nº 15, Sala 1405, Edifício Martinho de Freitas, Centro, Vitória/ES, 29010-361.

BlindPay is a stablecoin API that enables individuals and businesses to move money worldwide.