P2P matching
Depositors pay withdrawers directly. We confirm it.
Deposits and payouts for online sites
P2P matching of depositors and withdrawers.
Thai QR, bank transfer or USDT.
Back office ready. API ready.
Features
Depositors pay withdrawers directly. We confirm it.
Straight to QR or bank transfer.
Transactions, reports, , bills, team and roles.
Automatic result callbacks. Test first.
By API, then use our deposit page or your own.
Send the player's account by API.
We find a withdrawer waiting for that amount.
No match? QR or bank transfer.
Depositors pay it,
or we pay through our payment channel.
The player pays and we confirm.
A webhook tells you how much to credit.
Full or partial, you see what was paid and what is left.
Matching models
Every site sits in a pool: the place its deposits and withdrawals are matched.
The more waiting in a pool, the sooner and fuller the matches.
Your site is the only one in its pool.
Your depositors match your withdrawers.
Best for: a single site, or starting separate
Several of your sites share one pool.
1Your site gets the first chance, 2then other sites in the pool.
Best for: owners of several sites, or sister sites
Both: no match, and we move on to QR or bank transfer.
We set it up. Switch later, no re-integration.
The “group” model is the shared pool.
Channels
Connect the API once.
The channels open for your site work straight away.
New channels arrive without new integration work.
A depositor pays a withdrawer directly. We confirm the amount.
Thai QR (PromptPay) and bank transfer
through several providers in one system.
Deposits and withdrawals in USDT
TRC20ERC20
Players transfer into our registered company account.
Players deposit through TrueWallet with a phone number.
| Channel | Deposit | Withdraw | Unit | Status |
|---|---|---|---|---|
| P2P | Yes | Yes | THB | Available |
| Payment channels | Yes | Yes | THB | Available |
| USDT | Yes | Yes | USDT | Available |
| Company account | Yes | Yes | THB | Soon |
| TrueWallet | Yes | No | THB | Soon |
No P2P match? Straight to QR or bank transfer.
Nothing available? The player sees a message set up for your site.
Depends on the channels enabled for your site.
If a payout fails, we look for another way.
Already have a merchant account with a payment provider?
Connect it, by agreement.
Platform
What your team does every day, in one place.
Checks the amount and stops reused slips.
Players can send a new slip while one is checked.
Your site shows amounts waiting to be matched.
Players tap one and get credited sooner.
Several depositors pay one withdrawal.
See what is paid and what is left.
Add an account that causes trouble.
We stop matching it.
Every site holds its balance with 0msPayment.
No chasing balances with other sites.
P2P, payment channels and USDT
each show their own balance.
Weekly or monthly, with a due date.
Three ways to pay.
See the credit of every site you manage and export it.
Pay bills for several sites at once.
Charts and sortable tables.
Export to CSV and Excel.
Ready-made roles you can make your own.
Everyone sees only the menus they are given.
Let chosen staff create deposits and withdrawals.
Each one records who made it.
We update the system while your site keeps taking money.
No maintenance windows to plan.
Resellers
We give you a cost rate; you give a rate to the next tier.
Each tier's margin = the rate it gives below − its own cost.
Split on every transaction, with no limit on tiers.
Made-up names and figures, not real rates
B and C can pass it on further
Sample deposit of 10,000 baht
| Who gets | Via B | Via C |
|---|---|---|
| The site pays | 180 | 200 |
| B / C gets | 50 | 60 |
| A gets | 30 | 40 |
| 0msPayment | 100 | 100 |
A gets 70 baht in all, from both
A rate given below can never be under your own cost.
The same goes for site fees.
The next reseller's rate and your sites' fees,
in your own back office.
P2P, payment channels and the company account pay margins in baht.
Crypto pays in the coin itself.
Deposits, withdrawals and the sites' reserve top-ups and withdrawals.
Ready in proportion to what the site paid.
Create a sub-pool for the next tier once we enable it.
Hand on no more than you have left, in every wallet and every tier.
Sample: A has a P2P limit of −100,000 baht
Signed in with 2FA, showing only your own tree.
Every site gets its own bill each cycle.
Paid but stuck, say a USDT amount that does not match? Our team sees it on one page and follows it up.
Money your site keeps with us.
It backs payouts and pays fees.
Fees never come out of player credit.
When sites match each other, e.g. a shared pool
3No transfers between your sitesDepositors on other sites in the pool can pay your withdrawals,
up to what your reserve covers.
Reserve empty? Your own depositors still can.
Pay by QR in your back office.
Enter the receiving account when you withdraw,
confirmed with 2FA.
Sent to your systems, e.g. when the balance drops below the minimum.
Back office
Each person sees only what their role allows.
For developers
paidAmount gives the real amount to credit or deductSeparate live and test keys.
Full docs in Thai and English in your back office, with a PDF download.
Simulated players in Sandbox. Try exact, short and over payments, and expiry.
POST /v1/deposit
{
: "DP-100245",
"amount": 500.25,
"depositData": {
"bankCode": "<player bank code>",
"accountNo": "<player account number>",
"accountName": "<player account name>"
}
}
200 OK
{
"success": true,
"message": "success",
"data": {
"transactionId": "DP-100245",
"referenceId": "<referenceId>",
"status": "pending",
"amount": 500.25,
"bankCode": "<receiving bank code>",
"bankAccountNumber": "<receiving account number>",
"bankAccountName": "<receiving account name>",
"expireDate": "2026-10-01 15:30:00"
}
}
POST /v1/withdraw
{
: "WD-100318",
"amount": 1000,
"withdrawData": {
"bankCode": "<player bank code>",
"accountNo": "<player account number>",
"accountName": "<player account name>"
}
}
{
"eventId": "<eventId>",
"event": "deposit.success",
"transactionId": "DP-100245",
"referenceId": "<referenceId>",
"status": "success",
"amount": 500.25,
: 500.25,
"timestamp": "2026-10-01 15:20:11"
}
Shortened example. Full fields and signing are in the back-office docs.
Reply 2xx with "status":"ok" and the same eventId. Deduplicate by eventId.
transactionIdpaidAmountRequire it team-wide if you choose.
Reserve withdrawals, keys, settings and exports ask for 2FA again.
We record who, what, when and why.
The log is tamper-evident.
See every device, sign out everywhere, new-device alerts.
Pick your pool and channels.
We set up your back office.
Connect the API without real money.
Pass the checklist and fund your reserve.
FAQ
A depositor pays a withdrawer directly.
We match and tell your site how much to credit.
Credit follows only after the transfer is verified.
P2P, payment channels from several providers and USDT are available.
A company bank account and TrueWallet are coming soon.
One API integration covers every channel open for your site.
In a cross-site match, the depositor's site gets only the bank, name
and account number for that transaction, so the transfer can be made.
The account number is hidden once it closes.
Nothing else about your players crosses sites.
Verified within the set time, it is still credited.
After that, our team reviews it.
Set per site by agreement, with separate deposit and withdrawal rates.
Every transaction shows its fee, and fees add up to a bill.
Pay it in USDT, from your reserve or by transfer, as enabled for your site.
We tell you when a rate changes. Past transactions keep their rate.
Yes. Keep a pool per site, or put several sites in one pool.
A multi-site manager sees the credit of every site they manage, exports it
and pays bills for several sites at once.
No. Try everything in Sandbox before real money.
We update the system while your site keeps taking payments.
The back office, the deposit page and the API docs come in Thai and English.
The docs download as a PDF.
Contact us
Ask about channels, pools, fees or API integration