Skip to main content

Payment Link

API Create Payment Link adalah layanan API yang dapat digunakan oleh Merchant untuk menerima pembayaran melalui channel Payment Link. Merchant nantinya akan menerima link checkout dari Doitpay untuk diakses pelanggan.

  • Method: POST
  • Type:application/json
  • Path: /payment-link/v1.0/debit/payment-host-to-host
  • Service Code: 54
ParameterTipeMandatoriKeteranganContoh
Content-Typestringstring yang menunjukkan jenis media.application/json
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat bagian symmetric signature
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstringNilai seharusnya DOITPAY
AuthorizationstringOtentikasi dengan bearer token lihat disini pada bagian access tokenBearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0
ParameterTypeMandatoryKeteranganContoh
partnerReferenceNostringNomor referensi unik dari partnerORDER123456789
amountobjectDetail jumlah transaksiLihat amount
urlParamsarray of objectKonfigurasi URLLihat urlParams
externalStoreIdstringID toko eksternalSTORE123
validUpTostringWaktu kedaluwarsa transaksi2024-12-09T23:59:59+07:00
additionalInfoobjectInformasi tambahan transaksiLihat additionalInfo

amount request

ParameterTipeMandatoriKeteranganContoh
valuestringJumlah total pembayaran ISO4217 dengan 2 desimal. Lihat bagian kalkulasi amount untuk detail perhitungan amount100000.00
currencystringKode mata uang, hanya menerima IDR.IDR

urlParams request

ParameterTipeMandatoriKeteranganContoh
urlstringURL pengalihanhttps://merchant.com/notify
typestringTipe URL; PAY_NOTIFY dan PAY_RETURNPAY_NOTIFY
isDeeplinkstringPenanda deeplink, saat ini hanya bisa NN

additionalInfo request

ParameterTypeMandatoryKeteranganContoh
purchaseOrderstringNomor purchase orderPO-111111111
companyDetailsstringDetail perusahaanMerak Corporation
billTostringEmail yang akan mendapatkan informasi tagihanjames.dean@mail.com
currencystringMata uang transaksiIDR
itemsarray of objectDaftar item (min 1, max 10)Lihat items
notesstringCatatan tambahanTest payment link 11111111
taxPercentagestringPersentase pajak dalam bentuk decimal (contoh: 0.1 = 10%, 1 = 100%) yang diterapkan pada jumlah subtotal item0.1
discountstringNilai diskon, dikurangi setelah subtotal item0
additionalFeestringBiaya tambahan0
isFeeChargedToUserbooleanMenentukan apakah biaya dibebankan ke userfalse
customerNamestringNama pelangganAudrey Hepburn
customerMobileNostringNomor HP pelanggan081234567890
customerAddressstringAlamat pelangganJl. Test No. 123, Jakarta
customerEmailstringEmail pelanggantestpaymentlink@mail.com

item request

ParameterTypeMandatoryKeteranganContoh
itemNamestringNama item (1–40 karakter)Product A
itemSkustringKode SKU itemSKU-001
itemNotesstringCatatan itemTest product
quantitystringJumlah item1
pricestringHarga per item10000

kalkulasi amount

subtotal = Σ (item.price × item.quantity)

tax = subtotal × taxPercentage

amount = (subtotal + additionalFee - discount) + tax
KomponenDeskripsi
subtotalTotal harga seluruh item (price × quantity)
taxPajak yang dihitung dari subtotal
additionalFeeBiaya tambahan yang ditambahkan ke transaksi
discountPotongan harga yang mengurangi total
amountTotal akhir yang harus dibayarkan

Contoh perhitungan

"additionalInfo": {
"additionalFee": "1500",
"taxPercentage": "0.02",
"discount": "1000",
"items": [
{
"itemName": "Product A",
"price": "10000",
"quantity": "1"
},
{
"itemName": "Product B",
"price": "20000",
"quantity": "1"
}
]
}

Langkah 1 – Hitung Subtotal

ItemPerhitunganHasil
Product A1 × 10,00010,000
Product B1 × 20,00020,000
Total30,000

Langkah 2 – Hitung Pajak

tax = subtotal × taxPercentage
tax = 30,000 × 0.02 = 600

Langkah 3 – Hitung Total Amount

amount = (subtotal + additionalFee - discount) + tax
amount = (30,000 + 1,500 - 1,000) + 600
amount = 31,100

Request akhir amount

