---
title: "How to add the fiat last mile to a Fireblocks, Circle, or Paxos stack"
seoTitle: "Add fiat payouts to a Fireblocks, Circle, or Paxos stack"
description: "Pay out local currency from a Fireblocks vault, Circle Mint, or Paxos: a BlindPay quote and approve, or an offramp wallet, over Pix, SPEI, SEPA, and SWIFT."
date: "2026-11-03"
updated: "2026-11-03"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to pay out local currency from a Fireblocks vault with BlindPay"
  steps:
    - name: "Create the customer and the bank account"
      text: "Onboard the customer with KYC or KYB in BlindPay, then add the recipient's bank account with the fields its rail needs, such as a Pix key or a CLABE."
    - name: "Register the vault address"
      text: "Fetch the sign-message challenge from BlindPay, sign it from the Fireblocks vault as a typed message, and submit the signature so BlindPay stores the address as a blockchain wallet."
    - name: "Request a payout quote"
      text: "Create a quote for the bank account, network, and token. It locks the rate and fees for 5 minutes and returns the approve payload for EVM networks."
    - name: "Approve the token pull from the vault"
      text: "Send the approve as a Fireblocks contract call from the vault account and wait for it to complete, including any policy or cosigner approval."
    - name: "Execute the payout"
      text: "Call the EVM payout endpoint with the quote ID and the vault address before the quote expires. Re-quote if approval took longer than 5 minutes."
    - name: "Track it to the bank"
      text: "Follow the payout webhooks to completion and store the rail reference, plus the UETR and MT103 on SWIFT payouts, against your ledger entry."
faq:
  - q: "How do I add fiat payouts to a Fireblocks setup?"
    a: "Connect the Fireblocks vault to BlindPay as a blockchain wallet, then request a payout quote, sign the approve from the vault, and execute before the 5-minute quote expires. BlindPay pays local currency into the recipient's bank over Pix, SPEI, ACH Colombia, Transfers 3.0, ACH, RTP, SEPA, Faster Payments, or SWIFT (POBO/COBO). Fireblocks keeps the keys the whole time."
  - q: "Can I pay out from Circle Mint or Paxos without signing an approve?"
    a: "Yes. Create a BlindPay offramp wallet on the recipient's bank account, allowlist its deposit address in Circle Mint or Paxos, and send USDC to it. Every deposit converts and pays the linked bank account automatically, with no quote or execute call. The conversion uses the live rate at the moment the deposit lands, so the recipient amount is set on arrival."
  - q: "Which path locks the exchange rate?"
    a: "The quote path does. A BlindPay payout quote locks the rate and every fee for 5 minutes and shows the exact amount the recipient receives before you execute. The offramp wallet path converts each deposit when it lands, so use it for recurring or automated flows where a firm number before sending matters less than having no API call at all."
  - q: "Does BlindPay hold the funds in a Fireblocks payout?"
    a: "BlindPay operates as a non-custodial payment processor for payouts from customer-controlled wallets. You authorize the exact quoted amount with the approve, and BlindPay executes that single transaction. The keys stay in Fireblocks, and nothing moves until the vault signs, so your Transaction Authorization Policy still governs every payout."
  - q: "How do I trace a payout once it leaves the wallet?"
    a: "Store three IDs per payout: the BlindPay payout ID, the on-chain transaction hash of the token pull, and the rail reference from the bank side. On SWIFT payouts BlindPay also returns the UETR and an MT103 confirmation. Webhooks report each status change, so your ledger can move the entry from pending to paid without polling."
---

To add the fiat last mile to a Fireblocks, Circle, or Paxos stack, connect the wallet that holds your stablecoins to BlindPay and let BlindPay pay local currency into the recipient's bank: Pix in Brazil, SPEI in Mexico, ACH Colombia, Transfers 3.0 in Argentina, ACH and RTP in the US, SEPA in Europe, Faster Payments in the UK, and SWIFT (POBO/COBO) everywhere else. There are two ways in: a quote and an approve signed from a Fireblocks vault, or a BlindPay offramp wallet that any custody account can send USDC or USDT to.

