Payout Link

Handling payouts can be operationally complex, particularly when it involves collecting and managing bank account details from multiple recipients. To streamline this process, DOKU provides a feature called Payout Link. This feature allows merchants to send bonuses and commissions to their employees.

With Payout Link, merchants are not required to manually collect or input beneficiary bank account information. Instead, DOKU automatically generates and sends a secure link to each beneficiary via email. The recipient can then submit their banking details directly through this link at their convenience.

Integration Steps

Here is the overview of how to integrate with Payout Link:

Here is the possible value of Payout Link Status and the description:

PENDING

Payout link initiated successfully.

EMAIL_SENT

Payout link email notification is sent.

EMAIL_LINK_OPENED

Payout link opened through email.

PENDING_PROCESS

Payout link confirmation process has failed and will be retried.

CONFIRMED

Payout link is confirmed, payment/remit request is sent to beneficiary and on process.

COMPLETED

Payout link payment/remit request has been processed successfully.

FAILED

Payout link payment/remit request has been retried 3 times and still failed.

EXPIRED

Payout link is expired because it's never opened.


API Specification

Payout Initiate

post

Create a Payout Link transaction through API

Header parameters
SignaturestringRequired

Algorithm symmetric signature HMAC_SHA512 (clientSecret, stringToSign)

Example: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
Request-Timestampstring · utc timestampRequired

Client's current local time in yyyy-MM-ddTHH:mm:ssTZD format

Example: 2020-12-21T07:50:11Z
Client-IdstringRequired

Unique ID for a partner (DOKU'S Client ID)

Example: 821508239190
Request-IdstringRequired

Numeric String. Reference number that should be unique in the same day (request-id)

Example: 418075533589
Body
amountnumberRequired

Transaction Amount. Total Amount with 2 decimal, format ISO 4217 | min length: 1 | max length: 16.2

Example: 11500
sender_namestringRequired

Sender Name | min length: 1 | max length: 50

Example: Firman
receiver_namestringRequired

Beneficiary / Receiver Name | min length: 1 | max length: 50

Example: Toru Yamashita
receiver_phone_numberstringRequired

Beneficiary / Receiver Phone, Format: 62xxxxxxxxx xxxx | min length: 9 | max length: 14

Example: 0816291271826
receiver_emailstringRequired

Beneficiary / Receiver Email | min length: 1 | max length: 50

Example: [email protected]
reference_idstringRequired

Unique Reference number from merchant | min length: 1 | max length: 30

Example: PAY_83921251
descriptionstringOptional

Decription min length: 1 | max length: 30

Example: Payout for bonus 2023
currencystringOptional

Currency | min length: 1 | max length: 3

Example: IDR
Responses
200

item created

application/json
post
POST /v1/payout/initiate HTTP/1.1
Host: {api-domain}
Signature: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
Request-Timestamp: 2020-12-21T07:50:11Z
Client-Id: 821508239190
Request-Id: 418075533589
Content-Type: application/json
Accept: */*
Content-Length: 229

{
  "amount": 11500,
  "sender_name": "Firman",
  "receiver_name": "Toru Yamashita",
  "receiver_phone_number": "0816291271826",
  "receiver_email": "[email protected]",
  "reference_id": "PAY_83921251",
  "description": "Payout for bonus 2023",
  "currency": "IDR"
}
{
  "status": "0",
  "message": "Success",
  "timestamp": "2020-12-21T07:56:11.000Z",
  "data": {
    "reference_id": "PAY_83921251",
    "transaction_id": "PTIzdQeGf2UZND12sra9Eg==|DEV-AA|2|2|oOvQV_FErC7bucf5vOjcXg==",
    "status": "SUCCESS",
    "amount": 11500,
    "sender_name": "Firman",
    "receiver_name": "Toru Yamashita",
    "receiver_phone_number": "0816291271826",
    "receiver_email": "[email protected]",
    "created_time": "2020-12-21T07:56:11.000+07:00",
    "modified_time": "2020-12-21T08:50:11.000+07:00"
  }
}

Payout Status

post

Check Payout Link current status through API

Header parameters
SignaturestringRequired

Algorithm symmetric signature HMAC_SHA512 (clientSecret, stringToSign)

Example: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
Request-Timestampstring · utc timestampRequired

Client's current local time in yyyy-MM-ddTHH:mm:ssTZD format

Example: 2020-12-21T07:50:11Z
Client-IdstringRequired

Unique ID for a partner (DOKU'S Client ID)

Example: 821508239190
Request-IdstringRequired

Numeric String. Reference number that should be unique in the same day (request-id)

Example: 418075533589
Body
transaction_idstringRequired

Must be the same as reference_id given in the payout initiate request | min length: 1 | max length: 30

Example: PAY_83921251
Responses
200

item created

application/json
post
POST /v1/payout/status HTTP/1.1
Host: {api-domain}
Signature: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
Request-Timestamp: 2020-12-21T07:50:11Z
Client-Id: 821508239190
Request-Id: 418075533589
Content-Type: application/json
Accept: */*
Content-Length: 33

{
  "transaction_id": "PAY_83921251"
}
{
  "status": "0",
  "message": "Success",
  "timestamp": "2020-12-21T09:01:11.000+07:00",
  "data": {
    "reference_id": "PAY_83921251",
    "transaction_id": "PL0002221",
    "status": "SUCCESS",
    "state": "SUCCESS",
    "amount": 11500,
    "sender_name": "Firman",
    "receiver_name": "Toru Yamashita",
    "receiver_phone_number": "0816291271826",
    "receiver_email": "[email protected]",
    "created_time": "2022-12-21T07:56:11.000+07:00",
    "modified_time": "2020-12-21T08:50:11.000+07:00"
  }
}

Last updated

Was this helpful?