"amount": {
"currency": "IDR",
"value": "31100.00"
}
{
"externalStoreId": "",
"partnerReferenceNo": "01KN6MW3JJZJV8J6C41BGJJTW0",
"additionalInfo": {
"additionalFee": "1500",
"taxPercentage": "0.02",
"billTo": "james.dean@mail.com",
"companyDetails": "Merak Corporation",
"currency": "IDR",
"customerAddress": "Jl. Test No. 123, Jakarta",
"customerEmail": "mail@mail.com",
"customerMobileNo": "081234567890",
"customerName": "Audrey Hepburn",
"discount": "1000",
"isFeeChargedToUser": false,
"items": [
{
"itemName": "Product A",
"itemNotes": "Test product",
"itemSku": "SKU-001",
"price": "10000",
"quantity": "1"
},
{
"itemName": "Product B",
"itemNotes": "Test product",
"itemSku": "SKU-001",
"price": "20000",
"quantity": "1"
}
],
"notes": "Test payment link {{$timestamp}}",
"purchaseOrder": "PO-111111111",
},
"amount": {
"currency": "IDR",
"value": "31100.00"
},
"urlParams": [
{
"type": "PAY_RETURN",
"url": "https://webhooks.tunnelite.com/webhooks/orange-whale-616416",
"isDeeplink": "Y"
},
{
"url": "https://webhook.site/a1714951-c2c0-417b-926b-d7204ecaed85",
"type": "NOTIFICATION",
"isDeeplink": "Y"
}
]
}
{
"additionalInfo": {
"items": [
{
"itemName": "Product",
"itemNotes": "Test product",
"itemSku": "SKU-001",
"price": "10000",
"quantity": "1"
},
{
"itemName": "Product B",
"itemNotes": "Another test product",
"itemSku": "SKU-002",
"price": "10000",
"quantity": "2"
}
]
},
"amount": {
"currency": "IDR",
"value": "30000.00"
},
"partnerReferenceNo": "01KKJYV2R1GYSHQ9C5ZYPY2S2W",
"urlParams": [
{
"isDeeplink": "N",
"type": "PAY_RETURN",
"url": "https://example.com/success"
}
]
}
ParameterTypeMandatoryKeteranganContoh
responseCodestringKode response dari sistem2005400
responseMessagestringPesan responseSuccess
referenceNostringNomor referensi dari sistem/payment gateway01KN6MW3JJZJV8J6C41BGJJTW0
partnerReferenceNostringNomor referensi dari partner01KN6MW3JJZJV8J6C41BGJJTW0
webRedirectUrlstringURL untuk redirect ke halaman pembayaranhttps://payment-link.com/abc
additionalInfoobjectInformasi tambahan[Lihat additionalInfo](#additionalInfo response)

amount response

ParameterTipeMandatoriKeteranganContoh
valuestringISO4217 dengan 2 desimal100000.00
currencystringKode mata uang, hanya menerima IDR.IDR

additionalInfo response

ParameterTypeMandatoryKeteranganContoh
paymentCodestringKode pembayaran1234567890

API Check Payment Status Payment Link adalah layanan API yang dapat digunakan oleh Merchant untuk mengetahui status pembayaran dari Payment Link menggunakan ID transaksi.

  • Method: POST
  • Type:application/json
  • Path: /api/v1.0/debit/status
  • Service Code: 55

Header Check Payment

ParameterTipeMandatoriKeteranganContoh
Content-Typestringstring yang menunjukkan jenis media.application/json
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat bagian symmetric signature
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstringNilai seharusnya DOITPAY
AuthorizationstringOtentikasi dengan bearer token lihat disini pada bagian access tokenBearer ZGMyNDA3NWQtNmM4Ny00NGNiLTQ2NTAtMDhkYWMxNTAzNzY0

Request Body Check Payment

ParameterTipeMandatoriKeteranganContoh
originalPartnerReferenceNostringReferensi transaksi asli01KN6Q41ZPXNRQ72VFG6R3F9PK

Example Check Payment

{
"originalPartnerReferenceNo": "01KFJCH1XWF1DKJMB259ZC7JMQ"
}

Response Body Check Payment

ParameterTypeMandatoryKeteranganContoh
responseCodestringKode response dari sistem2005500
responseMessagestringPesan responseSuccess
originalReferenceNostringNomor referensi original dari sistem01KN6MW3JJZJV8J6C41BGJJTW0
originalPartnerReferenceNostringNomor referensi original dari partner01KN6MW3JJZJV8J6C41BGJJTW0
serviceCodestringKode service transaksi54
latestTransactionStatusstringStatus transaksi terkini00
• 00: Success
• 01: Initiated
• 02: Paying
• 03: Pending
• 04: Refunded
• 05: Canceled
• 06: Failed
• 07: Not found
paidTimestringWaktu pembayaran2024-12-09T23:00:00+07:00
transAmountobjectNilai transaksi yang dibayarkanLihat transAmount response

transAmount response

ParameterTipeKeteranganContoh
valuestringISO4217 dengan 2 desimal1000.00
currencystringKode mata uang, hanya menerima IDR.IDR
  • Method: POST
  • Type:application/json
  • Path: https://yourdomain.com/v1.0/payment-link/debit/notify
  • Service Code: 56

Symmetric Signature Payment Notification

Saat menerima notifikasi pembayaran, API anda perlu melakukan validasi signature untuk menjamin proses keamanan data. Berikut penjelasannya:

Formula :

stringToSign = HttpMethod + “:” + Endpoint + “:” + MerchantRef + “:” +
LowerCase(HexEncode(SHA-256(Minify(RequestBody)))) + “:” + Timestamp
hash = HMAC_SHA512(stringToSign, secretKey)

Buatlah sebuah variabel stringToSign.

  1. HttpMethod adalah string nama metode yang sedang digunakan. Bisa saja POST, PUT, atau DELETE.

  2. Endpoint adalah relative URL atau full path URL yang mana tanpa host atau domainnya.

  3. MerchantRef adalah nilai token yang Anda dapatkan dari Merchant Reference.

  4. RequestBody adalah payload yang ingin Anda kirim.

  5. Timestamp menggunakan ISO-8601.

  6. secretKey adalah Merchant Reference.

Hash stringToSign menggunakan HMAC_SHA512 cryptographic dan secret key (nama lain saat ini adalah API key). Kemudian, encode dengan Base 64.

Masukkan nilainya ke X-SIGNATURE.

Header Payment Notification

ParameterTipeMandatoriKeteranganContoh
X-TIMESTAMPstringISO-86012022-09-16T13:00:00+07:00
X-SIGNATUREstringLihat Symmetric Signature Payment Notification
X-PARTNER-IDstringMerchant Ref dari dashboard Doitpay01JP4QP4R908GVK9X5KN7YCJEG
X-EXTERNAL-IDstring(64)Request ID yang unik.
CHANNEL-IDstring

Request Body Payment Notification

ParameterTipeMandatoriKeteranganContoh
originalPartnerReferenceNostringReferensi transaksi asliORDER123456789
originalReferenceNostringNomor referensi e-walletEW123456789
latestTransactionStatusstringStatus akhir transaksi00
• 00: Success
• 01: Initiated
• 02: Paying
• 03: Pending
• 04: Refunded
• 05: Canceled
• 06: Failed
• 07: Not found
amountobjectDetail jumlah transaksiLihat amount
additionalInfoobjectInformasi tambahan notifikasiLihat additionalInfo

amount Request Body Payment Notification

ParameterTipeKeteranganContoh
valuestringISO4217 dengan 2 desimal. Menunjukkan nominal pembayaran.1000.00
currencystringKode mata uang, hanya menerima IDR.IDR

additionalInfo Request Body Payment Notification

ParameterTipeKeteranganContoh
channelCodestringKode kanal e-walletDANA

Response Body

ParameterTipeKeteranganContoh
responseCodestringKode response, lihat bagian daftar Response Code di bawah2005600
responseMessagestringPenjelasan terhadap response code yang diterimaSuccessful

Response Code Payment Notification

KodeKeterangan
200XX00Berhasil membuat request. Dimana XX adalah service code untuk setiap API Payment Link.
409XX00Conflict external ID saat membuat payment link. Dimana XX adalah service code untuk setiap API Payment Link.
400XX01Invalid field format. Dimana XX adalah service code untuk setiap API Payment Link.
400XX02Missing mandatory field. Dimana XX adalah service code untuk setiap API Payment Link.
401XX00Unauthorized Signature. Dimana XX adalah service code untuk setiap API Payment Link.
401XX01Invalid Access Token. Dimana XX adalah service code untuk setiap API Payment Link.
500XX00Terjadi kesalahan sistem di doitpay, mohon dibantu menghubungi doitpay untuk mendapatkan detail. Dimana XX adalah service code untuk setiap API Payment Link