Source code · Self-hosted · Non-custodial

Run your own stablecoin checkout. Earn a platform fee on every payment.

Onboard merchants, set a fee in basis points for each one, and collect it on-chain inside the customer's own payment. The money goes straight to the merchant's wallet. You never hold it.

Non-custodial software, sold as source code. Whether operating it needs a licence depends on your jurisdiction. That is your responsibility, and this page is not legal advice.

  • Solana · USDC, USDT
  • Base · USDC router, tested, not yet deployed
  • Signed webhooks
  • SK / EN checkout
Checkout screen in dark mode: pay from exchange with an exact amount of 48.003714 USDC, the merchant address and a QR code Checkout screen in light mode: pay from exchange with an exact amount, the merchant address and a QR code
Mobile checkout confirming a payment: sent, seen on the Solana network, confirming

One payment, split in one transaction

100.00 USDC

Merchant
99.50
Your fee
0.50

Example at 50 bps. You set the fee per merchant.

How the money moves

Customer money never touches you. Your fee arrives anyway.

There are two ways to pay, and in both the customer pays the merchant directly. Your fee is either taken on-chain in the same transaction or debited from credit the merchant paid you in advance.

Wallet pay

An atomic split, enforced on-chain

  • Built in the customer's browser and signed in their own wallet. Both transfers settle together, or neither does.
  • Solana: two token transfers plus a reference key in one transaction. Base: a stateless router contract that holds nothing.
  • Needs no fee credit. It works for every merchant, all the time.
Exchange pay

A plain transfer, with the fee taken from prepaid credit

  1. 1
    Merchant prepays fee credit

    The merchant tops up credit with you (for example 50 USDC). Each top-up is an entry in an append-only ledger.

  2. 2
    Customer withdraws from an exchange

    They send 100.003714 USDC straight to the merchant's address. The unique suffix identifies the order.

  3. 3
    The fee is debited from credit

    The watcher matches the exact amount on-chain, marks the invoice paid and debits your 0.50 fee from the merchant's credit.

  4. !
    No credit, no exchange pay

    Exchange pay is offered only while the merchant's credit covers the fee. Wallet pay keeps working.

Operator arithmetic

Run the numbers with your own inputs.

Platform fees = merchants × monthly volume per merchant × fee in bps ÷ 10,000. The starting values are only an example. Change them to match your market.

Your inputs

0.50% · the product accepts 0 to 1,000 bps per merchant

Platform fees per month, from your inputs

$5,000

Per year (× 12)
$60,000
Payment volume through your checkout
$1,000,000
Fee each merchant pays per month
$250
Merchant receives of each 100 USDC
99.50

This only multiplies the numbers you entered. It is not a forecast, an estimate or a promise of income. Real volume depends on the merchants you sign and what they sell. Your costs (hosting, RPC, support, compliance) and network fees are not deducted.

Product tour

What your merchants' customers see. These are real screens.

Captured from the checkout app on Solana devnet. The demo store is labelled DEMO and runs on test tokens.

Pay from exchange, dark mode Pay from exchange, light mode

Real screens from a devnet run: every invoice shown was paid on-chain with test tokens.

Operator console · merchant portal

Run the business from one console.

Merchants, fee in bps per merchant, fee-credit ledgers, invoices across all merchants, webhook deliveries, settings and the audit log. Merchants get their own portal with their invoices, balance and webhook test.

Operator console overview
Overview: revenue by mode and asset
Merchant list with fee in basis points
Merchants: fee bps, credit, status
Invoice detail with timeline and webhook deliveries
Invoice timeline and webhook deliveries
Operator settings: brand, fees, chains
Settings: brand, fees, chains, sanctions
Merchant portal
Merchant portal

Real screens from a devnet test run. The merchants are test accounts created for that run; every amount is a real on-chain payment with test tokens.

Two payment modes

It works whether the customer pays from a wallet or an exchange.

Many stablecoin payers send from an exchange withdrawal, and a withdrawal cannot call a split contract. That is why the checkout has two modes.

Wallet payExchange pay
Customer pays withPhantom, MetaMask or another walletA withdrawal from Binance, OKX, Bybit or any exchange that sends on-chain
How the order is identifiedA per-invoice reference key (Solana) or an invoice key in the router event (Base)A unique amount, e.g. 48.003714 USDC
How your fee is collectedIn the same transaction, to your fee addressDebited from the merchant's prepaid fee credit
Enforced byThe chainThe service gate: no credit, no exchange pay
Chains todaySolana. Base router tested locally, not yet deployed.Solana. Tron on the roadmap.

Underpaid, overpaid and expired invoices each have their own state and screen. If a transfer is short by an exchange fee, it goes to review and is never auto-marked paid. Transfers between two accounts on the same exchange never reach the chain, so they cannot be detected. The checkout tells the customer this.

Security and compliance

Built so the riskiest parts simply don't exist.

Holding customer money is what usually triggers money-transmitter licensing. This software is designed never to do it.

Non-custodial by design

Payments land on addresses the merchant controls. There are no in-app balances, no escrow, no pooled wallets and no fiat conversion.

No keys or signing on the server

Transactions are built in the payer's browser and signed in their wallet. The server only reads the chain. It never builds, signs, relays or submits a transaction.

Ships keyless, fee hook empty

No bundled RPC keys and no default fee address. You bring your own RPC provider. The fee stays off until you set your own operator address.

Append-only audit log

Operator actions and fee-credit entries are written to append-only ledgers, so changes to merchants and their fee credit leave a trail.

Sanctions screening hook

A screening interface with a file-based reference screener, plus a script that converts the OFAC SDN list you download. A match flags the invoice. You can plug your own KYT provider into the same interface.

