We’ve added a new payment flow to CPN that uses an authorization framework built on Permit2 and is designed to simplify onchain settlement. Learn more.

The way value moves onchain is evolving fast and developers are demanding payment experiences that feel as seamless as modern APIs. With the launch of Onchain Transaction V2, Circle Payment Network (CPN) introduces an optional new payment flow that uses an authorization framework built on Uniswap’s Permit2 standard — designed to simplify and accelerate onchain settlement.
In this post, we’ll unpack how CPN leverages Permit2 to authorize payments across supported chains, benefits of Permit2, and what this means for developers building with USDC and EURC.
A Simpler, Smarter Onchain Payment Experience
Onchain Transaction V2 brings a new level of ease and efficiency to settlement within CPN. With this optional upgrade, CPN moves to abstract blockchain processing fees and streamline signatures:
- Simplify blockchain processing fees: Pay blockchain fees in USDC when signing a transaction — no need to hold or manage native tokens.
- Transaction Signing: Transactions are signed using EIP-712 typed data, meaning no signing raw transaction or nonce management.
- Speed up transactions when necessary: CPN will automatically broadcast and accelerate transactions for timely settlement.
V2 also introduces the CPN PaymentSettlement Contract, a new smart contract that verifies and executes transactions. The CPN PaymentSettlement Contract validates payment intents submitted by Originating Financial Institutions (OFIs), who act on behalf of the sender, enforcing time and nonce rules, and settling payments by pulling funds from the payer via Permit2 before distributing value to the payee and any applicable fees to the beneficiary.
Why We Chose Permit2 Over ERC-3009
To understand the shift, let’s look at how CPN currently uses ERC-3009 and why moving to Permit2 creates a more flexible, stablecoin-agnostic design.
ERC-3009 — short for Transfer With Authorization — was first introduced in 2020. It allowed a user to move tokens with nothing more than a signed message, eliminating the need to broadcast a transaction or even hold ETH for gas. This was a breakthrough for delegated and gas-sponsored stablecoin payments: a sender could sign an authorization, and a merchant or payment processor could execute it on their behalf.
But ERC-3009’s design lived inside each token contract. Every asset that wanted this functionality had to implement its own transferWithAuthorization method. That fragmented the developer experience and limited interoperability.
Permit2, developed by Uniswap Labs, solves this by abstracting token approvals away from individual tokens into a shared contract. Instead of each ERC-20 implementing its own signature logic, tokens rely on the Permit2 contract to verify and execute authorizations. This shift makes signature-based approvals universal, composable, and portable across the entire ERC-20 ecosystem.
How Permit2 Powers the CPN Payment Flow
The integration of Permit2 into CPN introduces a new, streamlined flow for token authorization and transfer. Together with the PaymentSettlement Contract, Permit2 forms the backbone of Onchain Transaction V2. Permit2 manages the authorization layer, while the PaymentSettlement Contract handles verification. Additionally, the Relayer Service provides relaying and blockchain processing fees.
1. The Key Roles
- Owner: The Originating Financial Institution's (OFI's) wallet (the OFI acts on behalf of the sender) Wallet.
- Spender: The PaymentSettlement Contract , which verifies and executes payments after authorization.
- Mediator: The Permit2 contract, deployed by Uniswap, which validates signature-based approvals.
2. The Approval Architecture
The process involves two levels of approval:
a. Master Approval
Before any CPN payments occur, the OFI Wallet grants Permit2 an ERC-20 allowance (a configurable ceiling per token) using approve (address spender = Permit2, uint256 amount). This does not authorize the Relayer to move funds.
approve(address spender, uint256 amount)b. Sub-Approval
For each payment, the OFI Wallet signs a temporary Permit2 sub-approval that designates the PaymentSettlement Contract as the spender, for the exact amount, with expiry and a nonce. The PaymentSettlement Contract (as the authorized spender) pulls funds via Permit2 when the Relayer submits the transaction. Note that the Relayer cannot pull funds itself.
What Developers Need to Know
Permit2 enables signature-based ERC-20 approvals, so instead of broadcasting a token approval onchain, the wallet simply signs a message authorizing the spend.
Once authorization is complete, the PaymentSettlement Contract verifies the payment intent and executes settlement onchain through the Relayer Service. This design removes the need for partners to manage nonce tracking or blockchain processing fees funding manually, as validation is handled by the contract and transaction broadcasting is managed by the Relayer.
ERC-20 Approval Flow
Developers can use Circle’s Wallets API to programmatically approve Permit2:
export async function approveUSDCWithCircleWallets() {
const client = initiateDeveloperControlledWalletsClient({
apiKey: process.env.CIRCLE_WALLETS_API_KEY,
entitySecret: process.env.ENTITY_SECRET,
});
const response = await client.createContractExecutionTransaction({
walletId: process.env.CIRCLE_WALLET_ID,
contractAddress: process.env.USDC_CONTRACT_ADDRESS,
abiFunctionSignature: "approve(address,uint256)",
abiParameters: [
process.env.PERMIT2_CONTRACT_ADDRESS,
process.env.APPROVAL_AMOUNT,
],
idempotencyKey: randomUUID(),
fee: { type: "level", config: { feeLevel: "MEDIUM" } },
});
return response.data;
}
This grants Permit2 sufficient allowance to process subsequent payments automatically.
Creating a CPN Quote with V2
Once Permit2 is authorized, developers create a CPN payment quote using the new API parameter transactionVersion: "VERSION_2":
curl --request POST \
--url https://api.circle.com/v1/cpn/quotes \
--header 'Authorization: Bearer ${YOUR_API_KEY}' \
--data '{
"paymentMethodType": "SPEI",
"senderCountry": "US",
"destinationCountry": "MX",
"sourceAmount": { "currency": "USDC" },
"destinationAmount": { "amount": "200", "currency": "MXN" },
"blockchain": "ETH-SEPOLIA",
"transactionVersion": "VERSION_2"
}'The returned quote includes blockchain processing fees — all denominated in USDC.
Executing a CPN V2 Transaction
When it’s time to settle, developers call the updated V2 endpoint:
curl --request POST \
--url https://api.circle.com/v2/cpn/payments/:paymentId/transactions \
--header 'Authorization: Bearer ${YOUR_API_KEY}' \
--data '{ "idempotencyKey": "${RANDOM_UUID}" }'The response includes an EIP-712 typed data payload for signing:
"messageToBeSigned": {
"domain": {
"name": "Permit2",
"chainId": "11155111",
"verifyingContract": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
},
"primaryType": "PermitWitnessTransferFrom"
}The signature is then created via Circle’s Developer Controlled Wallets endpoint:
curl --request POST \
--url https://api.circle.com/v1/w3s/developer/sign/typedData \
--header 'Authorization: Bearer ${YOUR_API_KEY}' \
--data '{
"entitySecretCiphertext": "${CIPHERTEXT}",
"data": "${MESSAGE_TO_BE_SIGNED}",
"walletId": "${YOUR_CIRCLE_WALLET_ID}"
}'The resulting signature (0xTYPEDDATASIGNATURE) is used by CPN to complete the transfer — no raw transaction management required.
Developer Benefits at a Glance

