Skip to content

Built forgame top up stores

Accept USDT.Paid straightto your wallet.

Every invoice gets its own deposit address that can only pay out to you. Your customer pays the network fee, so you never need to hold BNB.

0.05 USDT
network fee, paid by your customer
0 BNB
needed in your wallet
About 15 s
from payment to confirmed
Qamar TopupsOrder #4817

Total to send

25.05

USDT · BEP20

Waiting for payment

Deposit address · BEP20 only

0x7a3E91cB04d5e1F0a8C2b6D9e47F3c5A29F4c91F

BEP20 only

Paid straight to Qamar Topups. Mals Pay never holds it.

01 / 04

Your customer scans and pays

One address for this invoice only. Any wallet or exchange that sends USDT on BNB Smart Chain works.

USDT · BEP20

Your customers payfrom the walletthey already have.

  • Binance
  • Trust Wallet
  • MetaMask
  • OKX
  • Bybit
  • Bitget Wallet
  • Coinbase Wallet
  • Any BEP20 wallet

Examples of wallets and exchanges that send BEP20 USDT. Not affiliated with Mals Pay.

Built so nobodycan touchyour money.

01

Paid to your wallet, by design

The deposit address is computed from your payout wallet and the fees. Change either one and it becomes a different address. Nobody can redirect a payment.

02

No BNB, no gas math

Our relayer pays the gas and takes 0.05 USDT back inside the same transaction. Your customers send USDT, you receive USDT.

03

One address per invoice

No exact amounts to match. Customers can pay from any wallet or exchange, in one payment or several, and it all counts.

04

An API that survives retries

Idempotency keys on every write, signed webhooks with timestamps, and invoice states you can trust after a crash or a double click.

Your customer pays. The contract splits it. Your wallet receives it. Nobody holds it in between.

Three calls from order to paid

1

Create an invoice

Send the amount and your order id. You get a deposit address and a checkout link.

POST /v1/invoices01

curl https://api.pay.mals.app/v1/invoices \
  -H "Authorization: Bearer sk_test_…" \
  -H "Idempotency-Key: order-4817" \
  -d '{"amount": "25", "external_ref": "order-4817"}'
2

Send your customer to checkout

A hosted page with the QR code, the exact total, a countdown and live status. Works on any phone.

201 Created → redirect02

{
  "id": "inv_01a0ce8407a2736f…",
  "status": "pending",
  "total": "25.05",
  "deposit_address": "0x7a3E91cB04d5…29F4c91F",
  "checkout_url": "https://pay.mals.app/i/inv_01a0…"
}

// send the customer there
res.redirect(invoice.checkout_url);
3

Get the webhook

invoice.confirmed arrives signed with your secret. Ship the order. The money is already on its way to your wallet.

Webhook-Signature03

// invoice.confirmed → ship the order
const [t, v1] = parse(req.headers["webhook-signature"]);
const ok = hmacSha256(secret, t + "." + rawBody) === v1
        && Date.now() / 1000 - t < 300;

What nobody can do with your money

The rules live in a small smart contract that nobody can upgrade. Our key can only choose where our own fee goes, never your share. The code will be public and verified on BscScan at launch.

Redirect a payment

The payout wallet is part of the deposit address itself.

Charge above the caps

Platform fee is capped at 2% and the network fee at 0.50 USDT, in the contract.

Freeze your money

Anyone can trigger the split, including you. If our wallets ever fail, their share goes to you instead.

Change your wallet quietly

Wallet changes will need 2FA, an email link and a 24 hour wait, with a notice to your old email. It ships with the merchant dashboard.

Pay per payment.Nothing else.

Plus a 0.05 USDT network fee per payment, paid by your customer. No setup fee, no withdrawal fee. Invoices start at 1 USDT.

Free

Customer sends
25.05
Fee 1%
−0.25
You receive
24.75 USDT

Pro

Customer sends
25.05
Fee 0.5%
−0.13
You receive
24.88 USDT

Free

1%per payment

No monthly fee

  • Unlimited invoices
  • Hosted checkout
  • Signed webhooks
  • Test mode
Join early access

Pro

0.5%per payment

29 USDT per month

  • Everything in Free
  • Custom checkout branding
  • Sub accounts for your sellers
  • Priority support
Join early access

Questions merchants ask first

Do you ever hold my money?

No. Payments go to an address that can only send to your payout wallet, and the split to you happens in the same transaction that moves the funds.

Do I need BNB for gas?

No. Our relayer pays the gas. It is covered by the 0.05 USDT network fee your customer pays, or that you pay if you choose to absorb it.

What if my customer pays from an exchange?

That works. Any USDT (BEP20) sent to the invoice address counts, in one transfer or several. Make sure the customer picks BNB Smart Chain (BEP20) as the network.

How long does an invoice stay open?

One hour by default, and you can set anything from 10 minutes to 24 hours. If a payment arrives after that, within 30 days, it is still forwarded to your wallet and you get an invoice.late_paid webhook.

How do I refund a customer?

You send it back from your own wallet, like any transfer. Mals Pay never holds the money, so there is nothing for us to reverse. The invoice keeps the sender's address to help you.

Do I need to verify my identity?

Not to start. Accounts with high volume may be asked to verify, and accounts used for fraud get frozen. A frozen account stops creating invoices; money already paid still goes to its wallet.

What if they send too little or too much?

Up to 1% short still counts as paid (you can set 0 to 5%). If more is missing, checkout asks for the rest. Anything extra goes to you and is reported in the webhook.

What if they send on the wrong network?

The contract is designed so the same deposit address can be recreated on other EVM networks, which makes tokens sent there recoverable to your wallet. Send us the transaction and we will handle it.

How fast is it?

A payment shows as detected within seconds and confirmed after 30 blocks, about 15 seconds. Funds reach your wallet shortly after.

Can I test without real money?

Yes. Test keys use BNB Smart Chain testnet with test USDT and the same API as live keys.

What stops someone changing my payout wallet?

With the merchant dashboard, changes will need 2FA plus an email confirmation and a 24 hour wait, with a notice to your old email. And already created invoices can never change: the wallet is part of their address.

Take USDT without holding BNB or trusting a middleman

We are onboarding our first merchants now. Leave your email and we will send your test keys.

Get early access