Overview
Circle Payments Network (CPN) is an account-based off-ramp provider that converts USDC to fiat through smart contract settlement. This guide explains how to execute a CPN off-ramp order from the Fireblocks Console.
The steps below are based on USDC → BRL via PIX as a concrete reference. The CPN integration supports all assets and rails that CPN itself supports: USDC across the blockchains CPN settles on, and CPN's full set of fiat currencies and payment rails. In all the assets, networks, and rails that match your corridor the following steps are identical.
Requirements
Workspace setup
- A Fireblocks workspace with a connected CPN account. The connection must be reviewed and approved by an approval group in your workspace.
- A vault account holding USDC on the blockchain you want to settle from.
- The native blockchain asset in that vault to cover the network’s gas fee on the settlement transaction (e.g., ETH on Ethereum, MATIC on Polygon or SOL on Solana).
Whitelisted fiat destination
You need a whitelisted fiat bank account (external wallet) for the currency and rail you want to use. CPN may require additional bank fields during whitelisting, such as bank address, city, country, postal code, tax ID, and SWIFT/BIC. The exact fields depend on the currency and rail. The destination wallet must have Approved status before it can be used in an order.
Policy rules
Configure the following rules before placing your first order. Set Designated Signers to specific named users; do not use Initiator unless you have a co-signer configured.
| Rule | Purpose |
| Order Policy | Approves off-ramp orders through CPN |
| Approve (EVM only) | Grants the Permit2 contract permission to move USDC from your vault. One-time per vault and asset combination |
| Typed Message (EVM only) | Signs the transfer authorization for each order |
| Program Call (Solana only) | Authorizes the Solana program call; no separate Approval required |
CPN settles through a smart contract, so it does not require a Transfer Policy rule; the Approve, Typed Message, and Program Call rules authorize the asset movement instead. See Policy rules for on-ramp and off-ramp orders for setup instructions.
Flow
Step 1: Create the order
- Select + to start a new transfer, then select On/Off ramp.
- Under From, select your vault account, the USDC asset and network, and enter the amount.
- Under To, select the whitelisted fiat bank account and the payment rail (e.g., PIX).
- Under Via, select your connected CPN account.
- If a Required information banner appears ("To get your quote ready, please provide the provider with participant identification information") select Provide info and complete the Add participant information form. You will be asked to identify the originator, the beneficiary, or both, and whether each is an individual or a corporate entity. The exact fields requested depend on the destination rail as each rail (PIX, SEPA, WIRE, SPEI, and others) has its own participant identification requirements defined by CPN, and the Console shows only the fields required for your selected rail. They typically include full name and postal address, and in some corridors - date of birth, nationality, and identification document details.
- Select Create Order and review the order details. Your order is verified against your workspace policy rules.
Step 2: Sign the smart contract settlement
After the order is created, signing requests appear automatically in the Fireblocks mobile app. The type and number of steps depend on the source network:
- EVM blockchains (Ethereum, Polygon):
- Approve: grants the Permit2 contract permission to transfer USDC from your vault. This is a one-time step per vault and asset; subsequent orders on the same vault and asset skip it.
- Typed Message: signs the transfer authorization for this specific order.
- Solana
- Program Call: a single program call that initiates the full transfer. No separate Approval step.
Each signing request appears as its own entry in Recent activity and your transaction history. While you complete these steps, the order stays in Awaiting Payment; the signatures are how funds are paid to CPN.
Make sure the designated signer has the Fireblocks mobile app installed with push notifications enabled. If the signer does not approve within the policy timeout window, the order will fail.
Step 3: Monitor status
Once the transfer is confirmed on the blockchain, the order moves to Processing. CPN initiates the fiat payment and the order status changes to Completed when the funds are delivered to your bank account.
Awaiting Information
CPN may request additional compliance documentation after an order is submitted, e.g. enhanced KYC, or source of funds confirmation. When this happens, the order status changes to Awaiting Information.
- Open the order from History > Orders.
- Review what the provider requested: fields to complete, files to upload, or both.
- Provide the required information and upload any requested documents. Supported file types are shown in the panel.
- Submit your response.
Fireblocks encrypts your submission and forwards it to CPN. The order resumes automatically once CPN clears the request. An order can enter Awaiting Information status more than once if CPN requires multiple rounds of verification.
Order statuses
| Status | Meaning |
| Created | The order was submitted and is pending approval |
| Awaiting Payment | Waiting for the smart contract settlement steps to complete |
| Processing | Transfer confirmed on the blockchain; CPN is executing the fiat payment |
| Awaiting Information | CPN requested additional information or documents |
| Completed | Fiat funds were delivered to your bank account |
| Failed | The order could not be completed |
| Canceled | The order was canceled |
Possible flows
- Normal path: Created → Awaiting Payment → Processing → Completed
- With additional verification: Created → Awaiting Payment → Processing → Awaiting Information → Processing → Completed
Order history
All orders are visible under History > Orders in the left navigation panel. The Orders tab consists of columns for action, outgoing asset, incoming asset, date created, source, destination, provider, and status. Use the Filters button to filter by status, provider, or date range. Use Export to download a CSV of your order history.