Technical Architecture of a Crypto Payment Gateway

hugopino1 pts0 comments

Inside a Crypto Payment Gateway's Architecture | Zeno Bank

Skip to content

Live Demo

Get Started

Home

About

Docs

Support

Live Demo

Get the plugin

Terms & Conditions

Privacy Policy

The Architecture Behind a Multi-Million Dollar Crypto Payment Gateway

Hugo Pino

June 10, 2026 •

· min read

In this article, we’ll break down how our crypto payment gateway, which processes millions of dollars a month, works .

We’ll reveal the exact trick we use to process unlimited payments on the Lightning Network without touching a single node or rebalancing channels .

We’ll also dive into how we enable a gasless wallet on EVM networks to move several tokens in a single transaction, explain concepts about the Solana blockchain that very few people know, and how we manage to save up to 70% on fees on the Tron blockchain, a blockchain with a very controversial founder that went from being one of the cheapest on the market to one of the most expensive.

A crypto payment looks simple from the user’s side: select a token, send funds, and wait for confirmation. Behind that flow, our payment gateway has to coordinate pricing, wallet allocation, blockchain monitoring, and fund movement across multiple chains.

At Zeno Bank, we process thousands of payments every day across networks like Ethereum, Solana, Tron, and Bitcoin. This article breaks down the architecture behind that system and how payments move from checkout creation to final fund distribution.

Checkout Creation

Every payment starts when a merchant creates a checkout through the Zeno Bank API (POST /api/v1/checkouts), sending us the fiat amount and their own orderId.

That orderId is what ties Zeno Bank to the merchant’s system. Every webhook we send back includes it, so the store can match up payments, update order statuses, and keep track of everything on their side.

Merchants can create a checkout either by interacting directly with our API or by using our plug-and-play integrations, such as our WooCommerce Plugin and PrestaShop Module, which handle the API communication internally

When a checkout is created, our system also fetches live crypto prices and saves a snapshot of these rates in the database. This unique rate is tied directly to the newly created checkout and will be used to handle all token conversions.

For example, if a store creates a checkout for 100 USD and the customer wants to pay in Bitcoin, we use this saved rate to calculate the exact amount of BTC required.

Because crypto prices are volatile, we refresh this rate every hour for checkouts that are currently open. Without these regular updates, stale rates create a major vulnerability. For instance, if Bitcoin’s market price drops significantly below the checkout rate, a user could exploit the difference by paying with cheaper tokens bought elsewhere, causing a substantial financial loss for the store.

Stablecoin prices against fiat are rarely a perfect 1:1 ratio due to minor market fluctuations.

To ensure a more user-friendly experience, if a stablecoin fluctuates by less than 1% from its peg, our system automatically rounds the exchange rate to a flat 1:1.

For example, in this screenshot, even though USDT is at $0.9995, our system automatically rounds its price to $1.

Token Selection and Intermediary Wallet Assignment

After picking a payment token and network, the user clicks Next , and the gateway shows the destination wallet address and the exact amount to send.

To calculate how many tokens the user needs to send and show it to them, we convert the payment amount using the exchange-rate snapshot saved for that checkout

The wallet address is where crypto differs from a normal payment gateway.

Unlike traditional gateways, where every transaction ties back to a specific identity or bank account, the blockchain is pseudonymous , when a payment lands, all you see is a wallet address and an amount. Nothing reveals who actually sent the funds .

That creates a problem: if several customers pay into the same merchant wallet, there’s no built-in way to tell their transactions apart. So our system needed a reliable way to match each incoming payment to the checkout it belongs to.

In the early versions of our crypto payment gateway, every purchase from a store went to one shared wallet. To tell them apart, we gave each customer a slightly different total.

Say a store sold tickets to a crypto event for $120. Every buyer sent tokens to the same wallet, but with a unique decimal amount: one checkout might show 120.0343 USDT, the next 120.041 USDT. The backend used those tiny differences to tell which payment belonged to which checkout.

Since all funds arrived at the exact same wallet, we didn’t have to worry about moving them around or managing separate wallet addresses. This approach allowed us to launch much faster.

But users frequently sent the wrong amount, rounded decimals incorrectly, or ignored the exact value shown on the checkout page. Even small mismatches prevent...

payment checkout wallet crypto gateway amount

Related Articles