Custody platforms are built to hold and move tokens. Getting reais into a Brazilian bank account in seconds is a different job. This guide covers both paths, which one fits each custody setup, and the mistakes that cost a payout.

**Key takeaways**

- Fireblocks, Circle, and Paxos hold the stablecoins. BlindPay converts them and pays the bank on the local rail.
- From a Fireblocks vault, use the quote path: register the vault address, quote, approve, execute. The rate and fees are locked for 5 minutes.
- From Circle Mint or Paxos, use an offramp wallet: send USDC or USDT to its deposit address and BlindPay pays the linked bank account automatically.
- The keys never leave your custody platform. BlindPay executes only the amount you authorize.
- Track three IDs per payout: payout ID, on-chain hash, and rail reference, plus the UETR and MT103 on SWIFT.

## What is the fiat last mile in a stablecoin stack?

The fiat last mile is the step where stablecoins become local currency in a recipient's bank account. Everything before it, minting, custody, moving tokens between chains, happens on-chain. The last mile happens on a bank rail, and each country has its own: Pix in Brazil, SPEI in Mexico, ACH in the US, SEPA in Europe.

Custody platforms point to partners for this step. The [Fireblocks Network directory](https://www.fireblocks.com/platforms/fireblocks-network/directory) lists providers "offering local payment rails, blockchains, on/off-ramps, liquidity, FX, and remittance capabilities". [Circle Payments Network](https://www.circle.com/cpn/fiat-payments) routes payouts through global payout partners. A direct BlindPay integration puts that step in your own API calls: you pick the rail per country, see the quote, and get the rail reference back.

## Which path fits your custody setup?

| | Quote and approve | Offramp wallet |
| --- | --- | --- |
| Best for | Fireblocks vaults and any EVM wallet that can sign | Circle Mint, Paxos, or any account that can send to an address |
| How a payout starts | Your backend requests a quote, signs the approve, and executes | You send USDC or USDT to the wallet's deposit address |
| Exchange rate | Locked for 5 minutes in the quote, with every fee shown | Live rate at the moment the deposit lands |
| API calls per payout | Quote, then execute | None after setup |
| Networks | EVM networks such as Ethereum, Polygon, Base, and Arbitrum | Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Solana, and Tron, by token |
| Recipient | Any bank account you add, per payout | The one bank account the wallet is tied to |

Most teams use both. The quote path covers one-off transfers where the customer needs a firm number on screen. The offramp wallet covers recurring flows, like a monthly settlement to the same supplier, where nobody needs to press a button.

## How do you pay out from a Fireblocks vault?

The vault keeps its keys, and every signature comes from the Fireblocks API.

1. **Create the customer and the bank account.** Onboard the customer with KYC or KYB, then add the recipient's bank account with the fields its rail needs. See [bank accounts](/docs/bank-accounts).
2. **Register the vault address.** Fetch the challenge from BlindPay's sign-message endpoint, sign it from the vault as a typed message, and submit the signature. BlindPay recovers the address and stores it as a [blockchain wallet](/docs/blockchain-wallets).
3. **Request a payout quote.** The quote locks the rate and fees for 5 minutes and returns the approve payload: token contract, spender, and amount. See [payout quotes](/docs/payout-quotes).
4. **Approve the token pull.** Send the approve as a Fireblocks contract call from the vault account and wait for it to complete. Transaction Authorization Policy rules and cosigner approval add time here.
5. **Execute before the quote expires.** Call the [EVM payout endpoint](/docs/payout-evm) with the quote ID and the vault address. If approval ran past 5 minutes, request a new quote. If the allowance already on-chain covers the new amount, skip the second approve.
6. **Track it to the bank.** Payout webhooks report each status. Store the rail reference, and on SWIFT the UETR and MT103, against the ledger entry.

The [Integrate Fireblocks with BlindPay](/prompts/integrate-fireblocks) prompt hands this whole flow to a coding agent, including the expiry race and test amounts for a development instance.

## How do you pay out from Circle Mint or Paxos?

Use a BlindPay [offramp wallet](/docs/offramp-wallets). It is a deposit address tied to one bank account: anything sent to it converts and pays out on its own.

1. **Create the offramp wallet** on the recipient's bank account and pick the network, for example Polygon for USDC or USDT, or Base for USDC. For SEPA and Faster Payments accounts, pick Ethereum, Polygon, Base, Arbitrum, or Solana.
2. **Allowlist the deposit address** at your custody platform. Circle Mint asks you to create a recipient address before it will [transfer USDC on-chain](https://developers.circle.com/circle-mint/howtos/transfer-on-chain), and Paxos uses saved [withdrawal addresses](https://docs.paxos.com/guides/dashboard/withdrawal-addresses).
3. **Send USDC or USDT** to that address. BlindPay creates the payout and pays the linked bank account over its rail.
4. **Match the payout** to the deposit by on-chain hash in your ledger.

Each network has its own additional fee, from 0 USDC on Polygon, Base, Arbitrum, Tempo, and Arc to 15 USDT on Tron, listed in the offramp wallets docs. Send amounts that clear every fee: a deposit smaller than the total fees stays at the deposit address instead of converting.

## Which bank rails can the recipient get paid on?

BlindPay pays out over Pix, PIX Safe, and TED in Brazil, SPEI in Mexico, ACH Colombia, Transfers 3.0 in Argentina, ACH, RTP, and wire in the US, SEPA in Europe, Faster Payments in the UK, and SWIFT (POBO/COBO) globally, with UETR tracking and MT103 confirmations on SWIFT. The full table is in [payment methods](/docs/kb/payment-methods). For neobanks choosing which corridors to open first, [which payout rails to launch first](/resources/more/neobank-payout-rails-which-to-launch-first) has a scoring method.

## What mistakes break a last-mile payout?

- **Letting the quote expire during approval.** Fireblocks policy and cosigner steps can take longer than 5 minutes. Check the time left before you execute, and re-quote instead of retrying a stale quote.
- **Pairing the wrong token and network.** USDT payouts run on Ethereum, Polygon, Tron, Solana, and Tempo. On Base, Arbitrum, Arc, and Stellar, pay out in USDC. Check [supported chains](/docs/kb/supported-chains) before you fund.
- **Sending less than the fees to an offramp wallet.** Small deposits stay at the address. Monitor for them.
- **Skipping the development instance.** Run the full flow with USDB on a testnet first. The test amounts $666.00 and $777.00 force a failed and a refunded payout, so your error handling gets exercised before real money moves.

## Methodology and sources

BlindPay facts come from the [EVM payout](/docs/payout-evm), [blockchain wallets](/docs/blockchain-wallets), [payout quotes](/docs/payout-quotes), [offramp wallets](/docs/offramp-wallets), and [supported chains](/docs/kb/supported-chains) docs. Custody-platform facts come from each provider's own pages, read on November 3, 2026: [the Fireblocks Network directory](https://www.fireblocks.com/platforms/fireblocks-network/directory), [Circle Payments Network fiat payouts](https://www.circle.com/cpn/fiat-payments), [Circle Mint on-chain transfers](https://developers.circle.com/circle-mint/howtos/transfer-on-chain), and [Paxos withdrawal addresses](https://docs.paxos.com/guides/dashboard/withdrawal-addresses). For which provider fits each layer of a neobank, see [the neobank stablecoin stack by layer](/resources/more/neobank-stablecoin-stack-by-layer).

## What to do next

Pick the path that matches where your stablecoins sit. On Fireblocks, open a BlindPay development instance and run the [Integrate Fireblocks with BlindPay](/prompts/integrate-fireblocks) prompt end to end. On Circle Mint or Paxos, create one offramp wallet on a test bank account and send a small USDB deposit to it.
