Skip to content

Telegram bots, Mini Apps, web shops and links

Get paid in USDC,wherever you already sell.

In a chat, a Mini App, a web shop or a plain link, Plinth charges every order automatically, in USDC, on the network your customer already uses. The money lands in a vault only you can open.

  • USDC on the network your buyer uses
  • No gas for your customer
  • Money goes to your own vault

Northwind Mini App

Mini App

Order #1042

2 items, delivery included.

25.00 USDC

Pay 25 USDC

Payment received

25.00 USDC on Base

Order confirmed.

We are packing it now.

Receipt sent

PlinthnowPayment received25.00 USDC settled to your vault

Pay with USDC

Non-custodial

25.00

Pay on

BaseArbitrumPolygonEthereum
Pay with walletPaid

An illustration. Names and amounts are placeholders.

Where we start: the audience is already there

1B+

monthly active users

Announced by Pavel Durov in March 2025. Source

0.20%

per payment, taken by the contract

Taken inside the settlement transaction; the contract refuses any fee above 1%. Today the relayer pays the network fee and records it. Pricing

?

Mini App users

No audited figure is public. Numbers quoted online range from about 150 million to 500 million, and none comes from a primary source, so we do not quote one.

Figures are as of the dates given. Telegram is a trademark of its owner. Plinth is independent and is not affiliated with or endorsed by Telegram.

Our thesis

Telegram has its own payment rails. The sellers we are building for want something different: dollars, on the network their customers already use, with the money in their own hands. Plinth is the layer that makes that automatic.

Telegram audience

  • Mini Apps
  • Shops
  • Resellers
  • Creators

Plinth gateway

automatic, per order

USDC

into the seller's own vault

Telegram is where we start, and it is full of very different sellers. They share one problem: getting paid, automatically, without handing over control of the money. The same gateway works anywhere you can show a button or send a link.

  • Mini Apps

    Games, tools and stores that already have users and need a clean way to charge them. Open the checkout from the app and unlock the order when it is paid.

  • Independent shops

    Sellers of goods and services who take orders in chat today and chase screenshots afterwards. Every order is charged at its real total and confirmed on its own.

  • Resellers

    People who buy and resell, often across borders. Dollars on the network the buyer already uses, with the money in the reseller's own vault.

  • Creators and communities

    Paid access, tips and one-off sales for people with an audience, from a single link or built into their own tools.

  1. 1

    Your app asks for the payment

    At checkout, your Mini App, bot or shop asks Plinth for a payment at the order total and shows a Pay button. Nothing is set up per product, and no links are made by hand.

    Order #1042

    2 items, delivery included.

    Pay 25 USDC
  2. 2

    They pay in USDC

    The customer chooses a network and pays with their wallet, or sends USDC to a one-time address. No account, no card.

    25.00 USDC, on the network they already use

    BaseArbitrumOP MainnetPolygonEthereumArc
  3. 3

    We check it on the chain

    Status never comes from a click or a screenshot. Plinth reads the chain and waits until the network says the payment is final.

    • The transfer is on the chain
    • The token is the network's official USDC
    • The amount covers the price
    • The network says it is final
  4. 4

    You are told, and your bot acts

    The money is already in your vault. A signed message tells your server to ship the order, unlock access or reply.

    Payment received
    Order confirmed. We are packing it.

    Sent by your app, triggered by a signed message from Plinth.

Take payments inside your Mini App, bot or shop.

When someone checks out, your app asks Plinth for a payment at the order total and shows a Pay button. Nothing to set up per product, and no links to make by hand. Your AI assistant can add it to the project you already run.

/buy

Order #1042

Pay 25 USDC

Your app, a moment later

Order confirmed.

Or paste a link. One price, no code.

For one service, one course or a single sale. Make a link in the dashboard and drop it into a message. Nothing to install.

Payment link

25.00 USDC

plinth.zerolayer.online/l/…

Create a test link

Circle

Issues USDC and EURC, the only two assets Plinth counts. Each address comes from Circle's published list.

Arc

Circle's own blockchain, and where Plinth is live on mainnet. USDC pays the network fee, and a payment is final after one confirmation.

Web3Auth

