Create payout
Sandbox https://test.lintaspay.xyz/pay-out/create · Production https://lintaspay.xyz/pay-out/create
Sends money to a bank account, virtual account or e-wallet. A successful response only means the payout was
accepted — treat it as final only when orderStatus is 4 (success) or 5 (failed). If the call times out,
query it (or retry with the same mchOrderNo) — never create a new payout for the same intent.
Payout final-state rule. Only
orderStatus 4 (success) and 5 (failed) are final. Treat anything else — including timeouts — as processing. Read the rule →Request
Headers
| Header | Required | Value |
|---|---|---|
Content-Type | required | application/json |
Authorization | required | LINTASPAY-SHA256withRSA app_id=…,nonce=…,timestamp=…,sign=… — see Signing requests |
lintaspay-request-id | required | Unique request id, [A-Za-z0-9_-], max 64 |
Body parameters
| Name | Type | Required | Description |
|---|---|---|---|
accountName | string | required | Beneficiary name, 1–64 chars: letters, digits, spaces and .,'-_. Max length 64.Example: Siti Rahayu |
accountNo | string | required | Beneficiary account number. E-wallets: phone number starting 08 / 8 / 628 / 6208. Example: 1234567891011 |
accountType | string | required | 1 bank account, 2 virtual account, 3 e-wallet, 4 bank online.Example: 1 |
amount | string | required | Amount in IDR, integer string. Example: 10000 |
bankId | string | required | Bank / wallet id from /data/bank-list.Example: 1 |
currency | string | required | Only IDR.Example: IDR |
mchOrderNo | string | required | Your unique order number, max 64. Retry with the same number — never create a second payout for one intent. Max length 64. Example: P202610140001 |
notifyUrl | string | optional | Your callback URL. Optional if a default notify URL is configured for your merchant account. Max length 255. Example: https://merchant.example.com/notify/payout |
remark | string | required | Letters, digits and spaces; max 40. Max length 40. Example: payout order |
beneficiaryPhone | string | optional | Beneficiary phone. Example: 6281234567890 |
beneficiaryEmail | string | optional | Beneficiary email. Example: siti@example.com |
Example
{
"accountName": "Siti Rahayu",
"accountNo": "1234567891011",
"accountType": "1",
"amount": "10000",
"bankId": "1",
"currency": "IDR",
"mchOrderNo": "P202610140001",
"notifyUrl": "https://merchant.example.com/notify/payout",
"remark": "payout order",
"beneficiaryPhone": "6281234567890",
"beneficiaryEmail": "siti@example.com"
}Response
HTTP 200 with the envelope {"code", "message", "data"}. code = 0 means success; otherwise data is null and code is an error code. Authentication failures return HTTP 401 (403 for a blocked IP, 429 when rate-limited). Always verify the response signature.
data fields
| Name | Type | Description |
|---|---|---|
merchantId | integer | Example: 100001 |
merchantOrderNo | string | Example: P202610140001 |
orderNo | string | Example: LPOUT2026101410300512AB34CD56EF |
amount | string | Example: 10000 |
orderFee | string | Example: 6500.00 |
orderStatus | integer | 1 created, 2 routing, 3 processing, 4 success (final), 5 failed (final).
Only 4 and 5 are final — see Payout final-state rule.Example: 1 |
Examples
{
"code": 0,
"message": "success",
"data": {
"merchantId": 100001,
"merchantOrderNo": "P202610140001",
"orderNo": "LPOUT2026101410300512AB34CD56EF",
"amount": "10000",
"orderFee": "6500.00",
"orderStatus": 1
}
}{
"code": 10011304,
"message": "Signature verification failed",
"data": null
}Code samples
URL_PATH=/pay-out/create
BODY='{"accountName":"Siti Rahayu","accountNo":"1234567891011","accountType":"1","amount":"10000","bankId":"1","currency":"IDR","mchOrderNo":"P202610140001","notifyUrl":"https://merchant.example.com/notify/payout","remark":"payout order","beneficiaryPhone":"6281234567890","beneficiaryEmail":"siti@example.com"}'
AUTH="app_id=$APP_ID,nonce=$(openssl rand -hex 16),timestamp=$(date +%s)000"
SIGN=$(printf '%s\nPOST\n%s\n%s\n' "$AUTH" "$URL_PATH" "$BODY" \
| openssl dgst -sha256 -sign merchant_private_key.pem | base64 | tr -d '\n')
curl -sS -X POST "https://test.lintaspay.xyz$URL_PATH" \
-H 'Content-Type: application/json' \
-H "Authorization: LINTASPAY-SHA256withRSA $AUTH,sign=$SIGN" \
-H "lintaspay-request-id: $(openssl rand -hex 16)" \
-d "$BODY"// call() is defined on the Signing requests page
const res = await call('/pay-out/create', {
"accountName": "Siti Rahayu",
"accountNo": "1234567891011",
"accountType": "1",
"amount": "10000",
"bankId": "1",
"currency": "IDR",
"mchOrderNo": "P202610140001",
"notifyUrl": "https://merchant.example.com/notify/payout",
"remark": "payout order",
"beneficiaryPhone": "6281234567890",
"beneficiaryEmail": "siti@example.com"
});
if (res.code !== 0) throw new Error(`${res.code} ${res.message}`);
console.log(res.data);# call() is defined on the Signing requests page
res = call("/pay-out/create", {
"accountName": "Siti Rahayu",
"accountNo": "1234567891011",
"accountType": "1",
"amount": "10000",
"bankId": "1",
"currency": "IDR",
"mchOrderNo": "P202610140001",
"notifyUrl": "https://merchant.example.com/notify/payout",
"remark": "payout order",
"beneficiaryPhone": "6281234567890",
"beneficiaryEmail": "siti@example.com"
})
if res["code"] != 0:
raise RuntimeError(f"{res['code']} {res['message']}")
print(res["data"])<?php
// api_call() is defined on the Signing requests page
$res = api_call('/pay-out/create', json_decode('{"accountName":"Siti Rahayu","accountNo":"1234567891011","accountType":"1","amount":"10000","bankId":"1","currency":"IDR","mchOrderNo":"P202610140001","notifyUrl":"https://merchant.example.com/notify/payout","remark":"payout order","beneficiaryPhone":"6281234567890","beneficiaryEmail":"siti@example.com"}', true));
if ($res['code'] !== 0) {
throw new RuntimeException($res['code'] . ' ' . $res['message']);
}
print_r($res['data']);// ApiClient is defined on the Signing requests page
ApiClient client = new ApiClient();
String body = "{\"accountName\":\"Siti Rahayu\",\"accountNo\":\"1234567891011\",\"accountType\":\"1\",\"amount\":\"10000\",\"bankId\":\"1\",\"currency\":\"IDR\",\"mchOrderNo\":\"P202610140001\",\"notifyUrl\":\"https://merchant.example.com/notify/payout\",\"remark\":\"payout order\",\"beneficiaryPhone\":\"6281234567890\",\"beneficiaryEmail\":\"siti@example.com\"}";
String res = client.call("/pay-out/create", body);
System.out.println(res);