Create Slip Payment

Create a slip session for slip-based fiat payment. Returns a session token and a redirect URL where the depositor transfers and submits the slip.

How to use in 4 steps

You call the API once at the start and take the webhook at the end; the customer does the rest on our page

1

Create the payment

You

Send the amount and the account the customer will transfer from, plus X-Idempotency-Key — reuse the same key when you retry

RequestPOST /v1/p2p/public/session/create
{
  "role": "DEPOSITOR",
  "amount": 200,
  "ttl_seconds": 1200,                // link lives 20 minutes
  "profile": { "depositor": {
    "sender_bank": "SCB",          // account the customer pays from
    "sender_account": "1234567890"
  }},
  "order_id": "ODRW-322863625",
  "order_user_reference": "USER134",
  "return_url": "https://merchant.example.com/deposit/done"
}
Response — one field is all you need200
"redirect_url": "https://demo.sky777881.xyz/pay/slip/yUFSwamgJN…"
2

Send the customer the link

You

Redirect them there, or send the link over any channel — it expires after ttl_seconds

https://demo.sky777881.xyz/pay/slip/yUFSwamgJNkxcvWC_UY-okEzM3C9jOjSaqhMxWpEaAk
3

Wait while the customer pays

Customeron our page

Everything happens on that page and you never check the slip yourself — the customer must transfer from the exact account you registered

Transfer 200 THBfrom SCB ••7890
Attach the slip
System checks itrejected? attach again
The hosted payment page: amount, countdown, PromptPay QR, and the account to transfer from
The page the customer lands on
4

Take the webhook, close the order

Platform → youPayload examples

Credit the customer from this event only — not when the create call succeeds, and not when the page returns to return_url

PAYMENT_PAID

The transfer landed — credit order ODRW-322863625

PAYMENT_FAILED

The slip was already used (DUPLICATE_SIGNATURE)

Expired with no accepted slip = no webhook — poll GET /v1/payment/info yourself

POSTCreate Slip Payment
Endpoint URL
https://testnet.trustsig.xyz/v1/p2p/public/session/create

Authentication Status

API Key is required for all requests Webhook Secret

Headers

x-api-key
Required

API Key for authentication

x-signature
Required

HMAC-SHA256 signature for authentication

x-timestamp
Required

Timestamp (milliseconds) for signature

X-Idempotency-Key
Required

Unique key สำหรับป้องกันการทำรายการซ้ำ (เช่น UUID)

Parameters (Request Body)

role
enum Required

บทบาทของผู้ใช้ session (ใช้ DEPOSITOR สำหรับฝั่งผู้ฝากเงิน)

ttl_seconds
number Required

อายุของ session เป็นวินาที (เช่น 1200 = 20 นาที)

profile.depositor.sender_bank
string Required

รหัสธนาคารของผู้ฝาก (เช่น SCB, KBANK, BBL)

profile.depositor.sender_account
string Required

เลขบัญชีธนาคารของผู้ฝาก

amount
number Required

จำนวนเงินที่ต้องการชำระ (หน่วยเป็นบาท)

order_id
string Required

A unique order reference ID from your system (e.g., mystore_order_1234, uuid). Please use the same Order ID for the same transaction and do not generate a new one.

order_user_reference
string Required

Customer Name

return_url
string Optional

URL ที่จะ redirect กลับเมื่อทำรายการเสร็จสิ้น