Sign in with Google, email or a wallet. No password to keep.

Logos belong to their owners and show what Plinth is built on, not a partnership or an endorsement.

Each invoice address is computed from five inputs. Your customer can be shown it immediately. The contract behind it is created only when money arrives, and it exists to sweep to your vault.

How the address is derived

  • merchant
  • invoice
  • USDC contract
  • your vault
  • chain
one address
  1. 01

    Invoice created

    The address is computed. Nothing is deployed.

    No gas spent

  2. 02

    Customer pays

    USDC lands on an address that has no code yet.

    No gas spent by you or us

  3. 03

    Contract appears and sweeps

    One transaction creates the contract and moves the funds to your vault.

    Relayer pays the fee

Who can do whatYouPlinthPayer
  • Withdraw from your vaultYou canPlinth cannotThe payer cannot
  • Change where funds are forwardedActivates after a delay you can watchYou canPlinth cannotThe payer cannot
  • Send a sweep anywhere but your vaultThe function takes no argumentsYou cannotPlinth cannotThe payer cannot
  • Create payments and read their statusWith your API keyYou canPlinth cannotThe payer cannot
  • Pay an invoiceYou cannotPlinth cannotThe payer can

  • The owner is your wallet

    The vault has one authority. There is no operator, admin or upgrade role.

  • Payout rules wait, in the open

    Forwarding changes activate after a delay you can watch. Going back to keep-in-vault is instant.

  • Every claim is checkable

    Each one maps to a contract call or an event you can read on a block explorer.

Read the security model

CheckoutArc
25.00USDC
Pay with walletSend to address
  • MetaMaskConnected
  • Coinbase Wallet
  • WalletConnect
sign ReceiveWithAuthorization
value 25.00 USDC to router
Sign and pay

One signature. You pay no network fee.

Illustration of the hosted checkout. Amounts and addresses are placeholders.

One signature, no gas for the customer.

Customer needs
A browser or mobile wallet holding USDC
Network fee
None for them where the network's USDC supports signed authorisations. The relayer pays.
How it works
They sign one typed message to our router and we relay it on-chain.
When it is not offered
If the network or wallet cannot do it, the checkout says so and offers the address instead.

Every payment shows its settling sequence and the network it ran on. The demo is read-only and uses sample data, so you can look around without an account.

Sample data

Payments

Arc

Received

465.00

Settled to vault

325.00

In flight

140.00

ReferenceStatusUSDC
order-1046Settled25.00
order-1045Confirming120.00
order-1044Awaiting payment8.50
order-1043Settled300.00
order-1042Underpaid42.00

Sample data. Nothing in this window is a real payment.

USDC, the only asset Plinth counts

Live on Arc. 23 more networks with native USDC are coming soon, each opening after its own on-chain check.

Each network's USDC address comes from Circle's published list and is probed on-chain before the network can be enabled. A look-alike token is recorded and ignored, never credited.

Read the network registry
Live on mainnet

Arc

chain 5042

USDC contract
0x3600…0000
Final after
1 confirmation
Network fees in
USDC
Relayer
active
Checkout
wallet and address

Every network where Circle issues USDC natively is on the list.

See each network
ArcLiveBaseSoonArbitrum OneSoonOP MainnetSoonPolygon PoSSoonEthereumSoonAvalanche C-ChainSoonCeloSoonCodexSoonCronosSoonHyperEVMSoonInjectiveSoon
InkSoonLineaSoonMonadSoonMorphSoonPlasmaSoonPlumeSoonSeiSoonSonicSoonUnichainSoonWorld ChainSoonX LayerSoonXDCSoon

Wallets the checkout can connect to for one-signature payments.

Marks belong to their owners and show compatibility, not partnership.

MetaMaskCoinbase WalletRainbowWalletConnectPhantomTrust WalletLedger

Exact amounts
Decimal strings with integer twins. No floats.
Idempotent
Retry a request with the same key and get the same payment.
Signed webhooks
HMAC-SHA256, 5 minute window, 8 retries over about 10 hours.
Truthful status
Derived from verified on-chain facts, never from a redirect.
create a payment
curl -X POST $PLINTH_API/v1/payment-intents \
  -H "Authorization: Bearer sk_test_…" \
  -H "Idempotency-Key: ORDER_ID" \
  -H "Content-Type: application/json" \
  -d '{ "amount": "25.00", "order_reference": "ORDER_ID" }'

