← Back to blog
EngineeringMay 12, 2026·7 min read

Why every L2 needs the same checkout: a developer note

Base, Arbitrum, Optimism, Polygon: 90% of L2 volume. Build separate integrations and you write the same code four times. Abstract the chain at the checkout layer.

Plaitr
PlaitrDecentralized payment rails
Why every L2 needs the same checkout: a developer note

A developer reading this paragraph: stop building a separate checkout integration for every L2.

In 2026 the Layer 2 landscape has consolidated. Arbitrum, Optimism, and Base process nearly 90 percent of all L2 transactions. Base alone holds 55 percent of L2 transaction volume. Polygon sits behind them with the longest history and deepest EVM compatibility. Each chain has its own native USDC contract address, its own gas token, its own block-confirmation profile, and its own webhook quirks.

If you build a checkout integration per L2, you write the same code four times. You maintain four contracts. You debug four reorg edge cases. The developer note is this: do not.

What "one checkout, every L2" actually means

The chain you settle on is an implementation detail. The customer should see one checkout. The merchant should see one webhook event. The accounting team should see one settlement asset.

A correctly designed multi-L2 checkout abstracts these things:

Address translation. The merchant configures a single payout address. The checkout layer routes USDC on Base, USDC on Arbitrum, USDC on Optimism, USDC on Polygon all to the same wallet, even if the underlying contracts and bridge logic differ.

Confirmation policy. Each L2 has its own time-to-finality (Base ~2 seconds, Arbitrum ~250 milliseconds for sequencer confirmation, Optimism ~2 seconds, Polygon ~2 seconds). The checkout layer waits the right number of confirmations per chain without exposing the difference to the merchant.

Webhook normalization. A payment.confirmed event fires on any chain. The payload includes which chain was used as a field, not as a different webhook event type. The merchant subscribes once.

Gas token abstraction. The customer never has to hold ETH on Base or MATIC on Polygon to pay. The merchant never has to fund a gas wallet on each chain. The checkout layer handles this either through gasless meta-transactions (EIP-2771 style) or by sponsoring gas through the protocol.

When all four are abstracted, the developer integrates once and supports four L2s. When even one is leaky, you end up with chain-specific code paths that compound bug surface and slow shipping.

What changed in 2026

Two infrastructure improvements removed the excuses for fragmented L2 checkouts.

EIP-4844 blob transactions. The Ethereum Dencun upgrade (March 2024) "cut the L1 data component dramatically for all rollup-based L2s." Fees across Base, Arbitrum, and Polygon dropped 90 to 95 percent. The economics of small-value payments on L2 finally make sense for everyday merchant transactions.

Superchain interoperability. Optimism's Superchain is "a horizontally scalable network of chains sharing the OP Stack codebase, allowing for seamless communication and asset transfer between different L2 networks without fragmentation." Base is part of the Superchain. The asset bridging between Base, Optimism, and the rest of the OP Stack is solving in 2026 in a way it was not in 2023.

These two together mean a correctly-built checkout layer can present "L2" as the unit and let the customer pick the specific chain at the wallet step.

What the chains are actually good at

The merchant choosing default L2s should think about customer geography and use case, not just gas cost.

Base is the default consumer checkout. The Coinbase user base of 100M+ accounts treats Base as a primary chain. USDC on Base is the closest crypto-native equivalent to "the customer's bank account dollars." If your customers are US/EU consumers, Base is the lowest-friction option.

Arbitrum is the treasury and B2B chain. Deeper DeFi liquidity, lower slippage for large swaps, more institutional capital parked there. If your business model includes settling six-figure invoices or accepting payments from other crypto-native businesses, Arbitrum is the right default for those flows.

Optimism is the future-compatibility chain. The Superchain ecosystem will grow over the next 3 to 5 years. Building Optimism-compatible today is the cheapest insurance against fragmentation in 2027.

Polygon is the high-volume consumer chain for emerging markets. Gas is fractions of a cent. The user base skews international (LATAM, SEA, India). If your customers are not US-first, Polygon should be in your checkout from day one.

A correctly-designed checkout supports all four by default and lets the customer pick.

What goes wrong when you build per-chain

Three concrete failure modes if you build separate checkouts per L2.

The bridge confusion at customer side. The customer has USDC on Base. Your checkout only accepts USDC on Arbitrum. The customer sees an unfamiliar bridge step, fumbles it, fails the checkout. You lose the conversion. Industry data suggests bridge-step abandonment rates are 30 to 50 percent.

The reconciliation hell on merchant side. Four chains means four daily settlements, four accounting reconciliations, four chain-explorer URLs to investigate disputed transactions. Multiply by 365 days. The cost of "we support every L2" without abstraction is a half-FTE of accounting overhead.

The reorg edge case multiplied. Each L2 has its own reorg behavior. Base reorgs are rare but can happen during sequencer downtime. Arbitrum's sequencer has had documented downtime incidents. Polygon's bor chain has a different finality model than the OP Stack. Building reorg-tolerant code per chain is four times the work of building it once at the checkout layer.

The right architectural unit is "USDC on any L2"

The clean abstraction is: the merchant denominates prices in USDC. The customer pays in USDC on whatever chain their wallet has balance on. The checkout routes through the appropriate chain at settle-time. The merchant's bank account or wallet sees USDC arrive without needing to know which chain it came from.

Plaitr's architecture works this way. The merchant connects one payout wallet (or one bank account for fiat). The customer's wallet exposes whichever chains it supports. The checkout layer accepts payment on any supported L2 (and L1: Ethereum, Solana, Tron, BNB) and routes value to the merchant's chosen settlement asset. The webhook event includes a chain field but is otherwise normalized.

This is what "one checkout, every L2" means in practice. The merchant writes integration code once. The customer pays from whichever chain they want. The chain layer becomes an implementation detail.

What this means for your stack

If you are currently building a multi-L2 checkout from scratch, the design rule: abstract the chain. Treat it as a payload field, not a code path. Use a payment processor that exposes one webhook event per payment regardless of source chain. Reject any vendor whose API requires you to specify chain at integration time.

If you are migrating from a single-chain checkout (most likely Ethereum mainnet) to a multi-L2 setup, do not migrate chain by chain. Migrate to a unified checkout layer in one shot. The intermediate state of "we support Ethereum and Base and we're rolling out Arbitrum next quarter" is the worst possible UX for customers and the worst possible maintenance cost for you.

The L2 fragmentation problem is solved at the checkout layer. Build there, not at the chain layer.

Filed underEngineeringCrypto paymentsPlaitr

Ready to accept crypto?

Login is open. Zero KYC, every chain, flat pricing.

Get started