production

Create payout

POST/pay-out/createTry it in Swagger →

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

HeaderRequiredValue
Content-Typerequiredapplication/json
AuthorizationrequiredLINTASPAY-SHA256withRSA app_id=…,nonce=…,timestamp=…,sign=… — see Signing requests
lintaspay-request-idrequiredUnique request id, [A-Za-z0-9_-], max 64

Body parameters

NameTypeRequiredDescription
accountNamestringrequiredBeneficiary name, 1–64 chars: letters, digits, spaces and .,'-_. Max length 64.
Example: Siti Rahayu
accountNostringrequiredBeneficiary account number. E-wallets: phone number starting 08 / 8 / 628 / 6208.
Example: 1234567891011
accountTypestringrequired1 bank account, 2 virtual account, 3 e-wallet, 4 bank online.
Example: 1
amountstringrequiredAmount in IDR, integer string.
Example: 10000
bankIdstringrequiredBank / wallet id from /data/bank-list.
Example: 1
currencystringrequiredOnly IDR.
Example: IDR
mchOrderNostringrequiredYour unique order number, max 64. Retry with the same number — never create a second payout for one intent. Max length 64.
Example: P202610140001
notifyUrlstringoptionalYour callback URL. Optional if a default notify URL is configured for your merchant account. Max length 255.
Example: https://merchant.example.com/notify/payout
remarkstringrequiredLetters, digits and spaces; max 40. Max length 40.
Example: payout order
beneficiaryPhonestringoptionalBeneficiary phone.
Example: 6281234567890
beneficiaryEmailstringoptionalBeneficiary 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

NameTypeDescription
merchantIdinteger
Example: 100001
merchantOrderNostring
Example: P202610140001
orderNostring
Example: LPOUT2026101410300512AB34CD56EF
amountstring
Example: 10000
orderFeestring
Example: 6500.00
orderStatusinteger1 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);