PFlux DOCS
GitHub Integration enquiries Start integrating
GET STARTED/NETWORKS & ASSETS

Networks & assets

One network, one asset. Both are pinned into the deployment rather than chosen per request.

CHAINBase Sepolia
CHAIN ID84532
ASSETUSDC
DECIMALS6

Networks

One network is supported, and it is a test network. Value moved on Base Sepolia is not real money; the tokens come from a faucet. Base mainnet is not currently available.

NETWORKCHAIN IDEXPLORERSTATUS
Base Sepolia84532sepolia.basescan.orgAvailable · testnet
Base mainnet8453Not currently available

Assets

One asset is supported. The token address is bound into the contract at construction and checked on every charge, so a deployment is USDC-or-nothing — passing a different token is not a configuration option, it is a different deployment.

ASSETNETWORKCONTRACTDECIMALS
USDCBase Sepolia0x036CbD53842c5426634e7929541eC2318f3dCF7e6
UNITS

Requests take a decimal string — "100.00" — and responses echo both that and the base-unit integer. 1 USDC is 1,000,000 base units. Amounts accept at most six decimal places and at most twelve digits before the point.

Contracts

Two contracts, both immutable once deployed: not upgradeable, not proxied, no delegatecall, and no owner function that can move funds. Neither holds a balance between calls.

CONTRACTWHAT IT DOES
P2FluxSplitterOne-time payments — settles the payment and splits the fee in a single transaction.
P2FluxRecurringRecurring payments — charges a customer-signed EIP-712 authorization once per period.

Addresses are deployment-specific and are not published here. Every response that needs one returns it: /v1/payments returns the splitter in its pay block, and the subscription endpoints return the recurring contract. Read the address from the API rather than pinning a constant.

Source, ABIs and the EIP-712 definitions are public: github.com/P2Flux/contracts.

Confirmation policy

How deep a transaction must be before P2Flux calls it settled. These are operator settings, not request parameters — a caller cannot ask for a weaker one.

FLOWPOLICYWHY
One-time payment, initial subscription charge, customer revoke3 confirmationsSomeone is watching a spinner. Roughly six seconds at two-second blocks.
Unattended renewalssafeNobody is waiting. Derived from batch data already posted to L1, so undoing it needs an L1 reorg.
Something more than a standard integration?
Marketplace flows, platform billing and custom settlement logic.
Discuss an integration