πŸ“š All docsDocumentMerchant manualReseller manualReseller setup guideLanguageEnglishΰΉ„ΰΈ—ΰΈ’δΈ­ζ–‡

Merchant Portal β€” User Manual

P2P Transfer Platform Β· English edition

The Merchant Portal is the back office for a business that routes its customers' deposits and withdrawals through the P2P platform. From here your team monitors transactions, fulfils withdrawals, reviews payment slips, manages users and staff, tracks billing, and configures how money is routed.

This manual is operator-first: the everyday business workflow comes first. Technical integration topics β€” API keys, the partner API, and webhooks β€” live in Appendix A β€” Developer & Integration.


Table of contents

A note on this edition. A few screens document features that are still being finished β€” they are clearly flagged with a Work in progress callout wherever they appear. Nothing marked that way is guaranteed to accept changes yet.


Before you begin β€” key concepts

A few ideas explain almost every screen. Read this once and the rest of the portal will make sense.

The platform never holds money. It is a ledger and a matchmaker. When a withdrawal is fulfilled, money moves bank-to-bank between the two people β€” the platform records the transfer, it never touches the cash. This is why "fulfilling a withdrawal" means uploading proof of a transfer that was made (by you or by the matched seller), not clicking a "send money" button.

Deposits become credit; withdrawals spend it.

Credit kinds β€” you'll see these on user balances:

Deposit lifecycle β€” the states you'll see on transactions:

Reservation created β†’ awaiting slip β†’ slip uploaded β†’ verifying β†’ settled (credit lands).

A deposit can also arrive over the reserved amount (only the reserved amount is credited; the excess is flagged) or under it (only what actually arrived is credited).

Who can do what β€” staff roles. Every action in this manual is gated by role:

Capability OWNER OPERATOR VIEWER
View dashboard, transactions, users, billing βœ… βœ… βœ…
Fulfil withdrawals Β· review slips βœ… βœ… β€”
Reveal a user's full bank number βœ… βœ… β€”
Rotate API key / HMAC Β· integration test Β· webhooks βœ… βœ… β€”
Manage bank accounts, gateways, priority thresholds βœ… β€” β€”
Invite staff / change roles Β· sub-merchants βœ… β€” β€”

1. Signing in

Merchant login screen
The merchant sign-in screen at /merchant/login.

Signing in takes two steps, every time, for every staff member:

  1. Email + password at /merchant/login.
  2. 6-digit code from your authenticator app (Google Authenticator, Authy, 1Password, and the like).

First time here? If an owner β€” or your reseller β€” invited you, your first sign-in uses a temporary password and walks you through onboarding: set a permanent password (at least 12 characters, including a letter and a number), scan the TOTP QR code with your authenticator app, and confirm a code. After that you land on the dashboard.

Lost your authenticator? An owner can reset your credentials from Team (see Section 10). This issues a fresh temporary password and clears your 2FA so you can re-enrol.


2. Your dashboard

Merchant dashboard with four KPI cards
The dashboard summarises what needs attention across your merchant pool.

The dashboard is your at-a-glance operations view. It shows the counts that need attention β€” pending withdrawals, pending fulfilments, your available platform credit, and recent priority grants β€” and each card links straight to the relevant queue.


3. Transactions

Transactions list with search and filters
The transactions feed, with search, type filter, and date range.

Transactions (/merchant/transactions) is the full money feed for your pool. Search by ID, amount, or phone number; filter by type (deposits, deposit legs, withdrawals, and more) and by date range. Owners can additionally drill down by sub-merchant.

Row actions depend on the transaction type:

Transaction detail

Transaction detail view
Opening a transaction reveals its ledger entry, slip, payout account, and funding deposits.

Opening a transaction shows the full picture: the ledger entry, the uploaded slip image with its parsed sender and receiver, the (masked) payout bank account, and the list of funding deposits that settled it. Two signals are worth knowing:


4. Withdrawals

Withdrawals queue sorted by priority tier
The withdrawals queue lists orders awaiting fulfilment, highest priority first.

The Withdrawals queue lists withdrawal orders awaiting fulfilment, sorted by priority tier. Each row shows the amount, the withdrawing customer (by your own user ID), any sub-merchant tag, and the requested date.

Fulfilling a withdrawal

Fulfilment is a slip-or-bypass choice β€” you do exactly one of the two:

Withdrawals support partial fills: if you fulfil less than the full amount, the remainder returns to the customer's wallet, and you can use early-success to close a partial withdrawal you're satisfied with. Every fulfilment notifies your system via the withdraw.notify webhook.


5. Slip review

Slip review queue
Slip review, with separate sections for direct deposits and split deposits. [Populated capture pending β€” shown here with an empty queue.]

Slip review is where you vet deposit proof. It has two sections β€” reservations (direct deposits) and legs (deposits that were split across bank accounts). Your primary control here is to reject a slip that doesn't check out (with a reason). Approving ordinary slips is an admin responsibility, with a few explicit exceptions available to you: attestation approvals and over-cap decisions.

Handy tools on each item:

Score findings

