Dark Mode

E-Wallet Transfer API


The following endpoint submit disbursement to e-ewallet:

/emoney/topup

Run in Postman

Request Header Attributes

Following are the parameters to be sent in the request header:

Content-Type

string
Mandatory

Indicates the media type of the resource. value: application/json

X-TIMESTAMP

string
Mandatory

Timestamp in ISO8601 format, Example: 2024-05-14T18:54:57+07:00

Authorization

String
Mandatory

Represents Access Token (B2B) of a request; string starts with keyword “Bearer ” followed by Access Token (B2B)

To know how to obtain access token, please visit the Implementation Guide here.

X-SIGNATURE

String
Mandatory

Signature generated with by encrypting HTTP method, relative path, access token, minified request body, and timestamp

To know how to generate signature, please visit the Implementation Guide here.

X-PARTNER-ID

String
Mandatory

Unique ID for a partner given by Durianpay upon completing registration. Its value is same as the X-CLIENT-KEY

X-EXTERNAL-ID

String
Mandatory

Unique messaging reference identifier generated by merchant and should be unique within the same day

CHANNEL-ID

String
Mandatory

Device identification on which the API services is currently being accessed by the merchant. Possible value: 95221

Request Body Attributes

Following are the parameters to be sent in the request body:

partnerReferenceNo

String
Mandatory

Unique transaction identifier on merchant system which assigned to each transaction

If the partner receives a timeout or an unexpected response from DURIANPAY and partner expects to perform retry request to DURIANPAY, please use the partnerReferenceNo that is the same as the one used in the transaction request process before.

customerName

String
Optional

The name of the recipient.

customerNumber

String
Mandatory

The account number of the recipient.

amount

Object
Mandatory

JSON object with keys: value and currency. Example: {"value": "20000.00", "currency": "IDR"}

Hide amount object

FieldTypeDescription

amountMandatory

string

The amount of money to be disbursed with two decimals (00) at the end. Example: "20000.00"

currencyMandatory

string

The currency associated with the disbursement's amount. Example: "IDR"

additionalInfo

Object
Mandatory

JSON object with keys: platformCode (bank code of the e-wallet), deviceId, channel and senderInformation. example: {"platformCode": "gopay", "deviceId": "1234567", "channel": "mobilephone"}

Hide additionalInfo object

FieldTypeDescription

platformCodeMandatory

string

The bank code of the account.

E-wallet Name Platform Code
Dana dana
Gopay gopay
Shopeepay shopeepay
LinkAja linkaja
OVO ovo

deviceIdOptional

string

device id of the request source

channelOptional

string

channel of the request source

senderInformationOptional

object

The details of disbursement sender. This will be mandatory in case of disbursement on behalf of another party.

To see list of supported e-wallets, please visit the list here.

sender_information

Object
Optional

Part of items object. The details of disbursement sender. This will be mandatory in case of disbursement on behalf of another party.

Hide sender_information object

FieldTypeDescription

nameMandatory

string

The name of the sender

For a name to be accepted, following rules should be adhered
  • Name should have minimum length 2 and maximum length 50
  • Should start with alphabet
  • Should not contain any character other than alphabets, spaces and the special charcacters , . ' -

countryMandatory

string

The country of the sender. Two letter country code as per ISO-3166 alpha-2 standard

Refer here for ISO-3166 alpha-2 country codes. ISO-3166 alpha-2 country code

senderAccountMandatory

json object

The account details of sender

senderIdentityMandatory

json object

The identity details of sender

jobOptional

string

The job of the sender

Valid job types are
  • company
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_employee -> People who work at foundation / non profit organization as an employee
  • housewife
  • others -> For job that's not categorized in the option above

dateOfBirthOptional

string

The date of birth of the sender in YYYY-MM-DD format

placeOfBirthOptional

string

The place of birth of the sender

addressOptional

string

The address of the sender

Note: Either of senderAccount or senderIdentity is required, but both can be included if available.

senderAccount

Object
Mandatory

Part of senderInformation object. The details of sender account

Hide senderAccount object

FieldTypeDescription

bankIdentifierMandatory

string

Valid ATM Code or Swift Code for sender bank

Valid ATM codes and Swift codes can be fetched using the Fetch banks API

accountNumberMandatory

string

Account Number of sender

senderIdentity

Object
Mandatory

Part of senderInformation object. The details of sender idenity

Hide senderIdentity object

FieldTypeDescription

identityTypeMandatory

string

Type of sender identity

Valid values are
  • company_id -> to provide Company Identification Number / NIB (Nomor Induk Berusaha)
  • national_id -> to provide National Identity Card number
  • passport -> to provide Passport Number

identityNumberMandatory

string

Indentity Number of chosen identity type

Valid values for company_id and national_id are strings with numeric characters. Example "1234567890"

Valid values for passport are strings with alphanumeric characters. Example "ABC1234DEF".

Example
curl --location 'https://api.durianpay.id/v1.0/emoney/topup' \
--header 'X-TIMESTAMP: 2024-05-14T18:54:57+07:00' \
--header 'X-SIGNATURE: pCA+q832pxHnTPm1Kdbfu1am37J9XFeGH13JGYqHv7Ww4Tb3Hrc5xRew+4y2tN4wiAPnHmvXcJ1Tyf94jK5gHQ==' \
--header 'X-PARTNER-ID: partner_id' \
--header 'X-EXTERNAL-ID: random_external_id' \
--header 'CHANNEL-ID: channel_id' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJEdXJpYW4gTW9uZXkiLCJleHAiOjE3MTU1OTM3NTYsImlhdCI' \
--data '{
    "partnerReferenceNo": "111111111",
    "amount": {
        "value": "20000.00",
        "currency": "IDR"
    },
    "customerName": "Dummy Name",
    "customerNumber": "888801000003301",
    "additionalInfo": {
        "platformCode": "gopay",
        "deviceId": "12345679237",
        "channel": "mobilephone",
        "additionalInfo": {
        "platformCode": "gopay",
        "deviceId": "12345679237",
        "channel": "mobilephone",
        "senderInformation": {
            "name": "Sender Name",
            "country": "ID",
            "senderIdentity": {
                "identityType": "company_id",
                "identityNumber": "1234567890"
            },
            "senderAccount": {
                "bankIdentifier": "014",
                "accountNumber": "1234567"
            },
            "job": "company",
            "dateOfBirth": "1990-01-01",
            "address": "jakarta",
            "placeOfBirth": "jakarta indonesia"
        }
    }
}'

Response Code

200 - Success

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
    "additionalInfo": {
        "channel": "mobilephone",
        "deviceId": "12345679237",
        "platformCode": "gopay"
    },
    "amount": {
        "currency": "IDR",
        "value": "20000.00"
    },
    "customerNumber": "888801000003301",
    "partnerReferenceNo": "202010290000000000000",
    "referenceNo": "dis_item_YDniNwMtjh"
    "responseCode": "2003800",
    "responseMessage": "Successful"
}

202 - Accepted

400 - Bad Request - Invalid Mandatory Field

400 - Bad Request - Invalid Field Format

400 - Bad Request - Missing Header

401 - Unauthorized - Invalid Token

401 - Unauthorized - Invalid Signature

409 - Conflict

409 - Conflict - Duplicate partnerReferenceNo

500 - Internal Server Error

504 - Gateway Timeout