Get paid in stablecoins, straight to your wallet
Send a link. Your customer pays in USDT or USDC on whichever network they already use, and it arrives in a wallet you hold the keys to. MYFI never takes custody of it.
- No account for payers
- Keys stay yours
- Explorer link on every payment
- Networks
- 6Networks
- Stablecoins
- 2Stablecoins
- Held in custody
- 0%Held in custody
Accepts USDT and USDC on
- EthereumERC-20
- BNB ChainBEP-20
- TronTRC-20
- BaseERC-20
- ArbitrumERC-20
- PolygonERC-20
How it works
Three steps, and none of them are yours
Share a payment link
Every project gets its own page. Send the link, embed it, or list it publicly — whatever suits.
Your customer pays
They pick a network, get an address reserved for them alone, and send. No account, no sign-up, nothing to upload.
It lands in your wallet
Confirmed on chain and forwarded automatically. You watch it happen — you do not chase it.
Why it holds up
Built so a payment cannot go missing
The hard part of taking crypto is not receiving it. It is knowing, without doubt, that it arrived and where it went.
A dedicated address per payment
Each invoice gets a single-use address. That address is what identifies the payment — so nothing is lost when an exchange rounds the amount or a customer sends a cent short.
Confirmed in seconds
Transfers are detected as they land and forwarded without anyone pressing anything. Your customer watches it complete on their own screen.
One link, every network
Ethereum, BNB Chain and Tron from the same page. The payer picks whichever their wallet already holds.
Settlement you can see
Every payment, where it is, and what is still to arrive — with the explorer link to check it against.
Nothing left hanging
Unpaid invoices expire on their own. A payment that arrives late is still recorded, never quietly dropped.
Non-custodial, and that is not a marketing word
Money goes to a wallet you hold the keys to. There is no MYFI balance, no withdrawal to request and no approval to wait for — because at no point do we hold anything of yours to release.
For developers
Two calls, and your product takes stablecoins
Create a checkout session from your server, send the customer to the URL it returns, and grant access when the signed webhook arrives. The same shape as any hosted checkout you have integrated before — and for the same reasons.
- Your server fixes the amount
- The browser only ever receives an unguessable session id. There is nothing in the URL worth tampering with.
- Retries are safe
- A repeated reference returns the same session, with a replay header. A network blip never shows one customer two payment pages.
- Signed, timestamped webhooks
- HMAC-SHA256 over the raw body, timestamp inside the signed string. Anything older than five minutes is refused.
- Hosted checkout, your colours
- The payment page carries your project's theme, so the handoff does not look like a handoff.
POST https://myfi.jppp365.com/api/v1/checkout
Authorization: Bearer myfi_sk_…
{
"reference": "ORDER-1042",
"amountUsd": 49.00,
"returnUrl": "https://yourapp.com/thanks"
}
→ 201 Created
{
"id": "cs_9vB2…",
"url": "https://myfi…/pay/s/cs_9vB2…",
"status": "open"
}
# Send them to url. Retrying the same
# reference returns this session, not a second one.
POST https://yourapp.com/api/webhooks/myfi
X-MYFI-Signature: t=1789124523,v1=3a7f9c…
{
"type": "checkout.confirmed",
"data": {
"reference": "ORDER-1042",
"amountUsd": "49.00",
"amountPaidUsd": "49.00",
"chain": "ETHEREUM"
}
}
# Verify the HMAC, then grant access.
# This is what counts — not the customer
# reaching your success page.
Questions
The things worth asking first
What can my customer actually pay with?
USDT or USDC, on Ethereum, BNB Chain, Tron, Base, Arbitrum or Polygon. They choose at checkout, and the page names the token standard next to each network — ERC-20, BEP-20, TRC-20 — because that is the word their wallet shows them.
Does MYFI ever hold my money?
No. Each payment is forwarded to a wallet you hold the keys to. There is no MYFI balance, no withdrawal to request and no approval to wait for, because at no point do we hold anything of yours to release.
What happens if they send slightly the wrong amount?
The payment is still yours. Because every invoice has its own address, whatever arrives there belongs to that invoice — the page shows what was received and what is still outstanding, rather than rejecting a payment for being three cents short.
And if they pay after the window closes?
It is recorded, not dropped. A transfer that arrives at a project address outside an open window is flagged for reconciling and sits in your wallet until you assign it. Nothing quietly disappears.
Does my customer need an account?
No account, no card, no upload. They open the link, pick a network and send from the wallet they already use. The only thing they need is the coins.
Can I take payments from inside my own product?
Yes — create a checkout session from your server, redirect the customer, and grant entitlement on the signed webhook. It is the shape you already know from hosted checkouts, described in full in the integration guide.
Pick the door that fits
I have something to pay
Open the catalog or your payment link, pick a network, and settle it in under a minute. No account needed.
Go to paymentsI want to accept payments
Tell us what you sell and where the money should land. We set the project up with you and hand over the keys.