Score findings list
Score findings surfaces slips that scored low on automated QR/OCR confidence.

Score findings (labelled "Score findings" in the sidebar) surfaces slips that scored low on automated QR/OCR confidence β€” showing the source, the depositor, the confidence score, and how many fields mismatched. Filter by For review, Reviewed, or All; Mark reviewed records that you've acknowledged a finding.


6. Users

Users list
The customers linked to your merchant. [Populated capture pending β€” shown here with an empty list.]

Users lists the customers linked to your merchant. Search by email, display name, or your own user ID. From here you also:

User detail

[Populated capture pending β€” the user-detail page is described below; a screenshot is not yet available for this merchant's demo data.]

A user's page shows their profile, their multi-pool wallet (REAL / POINT / PLATFORM_CREDIT balances), and recent withdrawals. Bank numbers are masked to the last four digits; an OPERATOR or OWNER can reveal the full number, an action that is audit-logged.

⚠️ Production note. Full bank-number reveal is available in development but is currently blocked in production, pending the KMS key service (ADR-0102).


7. Billing & usage credit

Billing report
Billing shows usage and the fees computed from it, in Bangkok (GMT+7) time.

Billing shows your usage and the fees computed from it, in Bangkok (GMT+7) time. Two headline cards give today and month-to-date usage plus fee; below them, a granularity toggle (hour / day / week / month) and a date range drive a ledger table. Fees are computed at read time from your effective rate schedule.

Usage credit

Usage credit balance and history
Usage credit is the prepaid balance the platform draws your fees from.

Usage credit is the prepaid balance the platform draws your fees from. The card shows your current balance, your low-balance threshold, and the last activity. Use Top-up request to add credit (an admin reviews it). The history table logs every deposit, deduction, and adjustment.


8. Settings

General settings
General settings β€” most values here are managed by an admin.

Settings shows your merchant configuration β€” display name, slug, status, webhook URL, rate limit, and DPA acceptance. Most of these are managed by an admin; the sub-pages below are the ones your owners control.

Bank accounts

Bank accounts routing pool
Your routing pool β€” the bank accounts customer deposits are directed to, round-robin.

Your routing pool is the set of bank accounts that customer deposits are directed to, round-robin. Owners can toggle accounts active or inactive and edit your own accounts; adding new accounts is done by an admin.

Payment gateways

Payment gateway credentials
Payment gateways paired with your routing slots. Secrets are never shown.

If your deposits route through a payment gateway, this page lists the gateway credential, its status, and its paired routing slot. Owners can enable or disable it and rename its display label. Secrets are never shown.

Priority thresholds

Priority thresholds configuration
A four-tier, strictly-increasing set of amounts that classify which deposits get priority placement.

A four-tier, strictly-increasing set of amounts that classify which deposits get priority placement.

⚠️ Work in progress. This configuration screen is a work-in-progress (Phase C) and may not accept changes yet.


9. Sub-merchants

Sub-merchants list
Create and track the downstream businesses you resell to.

If you resell to your own downstream businesses, Sub-merchants lets an owner create and track them. Each sub-merchant has a unique code, a display name, and its own usage-credit balance, which you allocate from your parent pool. Transactions and users can be filtered by sub-merchant across the portal.


10. Team

Team and roles management
Owners invite staff, change roles, and reset credentials here.

Team is where an owner manages staff. Invite a new member (the system shows one-time credentials plus a TOTP QR code to hand over), change a member's role, or reset a member's credentials. Guardrails protect you: you can't change your own role, and you can't lock out the last remaining owner.


11. Priority grants

Priority grants list
Per-user priority overrides. [Populated capture pending β€” shown here with an empty list.]

Priority grants lists per-user priority overrides.

⚠️ Work in progress. Creating and revoking grants is not yet enabled (Phase C); the list is view-only for now.


Appendix A β€” Developer & Integration

These screens are for the engineers integrating your systems with the platform. Business operators can skip this appendix.

API key & HMAC secret

API key and HMAC secret rotation
Rotate your API key and HMAC signing secret. New values are shown once.

This page shows your API key fingerprint (never the full key) and lets you rotate the API key and the HMAC signing secret. On rotation the new value is shown once β€” copy it immediately. The old and new values both stay valid for 24 hours, so you can roll the change out with zero downtime.

Integration test console

Integration test console
A developer playground for testing webhooks and partner-API calls.

A developer playground with two tabs:

Webhooks delivery log

Webhooks delivery log
The full delivery log β€” delivered and failed events, with retry and resend.

The full delivery log β€” both delivered and failed events. Filter by status, event type, and date. There are two re-send actions:

The partner API in one paragraph

Your backend calls the platform's partner API to create deposits and withdrawals and to check balances. The platform calls you back with deposit.notify and withdraw.notify (unified settlement notifications) and makes a synchronous credit.check to confirm a user's balance before a withdrawal. Every outbound webhook is HMAC-SHA256 signed β€” verify the signature on your side using your HMAC secret (remember it's provisioned as base64; decode it to raw bytes before verifying). Every mutating call takes an idempotency key.


Appendix B β€” Glossary

↑ Top