Signed, retried webhooks

An HMAC-SHA256 Mikodes-Signature header, idempotent event IDs, up to 8 attempts with backoff. Every attempt is recorded, and a delivery that keeps failing ends in a dead-letter state.

Redaction by default

Merchant payout addresses are redacted in operator views. Revealing them is an explicit request, and every reveal is written to the audit log. API keys are stored only as hashes.

Source you can audit

Full TypeScript and Solidity source. The Base router has no owner, no admin, no upgrade path and no fee logic. It makes two transfers and emits an event.

Your licences, your jurisdiction

Custody is the usual licensing trigger, and this software avoids it. Whether your operation still needs registration (FinCEN MSB, MiCA/PSD2 and others) depends on where and how you run it. Ask a lawyer. This is not legal advice.

What you get

Source code, a stack you know, and a short list of what you need to bring.

Included

  • Payment server: REST API, chain watcher, webhook delivery, fee-credit ledger
  • Checkout app: wallet and exchange pay, public status page, labelled demo store, SK/EN, light/dark
  • Solana wallet-pay builder and verifier
  • Base router contract (Solidity) with Hardhat tests, plus its verifier
  • Sanctions screening interface and OFAC SDN conversion script
  • Operator console and merchant portal

Tech stack

  • TypeScript
  • Node.js 20+
  • Fastify
  • SQLite
  • React
  • Vite
  • @solana/web3.js
  • viem
  • Solidity 0.8.28
  • Hardhat
  • Vitest

Requirements

  • Node.js 20 or newer
  • Your own server and domain with HTTPS
  • Your own RPC keys for Solana and Base. None are included, because providers forbid sharing keys.
  • Your operator fee addresses, and self-custody payout addresses for each merchant

Not included

  • Hosting or a running instance. MIKODES runs nothing for you.
  • RPC or API keys
  • A KYC/KYT provider subscription
  • Fiat on/off-ramp or conversion
  • Legal or licensing advice

Editions

One checkout for one store, or a platform for many merchants.

One-time licence for the source code. You host it. MIKODES takes no cut of your payments.

Merchant Edition

For a single store that wants its own checkout.

$149–199 one-time

  • Hosted checkout and public status page for one merchant
  • REST API and signed webhooks
  • Wallet pay and exchange pay
  • SK/EN checkout, light and dark
  • WooCommerce plugin roadmap

Coming to CodeCanyon

For operators

Operator Edition

For running a checkout business across many merchants.

$2,500–6,000 one-time

Optional installation: $499

  • Multi-merchant, with a fee in bps per merchant
  • Fee-credit ledger for exchange pay
  • Operator console and merchant portal
  • White-label brand settings
  • Sanctions screening hook, audit log and redaction
  • Everything in the Merchant Edition

Prices in USD. Installation is optional. Licensing, AML and sanctions compliance, and tax where you operate are your responsibility.

Roadmap

What exists today and what doesn't yet.

No dates are promised. Items move to "shipped" only when they are built and tested.

  1. Built

    Operator console and merchant portal

    Overview, merchants, fee credit, invoices, webhooks with retry, audit log, eight settings sections that change the checkout, system health, and a merchant portal with payment links and developer snippets.

  2. Built

    Solana wallet pay and exchange pay

    USDC and USDT, atomic split, unique-amount matching, fee credit, signed webhooks, status page.

  3. Next

    Base mainnet

    The USDC router contract is written and tested locally with Hardhat. It is not deployed to mainnet yet.

  4. Planned

    Tron USDT

    A plain USDT transfer identified by unique amount, with the fee from fee credit. There will be no split router, because on Tron a split costs the payer about $8 on a first payment (measured 2026-09-22).

  5. Planned

    WooCommerce plugin

    A thin client that creates invoices over the API and verifies signed webhooks. Not built yet.

FAQ

Straight answers

Do I, as the operator, ever hold customer money?

No. The customer pays the merchant's own address. In wallet pay your fee goes to your address in the same transaction. In exchange pay you only ever receive the merchant's prepaid fee credit, which is your own service revenue.

Do I need a licence to run this?

That depends on your jurisdiction and your business model. The software avoids custody, which is the usual trigger, but prepaid fee credit and your local rules still need a lawyer's review. This is not legal advice.

Does MIKODES take a cut or run anything?

No. The fee hook ships empty, no MIKODES address is set anywhere, and MIKODES does not operate any instance. You host it, and your fees go to your addresses.

Why would a merchant use my checkout instead of Shopify or a free plugin?

Some shouldn't. Shopify Payments accepts USDC on Base natively, and free non-custodial WooCommerce plugins exist (checked 2026-09-22). Your market is the merchants they don't reach: regions where USDT is the working dollar, and niches that card processors refuse. Those niches carry sanctions exposure, which is why the screening hook is built in.

What happens when a merchant's fee credit runs out?

New invoices for that merchant stop offering exchange pay. Wallet pay keeps working, because its fee is collected inside the payment itself.

Can customers pay straight from Binance or OKX?

Yes, through exchange pay. They withdraw the exact amount shown, and the checkout explains how to set the amount the recipient receives. Transfers between two accounts on the same exchange never reach the chain and cannot be detected.

Which chains and tokens work today?

Solana with USDC and USDT. The Base USDC router is written and tested locally but not deployed to mainnet. Tron is on the roadmap.

Will wallets warn my customers?

Possibly, at first. Phantom shows a "domain is new or has not been reviewed" notice for new domains, and every operator deploys on their own domain. Phantom has a review form for this.

Which languages does the checkout support?

English and Slovak, each in light and dark themes.

Your checkout, your merchants, your fee.

Source code you host, a fee collected by the chain, and no customer money on your books.