# → { "status": "AWAITING_PAYMENT", "checkout_url": "…" }

Events you can subscribe to

payment.detectedpayment.confirmedpayment.completedpayment.underpaidpayment.overpaidpayment.expiredpayment.latepayment.invalid_asset
settlement.submittedsettlement.completedsettlement.failed
refund.requestedrefund.completed

Describe what you want in plain English. The assistant works inside the project you already have, with the real order total, and tells you whether the four checks passed.

  • A hosted MCP server

    One URL and your key in a header, nothing to install. 29 tools for payments, links, invoices, refunds, webhooks and reports, plus the integration playbook.

  • Docs written for agents

    /llms.txt and /llms-full.txt, generated from the same playbook the MCP server serves, and an OpenAPI 3.1 document.

  • A prompt per project

    One for a store, a SaaS, a bot or bookings. Each ends with the four checks the agent must pass.

  • Safe by design

    Idempotency keys and signed webhooks make a repeated call harmless. No tool changes where money goes: payout wallets, vaults, keys and the team need you, signed in.

claude mcp add --transport http plinth https://plinth-api.onrender.com/mcp --header "Authorization: Bearer sk_test_…"

Your assistant, in your project
Add Plinth checkout to my store.

I will read the playbook, create a test payment and check the result.

get_integration_playbook()

list_networks()

create_payment({ amount: "25.00" })

get_payment("AWAITING_PAYMENT")

  • A real total is charged
  • Paid only from the webhook
  • A forged webhook is rejected
  • A replayed one is ignored

An illustration of a session. Tool names are the MCP server's own.

Any assistant that can use an MCP server or read /llms.txt.

Marks belong to their owners and show compatibility, not partnership.

  • Claude Code
  • OpenAI Codex
  • Cursor
  • GitHub Copilot
  • Gemini CLI
  • Windsurf
  • Cline
  • Devin

More in the full FAQ, or ask us directly through contact.

  • The checkout is a normal web page, so a Mini App can open it, and your server is told by a signed message when it is paid. It has not been tuned for Mini App themes yet, and there is no dedicated Mini App component today.

  • Telegram sets its own rules for what may be sold inside Mini Apps, especially digital goods on phone app stores. Check the current rules for your case. Plinth links also work in plain chat messages and in an ordinary browser.

  • Nobody in between. Each invoice has its own address, and funds are swept from it into a vault that only your wallet can withdraw from. Plinth runs the relayer that pays the network fee for the sweep, and that relayer cannot choose a destination or withdraw.

  • Not with Pay with wallet, where the network's token supports signed authorisations: they sign once and our relayer pays. With Send to address they pay the normal network fee for the transfer themselves; on Arc that fee is paid in USDC.

  • When you receive the signed payment.confirmed webhook. It fires only after the transfer meets the network's finality rule, which differs per network. Never fulfil from a redirect or a client-side callback.

  • Each case has its own state and its own webhook: underpaid, overpaid and late payment. Nothing is silently rounded or guessed. Several transfers to the same invoice are added up.

  • Only the official token the payment was created in counts: USDC, or EURC on Arc. Anything else sent to the address is recorded as an invalid asset and is not credited.

  • Not yet audited, and live on Arc mainnet. The contracts have not been independently audited, so start with small amounts. Every other network opens only after its own on-chain check and an explicit approval.

  • 0.20% of each payment, taken inside the settlement transaction, with a 1% cap fixed in the contract. The pricing page has the details.

  • A refund is a transfer you sign from the account that received the funds, your vault or your payout wallet. It is marked complete only when that transfer is verified on-chain. The fee is not refunded.

  • No. Plinth is independent and is not affiliated with or endorsed by Telegram. The Telegram name and mark belong to their owner and are used here only to say where it can be used.

Start in minutes.Test it for free.

Create an account, set up a vault and take your first payment in USDC on Arc mainnet. The contracts are not yet independently audited, so start small.