Fees & gas
What P2Flux charges, where it comes out, and who pays the network for each kind of transaction.
Fees are contract constants, not configuration: readable on chain and unchangeable without deploying a new contract. They are split out inside the payment transaction — there is no invoice and no balance to deduct from.
One-time payments
The fee is 1% of the amount, taken in the same transaction that pays you. The buyer sends that transaction themselves, so its network gas is paid in ETH by the buyer and never appears in these figures.
Verification checks this arithmetic against the receipt: if the fee is not exactly 1% of the signed amount, the payment does not verify.
Recurring payments
A renewal has three separate pieces of money, and they do not all come from the same side.
- The P2Flux fee, 2% of the amount. Deducted from the amount, so the merchant funds it.
- The subscription execution fee, a flat 0.10 USDC per charge. Also deducted from the amount, so the merchant funds this too. In the contract this constant is named NETWORK_FEE, which is easy to misread — it is a fixed P2Flux fee for executing the renewal, not blockchain gas and not a pass-through of it.
- The gas reimbursement. Added on top of the amount, so the customer funds it. It is what the customer pays back for the network cost of a renewal P2Flux submitted on their behalf.
The debit is not simply the plan price. The contract charges amount + gas reimbursement, so a customer on a 29.00 plan is debited 29.00 plus a few cents in the same stablecoin. The amount they authorized covers both — the signature carries a separate ceiling for the reimbursement.
On a 29.00 USDC renewal where the network cost of that transaction quoted at 0.02 USDC:
The reimbursement is whatever that specific transaction is quoted to cost — 100% of it, with no markup and no haircut. It is not a fixed figure, so it moves with the network. If it quotes at 0.02 USDC the customer is debited 29.02; if conditions are cheaper it is less.
The contract refuses an amount that does not exceed the two merchant-funded fees, so a recurring charge has to be meaningfully larger than 0.10 USDC. The exact floor is derived from the fee constants rather than hardcoded.
Where each part goes
One transaction, three destinations, none of them a P2Flux balance the merchant later withdraws from.
Blockchain gas
Gas is the blockchain’s own charge for processing a transaction. It is set by the network, paid in ETH, varies with congestion, and is entirely separate from every P2Flux fee above.
Gas in a subscription
A subscription involves up to four distinct actions, and they do not all cost gas. The practical question — does a customer need ETH every month? — is answered by the third row: no.
Two ceilings apply to the reimbursement, and the lower one wins: the maximum the customer agreed to when they authorized the subscription, and a hard cap of 0.05 USDC written into the contract, which no authorization can raise.
If the quote turns out slightly low, the difference is absorbed on the P2Flux side rather than billed to anyone afterwards — a renewal is never re-charged to correct an estimate.
Where the numbers live
The values on this page come from the contract definitions in P2Flux/contracts, and are readable on chain: FEE_BPS and NETWORK_FEE on the recurring contract, GAS_REIMBURSEMENT_HARD_CAP for the ceiling, and the one-time rate in the splitter. A subscription’s own fee_bps and network_fee are echoed by /v1/subscriptions/resolve, so a checkout can state the terms without hardcoding them.