Conclusion
With Permit2 and the PaymentSettlement Contract , Circle is simplifying onchain settlement from both sides — authorization and execution.
Permit2 enables signature-based approvals for USDC, while the PaymentSettlement Contract verifies the payment intent and executes settlement onchain through the Relayer Service. The Relayer manages transaction relaying and blockchain transaction fee abstraction. Together, these upgrades make onchain payments more simple and efficient for developers. They reduce manual transaction management, remove the need to handle native tokens directly, and streamline settlement through a single API call and an offchain signature.
Start building with Circle's PaymentSettlement contract, or you can complete our interest form to join the network.
1. Circle Technology Services, LLC (CTS) is the operator of Circle Payments Network (CPN) and offers products and services to financial institutions that participate in CPN to facilitate their CPN access and integration. CPN connects participating financial institutions around the world, with CTS serving as the technology service provider to participating financial institutions. While CTS does not hold funds or manage accounts on behalf of customers, we enable the global ecosystem of participating financial institutions to connect directly with each other, communicate securely, and settle directly with each other. CTS is not a party to transactions between participating financial institutions facilitated by CPN who use CPN to execute transactions at their own risk. Use of CPN is subject to the CPN Rules and the CPN Participation Agreement between CTS and a participating financial institution.
2. USDC and EURC are issued by regulated affiliates of Circle. A list of Circle’s regulatory authorizations can be found here.




