PakaiLink SNAP
PakaiLink adalah produk OpenAPI dari PT Pakai Donk Nusantara, perusahaan teknologi finansial yang berkomitmen untuk membangun ekosistem layanan keuangan yang inklusif dan dapat diakses oleh seluruh kalangan masyarakat di Indonesia. Dengan menghadirkan solusi inovatif, PakaiLink memungkinkan pengguna untuk bertransaksi dengan lebih mudah, aman, dan efisien. Saat ini, PakaiLink menyediakan berbagai metode bagi merchant untuk mengintegrasikan sistem mereka dengan layanan PakaiLink. Salah satu cara yang ditawarkan adalah melalui PakaiLink SNAP API, sebuah standar Open API yang dirancang untuk mempermudah proses pembayaran digital. SNAP (Standar Nasional Open API Pembayaran) adalah inisiatif dari Bank Indonesia yang bertujuan untuk menciptakan sistem pembayaran di Indonesia yang lebih terbuka dan terintegrasi, memungkinkan kolaborasi yang lebih luas di antara penyedia layanan keuangan.
Pembaruan Dokumentasi
No |
Tanggal |
Versi |
Keterangan |
Halaman |
1 |
9 February 2025 |
1.0.0 |
Peluncuran perdana |
Semua Halaman |
Berikut langkah-langkah untuk menggunakan API SNAP PakaiLink:
- Pilih layanan yang ingin Anda integrasikan, daftar lengkap API PakaiLink dapat dilihat di SNAP Services. Kemudian, dapatkan client ID, client secret, dan merchant_id Anda untuk melanjutkan langkah integrasi.
- Pelajari cara membuat dan menghasilkan signature dengan membaca panduan SNAP Signature. Terdapat dua metode signature yang tersedia: Asymmetric dan Symmetric.
SNAP Signature
Asymmetric Signature
Asymmetric Signature digunakan untuk melakukan verifikasi permintaan Access Token. Proses pembuatan signature dilakukan menggunakan private key. Sistem PakaiLink mendukung format PKCS#8 untuk private key, sehingga merchant akan diminta untuk membuat signature menggunakan file pkcs8_rsa_private_key.pem. Signature yang dihasilkan kemudian akan diverifikasi menggunakan public key yang disimpan dalam file rsa_public_key.pem. PakaiLink menggunakan algoritma SHA256withRSA, dengan tipe format yang diterapkan adalah Base64.
Pembuatan Asymmetric Key
- Gunakan perintah berikut untuk menghasilkan private key RSA:
openssl genrsa -out rsa_private_key.pem 2048
- Setelah private key dibuat, ekstrak public key dengan perintah ini:
openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout
- Konversi private key ke format PKCS#8 untuk meningkatkan kompatibilitas:
openssl pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt
Setelah merchant berhasil memperoleh public key, langkah selanjutnya adalah membagikan key tersebut ke PakaiLink untuk melanjutkan proses pembuatan signature.
Pembuatan Signature
- Siapkan data yang diperlukan untuk menghasilkan signature digital.
No
Data
Keterangan
Contoh
1
X-CLIENT-KEY
Identifier unik untuk mitra, yang dikenal sebagai clientId, dihasilkan secara otomatis oleh PakaiLink untuk memastikan setiap mitra memiliki identitas yang unik dan ter verifikasi.
ac517edf8c7ca47b9b3a334dd8bacb59
2
X-TIMESTAMP
Tanggal dan waktu transaksi harus mengikuti format YYYY-MM-DDTHH:mm:ss+07:00, dengan waktu yang disesuaikan dengan GMT+7 (Waktu Jakarta), untuk memastikan kesesuaian dengan zona waktu lokal.
2025-01-30T12:38:12+07:00
- Gabungkan nilai X-CLIENT-KEY dan X-TIMESTAMP menggunakan tanda pipe (|) untuk membentuk string yang siap untuk proses sign. Berikut contoh formatnya:
ac517edf8c7ca47b9b3a334dd8bacb59|2025-01-30T12:38:12+07:00
- String signature dibuat dengan mengenkripsi string yang telah disusun menggunakan algoritma SHA-256 dengan enkripsi RSA-2048 menggunakan private key dalam format PKCS#8 atau PKCS#1, lalu encode hasil enkripsi tersebut ke dalam format Base64 untuk menghasilkan signature yang dapat digunakan dalam proses verifikasi.
IzAqHsx6ygZV6sWW6ng9QtfHOsrNaxUo3brQz+1oZ26RJp6NGOTmPyipKvs2whoTURh9ZMx8ao6rUYRdsbN16rGuLqxbzD70IcWYIbitXbgVCRt5Dx0BogynF2pZBcS+BJNhdgRqlSJQXjI3YhuSzbmEE1O1wYycWDqSksP1VwGLIhj87Xl837GTqK8AT7dP/Bq4/pjGFfpl60BrKtkw58waHMY/S4leUbo+XWT92SzCtjjJmb9rwTDlSJbUPHjJCarQC+02+A7dnTedo0/ckSPrpqzOmRwlXPhAZF+E+Edj0TPXlvYkuLBc+Svag3PUMWy7+GAYRoupfC6mKydfgA==
- Letakkan string signature hasil encode ke dalam header HTTP X-SIGNATURE, seperti contoh berikut:
Format:
Contoh:X-SIGNATURE: <Base64_Encoded_Signature>
X-SIGNATURE: IzAqHsx6ygZV6sWW6ng9QtfHOsrNaxUo3brQz+1oZ26RJp6NGOTmPyipKvs2whoTURh9ZMx8ao6rUYRdsbN16rGuLqxbzD70IcWYIbitXbgVCRt5Dx0BogynF2pZBcS+BJNhdgRqlSJQXjI3YhuSzbmEE1O1wYycWDqSksP1VwGLIhj87Xl837GTqK8AT7dP/Bq4/pjGFfpl60BrKtkw58waHMY/S4leUbo+XWT92SzCtjjJmb9rwTDlSJbUPHjJCarQC+02+A7dnTedo0/ckSPrpqzOmRwlXPhAZF+E+Edj0TPXlvYkuLBc+Svag3PUMWy7+GAYRoupfC6mKydfgA==
Symmetric Signature
Symmetric Signature digunakan untuk melakukan verifikasi permintaan layanan SNAP Anda. Signature ini dihasilkan menggunakan client secret dengan algoritma SHA-512 HMAC, kemudian encode hasilnya dalam format Base64 untuk memastikan keamanan dan integritas data.
Pembuatan Signature
- Siapkan data yang diperlukan untuk membuat signature.
No
Data
Keterangan
Contoh
1
HTTP METHOD
Metode yang digunakan pada setiap API, seperti GET, POST, PUT, PATCH, dan DELETE, menentukan jenis operasi yang akan dilakukan pada sumber daya di server.
POST
2
RELATIVE PATH URL
URL yang merujuk pada alamat yang digunakan untuk mengakses dan berinteraksi dengan sumber daya tertentu di server
/snap/v1.0/transfer-va/create-va
3
ACCESS TOKEN B2B
Access Token B2B dapat diperoleh melalui Authorization Token Request dengan mengirimkan permintaan ke server otorisasi.
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQ
QUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZD
U5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2N
zgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.
XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW
9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg4
HTTP BODY
Perkecil ukuran request body dengan menghapus karakter yang tidak diperlukan, kemudian hash body menggunakan SHA-256. Untuk informasi lebih lanjut, silakan lihat langkah 2 dan 3.
080fd80881349db059d87cc2a93af2ec9c00c74dac5e97fa
ca0b544732c8de185
X-TIMESTAMP
Tanggal dan waktu transaksi harus mengikuti format YYYY-MM-DDTHH:mm:ss+07:00, dengan waktu yang disesuaikan dengan GMT+7 (Waktu Jakarta), untuk memastikan kesesuaian dengan zona waktu lokal.
2025-01-30T12:38:12+07:00
- Minify request body
HTTP body before minify:{
"partnerServiceId": " 12334",
"customerNo" : "318574181222",
"virtualAccountName" : "Setya Wardana",
"trxId": "2MkdEnmf434udFGuk1hE9sFL49Myv2q4xTQP",
"virtualAccountTrxType": "C",
"totalAmount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://partner-domain/callback",
"bankCode": "008"
}
}
HTTP body after minify:
{"partnerServiceId":"12334","customerNo":"318574181222","virtualAccountName":"SetyaWardana","trxId":"2MkdEnmf434udFGuk1hE9sFL49Myv2q4xTQP","virtualAccountTrxType":"C","totalAmount":{"value":"10000.00","currency":"IDR"},"additionalInfo":{"callbackUrl":"http://127.0.0.1:10007/callback/partner","bankCode":"008"}}
- Lowercase(HexEncode(SHA-256(RequestBody))).
Mengubah request body menjadi hash menggunakan SHA-256, kemudian konversi hasil hash tersebut ke dalam format Hexadecimal, dan terakhir mengubah seluruh hasilnya menjadi huruf kecil.080fd80881349db059d87cc2a93af2ec9c00c74dac5e97faca0b544732c8de18
- Compose string untuk proses sign.
Membuat sebuah string gabungan yang akan digunakan untuk menghasilkan signature digital. String ini biasanya terdiri dari beberapa elemen penting, yaitu sebagai berikut:<HTTP METHOD> + ":" + <RELATIVE PATH URL> + ":" + <ACCESS TOKEN B2B> + ":" + LowerCase(HexEncode(SHA-256(Minify(<HTTP BODY>)))) + ":" + <X-TIMESTAMP>
Contoh:POST:/snap/v1.0/transfer-va/create-va:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg:080fd80881349db059d87cc2a93af2ec9c00c74dac5e97faca0b544732c8de18:2025-01-30T12:38:12+07:00
- Enkripsi String signature dari proses sebelumnya ke SHA-512 HMAC menggunakan Client Secret, kemudian ubah menjadi format Base64. Berikut contoh nilai yang dihasilkan:
HFplT7auM0pHh9tOBl8gTpsQ4kDERjgi6SNAG+WEyA+ThpuquMknqV8EpLMS0lzi9DVOrseXjqdh+fl5XLN39A==
- Tempatkan string signature pada header HTTP dengan nama "X-SIGNATURE" untuk memastikan keamanan dan validitas permintaan.
X-SIGNATURE:
HFplT7auM0pHh9tOBl8gTpsQ4kDERjgi6SNAG+WEyA+ThpuquMknqV8EpLMS0lzi9DVOrseXjqdh+fl5XLN39A==
Validasi Callback Signature
- Ambil signature dari header HTTP "X-SIGNATURE" yang dikirim oleh pengirim API untuk melakukan verifikasi keasliannya.
X-Signature : gRDHLuQpscNyNV5JShXmaOkJHIJp8JrpYtLz4PzBAvuQZ0Yug5Ho0ze8pBlhP7r8tqepWAd68qyVc8aGLIkGhOofLKmWK38TJ2VVTkZC30W5SIxlVMCXHdEMdtvDtqtpOuyGK0owNlM3+de8ljzwisQ6aPX1SYrvA9QtNmGy1O+A3SP12r2GWhqcxhaL1T6g2X420L3alelJFTiBgeatM+1o/Fn0MLt9DxQa3c4ezxJpJAxVsJ3HdTP7PQcSajEoLTm3BIRajIhUP3dxgQKEXpDPXGwLFgEVJwW4EGJe39XuVJyiMxhUpB8kxinx76CNstDBw1Cawqm1iqAAHZH8Hg==
- Susun string yang akan digunakan untuk melakukan verifikasi.
<HTTP METHOD> + ":" + <PATH URL CALLBACK> + ":" + LowerCase(HexEncode(SHA-256(Minify(<HTTP BODY>)))) + ":" + <X-TIMESTAMP>
Contoh:POST:http://localhost:10007/callback/partner:50b238af7511827d11bab19c61207aaf52511f369188f08cc8e821da1ba78a0b:2025-03-06T13:10:14+07:00
- Verifikasi keaslian signature menggunakan enkripsi SHA-256 dengan RSA-2048. Bandingkan string tersebut dengan public key yang diberikan oleh pengirim API.
- Jika verifikasi berhasil, Anda dapat melanjutkan proses request.
SNAP Services
Authorization Token Request
Layanan ini dirancang untuk menangani semua tahapan dalam proses pengambilan Authorization Token. Penjelasan lebih mendalam mengenai setiap langkah akan dibahas pada bagian berikutnya.
Spesifikasi API PakaiLink terdiri dari 1 endpoint utama, yaitu:
- Access Token B2B
API ini berfungsi untuk mendapatkan Authorization Token menggunakan client_id dan client_secret. Token yang diperoleh dapat digunakan pada header HTTP Authorization untuk autentikasi lebih lanjut.
Pembuatan dan Validasi Signature
Layanan ini menerapkan teknologi Asymmetric Signature.
Versi
No |
Tanggal |
Versi |
Keterangan |
Halaman |
1 |
9 February 2025 |
1.0.0 |
Peluncuran perdana |
Semua Halaman |
Virtual Account
Layanan ini memungkinkan pengguna untuk melakukan pembayaran pada tagihan, invoice, atau pesanan tertentu. Layanan ini terdiri dari dua API. Penjelasan lebih rinci akan disampaikan pada bagian selanjutnya.
Spesifikasi API PakaiLink terdiri dari 2 endpoint utama, yaitu:
- Create Virtual Account
API ini berfungsi untuk membuat akun virtual (VA) dari PakaiLink yang terhubung ke Bank. Endpoint ini dapat digunakan untuk membuat akun VA Statis (Open) dan VA Dinamis (Close). - Callback Payment Notif
API ini digunakan untuk menginformasikan kepada partner ketika nomor VA telah dilakukan pembayaran.
Pembuatan dan Validasi Signature
Layanan ini menerapkan teknologi Symmetric Signature.
Versi
No |
Tanggal |
Versi |
Keterangan |
Halaman |
1 |
9 February 2025 |
1.0.0 |
Peluncuran perdana |
Semua Halaman |
QRIS MPM (Aquirer)
Layanan ini digunakan untuk memungkinkan Partner menerima pembayaran QRIS MPM dengan integrasi API ke Pakailink sebagai pengakuisisi. Dalam layanan ini, terdapat 3 API. Untuk informasi lebih rinci akan dijelaskan di bagian selanjutnya.
Spesifikasi API PakaiLink terdiri dari 3 endpoint utama yaitu:
- Generate QR MPM
API ini berfungsi untuk membuat QRIS oleh Partner melalui PakaiLink sebagai pengakuisisi. - Inquiry Transaction Status
API ini digunakan untuk melakukan pengecekan status terbaru dari QR yang telah dibuat oleh partner. - Callback Payment Notif
API ini digunakan untuk menginformasikan kepada partner ketika telah dilakukan pembayaran oleh pengguna akhir.
Pembuatan dan Validasi Signature
Layanan ini menerapkan teknologi Symmetric Signature.
Versi
No |
Tanggal |
Versi |
Keterangan |
Halaman |
1 |
9 February 2025 |
1.0.0 |
Peluncuran perdana |
Semua Halaman |
Payment Retail
Layanan ini memungkinkan merchant untuk membuat sebuah tagihan yang pembayarannya dapat dilakukan melalui Modern Retail. Layanan ini terdiri dari 1 API. Penjelasan lebih lengkap akan dibahas di bagian selanjutnya.
Spesifikasi API PakaiLink terdiri dari 2 endpoint utama, yaitu:
- Create Payment Retail
API ini berfungsi untuk membuat kode pembayaran yang dapat dilakukan melalui Modern Retail seperti Indomaret dan Alfamart. - Callback Payment Retail
API ini digunakan untuk menginformasikan kepada partner ketika telah dilakukan pembayaran oleh pengguna akhir.
Pembuatan dan Validasi Signature
Layanan ini menerapkan teknologi Symmetric Signature.
Versi
No |
Tanggal |
Versi |
Keterangan |
Halaman |
1 |
9 February 2025 |
1.0.0 |
Peluncuran perdana |
Semua Halaman |
E-money
Layanan ini memungkinkan pengguna untuk menerima dana dari E-wallet. Layanan ini terdiri dari 1 API. Untuk informasi lebih lengkap akan dijelaskan di bagian selanjutnya.
Spesifikasi API PakaiLink terdiri dari 2 end point utama, yaitu:
- Create Payment Emoney
API ini berfungsi untuk membuat tagihan yang pembayaran dapat dilakukan menggunakan E-money. - Callback Payment Emoney
API ini digunakan untuk menginformasikan kepada partner ketika sudah dilakukan pembayaran oleh pengguna akhir.
Pembuatan dan Validasi Signature
Layanan ini menerapkan teknologi Symmetric Signature.
Versi
No |
Tanggal |
Versi |
Keterangan |
Halaman |
1 |
9 February 2025 |
1.0.0 |
Peluncuran perdana |
Semua Halaman |
Transfer ke Bank
Layanan ini memungkinkan pengguna untuk melakukan proses inquiry (pemeriksaan) dan mengirim dana dari PakaiLink Bisnis ke rekening bank. Simak penjelasan lengkapnya pada bagian selanjutnya.
Spesifikasi API PakaiLink terdiri dari 3 endpoint utama, yaitu:
- Inquiry Transfer ke Bank
API ini memberikan kemudahan bagi merchant untuk mengecek informasi akun pelanggan secara cepat dan efisien melalui layanan PakaiLink. - Transfer ke Bank
API ini memungkinkan merchant untuk mengajukan permintaan transfer dana ke rekening bank melalui layanan PakaiLink. - Inquiry Status
API yang digunakan untuk melakukan pengecekan status terakhir dari transaksi transfer bank yang dilakukan. - Callback Pending
API ini digunakan untuk menginformasikan kepada partner terkait pembaruan status transaksi ketika transaksi sebelumnya pending.
Pembuatan dan Validasi Signature
Layanan ini menerapkan teknologi Symmetric Signature.
Versi
No |
Tanggal |
Versi |
Keterangan |
Halaman |
1 |
9 February 2025 |
1.0.0 |
Peluncuran perdana |
Semua Halaman |
Transfer Virtual Account
Layanan ini memungkinkan pengguna untuk melakukan transfer ke nomor rekening virtual yang akan diteruskan ke rekening asli terkait. Dengan virtual account, pengguna dapat dengan mudah mengidentifikasi tujuan pembayaran, dan informasi pembayaran beserta nomor virtual account akan tercatat di mutasi rekening. Informasi lebih lengkap akan dijelaskan di bagian selanjutnya.
Spesifikasi API PakaiLink terdiri dari 3 endpoint utama, yaitu:
- Inquiry Virtual Account
API ini memberikan kemudahan bagi merchant untuk melihat informasi akun pelanggan secara cepat dan efisien melalui layanan PakaiLink. - Transfer Virtual Account
Layanan ini memungkinkan merchant melakukan pembayaran atau transfer ke nomor rekening virtual account melalui layanan PakaiLink. - Inquiry Status
API yang digunakan untuk melakukan pengecekan status terakhir dari transaksi transfer bank yang dilakukan. - Callback Pending
API ini digunakan untuk menginformasikan kepada partner terkait pembaruan status transaksi ketika transaksi sebelumnya pending.
Pembuatan dan Validasi Signature
Layanan ini menerapkan teknologi Symmetric Signature.
Versi
No |
Tanggal |
Versi |
Keterangan |
Halaman |
1 |
9 February 2025 |
1.0.0 |
Peluncuran perdana |
Semua Halaman |
Customer Topup
Layanan ini memungkinkan customer untuk mengisi ulang saldo akun e-money mereka, yang nantinya bisa digunakan untuk berbagai transaksi. Informasi lebih lanjut akan dijelaskan di bagian selanjutnya.
Spesifikasi API PakaiLink terdiri dari 3 endpoint utama, yaitu:
- Inquiry Customer Top-up
Layanan ini digunakan untuk memeriksa keabsahan informasi akun e-money melalui layanan PakaiLink. - Payment Customer Top-up
Proses pengisian saldo akun pelanggan agar bisa digunakan untuk transaksi. - Inquiry Status
API yang digunakan untuk melakukan pengecekan status terakhir dari transaksi transfer bank yang dilakukan. - Callback Pending
API ini digunakan untuk menginformasikan kepada partner terkait pembaruan status transaksi ketika transaksi sebelumnya pending.
Pembuatan dan Validasi Signature
Layanan ini menerapkan teknologi Symmetric Signature.
Versi
No |
Tanggal |
Versi |
Keterangan |
Halaman |
1 |
9 February 2025 |
1.0.0 |
Peluncuran perdana |
Semua Halaman |
Balance Inquiry
Layanan ini memungkinkan customer untuk mengisi ulang saldo akun e-money mereka, yang nantinya bisa digunakan untuk berbagai transaksi. Informasi lebih lanjut akan dijelaskan di bagian selanjutnya.
Spesifikasi API PakaiLink terdiri dari 1 endpoint utama, yaitu:
- Balance Inquiry
Layanan ini digunakan untuk menanyakan saldo PakaiLink melalui merchant.
Pembuatan dan Validasi Signature
Layanan ini menerapkan teknologi Symmetric Signature.
Versi
SNAP API
Access Token B2B
API Name |
Access Token B2B |
Function |
API ini berfungsi untuk mendapatkan token yang digunakan dalam header Authorization untuk proses autentikasi. |
Service Code |
73 |
Method |
POST |
URL |
/snap/v1.0/access-token/b2b |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Tanggal dan waktu transaksi harus mengikuti format YYYY-MM-DDTHH:mm:ss+07:00, dengan waktu yang disesuaikan dengan GMT+7 (Waktu Jakarta), untuk memastikan kesesuaian dengan zona waktu lokal. |
3 |
X-CLIENT-KEY |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. ID unik untuk setiap mitra. |
4 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature yang dihasilkan menggunakan metode Asymmetric Signature. |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
grantType |
String |
Fixed, 18 max |
Wajib |
- |
Selalu memiliki nilai client_credentials. |
Contoh Request
POST /snap/v1.0/access-token/b2b
X-TIMESTAMP: 2025-02-012T10:35:07+07:00
X-CLIENT-KEY: sSqBiqusWlqmguLr7oYA2UEUcUPQh5CaBIw3Et
X-SIGNATURE: ODMwaU/AoFsYt1UCxGccRliNg0B9Qm/5dNcH4z8xU83gQnSe8aBh4JBZuMaHsCsGVyfPkdJ5rhJTsoy1os9JX9rwooBNA1C5rF/jFBJzbRlduzs5W44IQKUUyhT+XLob0pHpioZyiI0BCQ7I1pJ5/6WzJErRioYrmNusfs3+Obxl/SLtDS16fSOEymDHqrHxyACNPDIrsriPobsqgPergGpHBh6CzgE/9XB3vlFSZspj81EZQycyKJgys+YBBVJ14q6pTt3x0qCRQMmzb3Cg7zJa3QhRPWVRkh22ry4FaTZcfaEjyAd8bBcqjSavs7yKz9UU5emGPUj1MU6a/lgVkg==
Content-Type: application/json
{
"grantType": "client_credentials"
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode respon. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode respon. |
3 |
accessToken |
String |
Variable, 2048 max |
Wajib |
- |
Access token |
4 |
tokenType |
String |
Fixed, 6 max |
Wajib |
- |
Tipe authorized token yang harus selalu berisi nilai Bearer |
5 |
expiresIn |
String |
Variable, 8 max |
Wajib |
- |
Durasi kedaluwarsa 900 detik (15 menit) |
Contoh Response
{
"responseCode": "2007300",
"responseMessage": "Successful",
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJQYXlkaWEiLCJpYXQiOjE3MjI0OTYxMDAsImV4cCI6MTcyMjU4MjUwMCwiZGF0YSI6eyJlbnYiOiJkZXZlbG9wbWVudCJ9fQ.krcHPsQMh_cAzw5_5z7MXyDm89yOMhNd-mGkAARXxAU",
"tokenType": "Bearer",
"expiresIn": "900"
}
Kode dan Pesan Response
No |
Response Code |
Response Message |
Length |
1 |
2007300 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4007301 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4007302 |
Invalid Wajib Field |
kolom atau field yang wajib diisi, tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4017300 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk akses tindakan tertentu. |
Create Virtual Account
API Name |
Create VA |
Function |
API ini digunakan untuk membuat virtual account dari PakaiLink ke bank, di mana tipe transaksi yang dapat dilakukan meliputi pembuatan VA Statis dan VA Dinamis. Untuk layanan VA Dinamis sistem akan mengembalikan nomor VA yang dapat digunakan hanya satu kali untuk setiap transaksi, sedangkan pada VA Statis sistem akan membuat nomor Virtual Bank yang tidak pernah kedaluwarsa dan nominal transaksi yang fleksibel. Layanan ini akan mengembalikan Nomor Rekening Virtual untuk dibayar. Layanan ini diperuntukkan bagi mitra yang ingin membuat Nomor VA khusus untuk pelanggan mereka (1 VA untuk 1 Pelanggan). Jika Nomor Rekening Virtual dibayar oleh pengguna, dana penyelesaian akan langsung masuk ke Saldo PakaiLink Anda. Harap simpan nomor rekening virtual ini di database Anda. FAQ:
|
Service Code |
27 |
Method |
POST |
URL |
/snap/v1.0/transfer-va/create-va |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Authorization |
String |
Variable |
Wajib |
- |
Berisikan B2B Bearer JWT Token yang didapatkan dari Access Token B2B |
2 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time). |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra. |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
Messaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature. |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
partnerServiceId |
String |
Variable, 8 max |
Wajib |
- |
Turunan dari X-PARTNER-ID, mirip dengan kode perusahaan, spasi kiri 8 digit. partnerServiceId + customerNo atau virtualAccountNo |
2 |
customerNo |
String |
Variable, 20 max |
Wajib |
- |
Nomor unik (hingga 20 digit). partnerServiceId + CustomerNo atau virtualAccountNo |
3 |
virtualAccountName |
String |
Variable, 100 max |
Optional |
- |
Nama pengguna yang digunakan saat mendaftarkan VA. (statis) Nama yang terdaftar pada akun virtual yang digunakan untuk transaksi. (dinamis) |
4 |
virtualAccountEmail |
String |
Variable, 225 max |
Optional |
- |
Data ini wajib ada ketika mengimplementasikan VA Statis. |
5 |
trxId |
String |
Variable, 225 max |
Optional |
- |
ID unik yang digunakan untuk mengidentifikasi suatu transaksi. |
6 |
virtualAccountTrxType |
String |
Variable, 1 max |
Wajib |
- |
Digunakan untuk mengidentifikasi tipe kode VA yang dibuat, Untuk saat ini PakaiLink hanya support untuk tipe VA Statis dan VA Dinamis.
|
7 |
expiredDate |
String |
Variable |
Optional |
y |
Waktu kedaluwarsa dari VA dinamis yang dibuat (dalam format ISO). Jika variable ini tidak diisi, maka secara default akan diisi 24 jam oleh sistem. |
8 |
totalAmount |
Money |
Variable |
Wajib |
y |
Jumlah tagihan yang harus dibayarkan dalam suatu transaksi jika VA dinamis. |
9 |
additionalInfo |
String |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi. |
10 |
additionalInfo.callbackUrl |
String |
text |
Wajib |
- |
URL yang digunakan oleh sistem untuk mengirimkan response atau notifikasi otomatis setelah suatu transaksi atau proses selesai. |
11 |
additionalInfo.bankcode |
String |
text, 3 max |
Wajib |
- |
Kode bank merepresentasikan institusi bank yang digunakan untuk membuat kode VA. |
Contoh Request (VA Dinamis)
POST /snap/v1.0/transfer-va/create-va
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1059833850
X-SIGNATURE: 2aRrh2Gm2kMBZjX2wsRTB7ckGZf1pXjBfuJBY1hcBFx4m04eTWTjrxdV3mkcn6+ulN1DIr7SZucHbWnaTssGTQ==
CHANNEL-ID: 95221
{
"partnerServiceId": " 12334",
"customerNo" : "318574181222",
"virtualAccountName" : "Setya Wardana",
"trxId": "W8pVBq2Z8pyRqj7kUEIeALR1enG4pJ1JUpf1",
"virtualAccountTrxType": "C",
"expiredDate": "2025-04-23T11:01:34+07:00",
"totalAmount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://127.0.0.1:10007/callback/partner",
"bankCode": "008"
}
}
Contoh Request (VA Statis)
POST /snap/v1.0/transfer-va/create-va
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1062011571
X-SIGNATURE: ci+qeDB1b7M6dkDzxk4bBgQ94257b7/cJO1HCpn6gcFIFHzE9CiM/PFmvhLtjr3PJQ+C9xVljWgyv1k5Di5rgA==
CHANNEL-ID: 95221
{
"partnerServiceId": " 1222",
"customerNo" : "131857418122353",
"virtualAccountName" : "Setya Wardana",
"virtualAccountEmail" : "This email address is being protected from spambots. You need JavaScript enabled to view it. ",
"trxId": "1Mfo8gsQa43Sd2zJ3CJzDHYjGkeG3ErDD6tu",
"virtualAccountTrxType": "O",
"additionalInfo": {
"callbackUrl": "http://localhost:10007/callback/partner",
"bankCode": "013"
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
3 |
virtualAccountData |
String |
Variable |
Wajib |
- |
Berisi data virtual account |
4 |
partnerServiceId |
String |
Variable |
Wajib |
- |
|
5 |
customerNo |
String |
Variable |
Wajib |
- |
|
6 |
virtualAccountNo |
String |
Variable, 28 max |
Wajib |
- |
Informasi nomor virtual account yang menggabungkan partnerServiceId dan customerNo |
7 |
trxId |
String |
Variable, 225 max |
Optional |
- |
|
8 |
virtualAccountTrxType |
String |
Variable, 1 max |
Wajib |
- |
Digunakan untuk mengidentifikasi tipe kode VA yang dibuat, Untuk saat ini PakaiLink hanya support untuk tipe VA Statis dan VA Dinamis.
|
9 |
totalAmount |
JSON Object |
Variable |
- |
y |
Jumlah tagihan yang harus dibayarkan dalam suatu transaksi jika VA dinamis. |
10 |
totalAmount.value |
String |
Variable |
- |
- |
Total Amount, termasuk pecahan |
11 |
totalAmount.currency |
String |
Variable |
- |
- |
Kode mata uang berdasarkan ISO |
12 |
feeAmount |
JSON Object |
Variable |
- |
- |
Jumlah biaya layanan yang dikenakan dalam suatu transaksi |
13 |
feeAmount.value |
String |
Variable |
- |
- |
Transaction paidAmount, termasuk pecahan |
14 |
feeAmount.currency |
String |
Variable |
- |
- |
Kode mata uang berdasarkan ISO |
15 |
additionalInfo |
JSON Object |
Variable |
Wajib |
- |
Informasi tambahan. |
16 |
additionalInfo.callbackUrl |
String |
Variable |
Wajib |
- |
URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh pelanggan. |
17 |
additionalInfo.bankCode |
String |
text |
- |
- |
Kode bank merepresentasikan institusi bank yang digunakan untuk membuat kode VA. |
18 |
additionalInfo.referenceNo |
String |
Variable |
- |
- |
Identifikasi transaksi yang sedang berlangsung |
Contoh Response (VA Dinamis)
{
"responseCode": "2002700",
"responseMessage": "Successful",
"virtualAccountData": {
"partnerServiceId": " 12334",
"customerNo": "318574181222",
"virtualAccountNo": "1450010000048727",
"trxId": "W8pVBq2Z8pyRqj7kUEIeALR1enG4pJ1JUpf1",
"virtualAccountTrxType": "C",
"totalAmount": {
"value": "10000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://127.0.0.1:10007/callback/partner",
"bankCode": "008",
"referenceNo": "VAI000003F"
}
}
}
Contoh Response (VA Statis)
{
"responseCode": "2002700",
"responseMessage": "Successful",
"virtualAccountData": {
"partnerServiceId": " 1222",
"customerNo": "131857418122353",
"virtualAccountNo": "7137010000000885",
"trxId": "1Mfo8gsQa43Sd2zJ3CJzDHYjGkeG3ErDD6tu",
"virtualAccountTrxType": "O",
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://localhost:10007/callback/partner",
"bankCode": "013",
"referenceNo": "VAI000003H"
}
}
}
Kode dan Pesan Response
No |
Response Code |
Response Message |
Keterangan |
1 |
2002700 |
Successful |
Request telah berhasil diproses tanpa ada masalah. |
2 |
4002701 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter. |
3 |
4002702 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi, tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan. |
4 |
4012700 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk akses tindakan tertentu |
5 |
4012701 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa. |
6 |
4032701 |
Feature Not Allowed |
Fitur yang diminta tidak diizinkan atau tidak tersedia. |
7 |
4032702 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi. |
8 |
4042703 |
Bank Not Supported By Switch |
Bank yang digunakan tidak didukung oleh sistem. |
9 |
4042711 |
invalid account |
Akun tidak valid atau tidak dapat ditemukan dalam sistem. |
10 |
4092700 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama. |
11 |
4092701 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo,trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem. |
12 |
5002702 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request. |
Callback Virtual Account
API Name |
Callback Payment Notif VA |
Function |
API yang digunakan untuk menginformasikan kepada mitra PakaiLink ketika Nomor VA telah dilakukan pembayaran. |
Service Code |
28 |
Method |
POST |
URL |
/snap/v1.0/transfer-va/create-va |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
3 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature. |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
virtualAccountData |
JSON Object |
Variable |
Wajib |
- |
Berisikan informasi data callback transaksi Virtual Account. |
2 |
paymentFlagStatus |
|
|
|
|
|
3 |
paymentFlagReason |
MultilanguageText |
Variable |
Optional |
- |
Alasan Status Pembayaran multi bahasa |
4 |
paymentFlagReason.english |
String |
Variable |
- |
- |
Alasan status pembayaran dalam bahasa inggris |
5 |
paymentFlagReason.indonesia |
String |
Variable |
- |
- |
Alasan status pembayaran dalam bahasa indonesia |
6 |
partnerServiceId |
String |
Fixed, 8 max | Wajib |
- |
Kode penjual/pembayar dari akun virtual |
7 |
customerNo |
String |
Variable, 20 max | Wajib |
- |
Nomor unik (hingga 20 digit) |
8 |
virtualAccountNo |
String |
Variable, 28 max | Wajib |
- |
Informasi nomor akun virtual hasil gabungan partnerServiceId dan customerNo |
9 |
virtualAccountName |
String | Variable, 255 max | Wajib |
- |
Informasi nama pelanggan |
10 |
trxId |
String |
Variable, 64 max | Wajib |
- |
Pengenal transaksi unik pada sistem mitra yang diberikan untuk setiap transaksi |
11 |
virtualAccountTrxType |
String |
Variable, 1 max |
Wajib |
- |
Digunakan untuk mengidentifikasi tipe kode VA yang dibuat, Untuk saat ini PakaiLink hanya support untuk tipe VA Statis dan VA Dinamis.
|
12 |
paidAmount |
JSON Object |
Variable |
Optional |
- |
Berisi nominal yang berhasil dibayarkan |
13 |
paidAmount.value |
String |
Variable, 1 max |
- |
- |
Transaction paidAmount, termasuk pecahan |
14 |
paidAmount.currency |
String |
Variable, 3 max |
- |
- |
Kode mata uang berdasarkan ISO |
15 |
feeAmount |
JSON Object |
Variable |
Optional |
- |
Jumlah biaya layanan yang dikenakan dalam suatu transaksi |
16 |
feeAmount.value |
String |
Variable |
- |
- |
Transaction paidAmount, termasuk pecahan |
17 |
feeAmount.currency |
String |
Variable |
- |
- |
Kode mata uang berdasarkan ISO |
18 |
creditBalance |
JSON Object |
Variable |
Optional |
- |
Nominal yang masuk ke saldo mitra |
19 |
creditBalance.value |
String |
Variable |
- |
- |
Nominal creditBalance, termasuk pecahan |
20 |
creditBalance.currency |
String |
Variable |
- |
- |
Kode mata uang berdasarkan ISO |
21 |
additionalInfo |
JSON Object |
Variable |
- |
- |
Informasi tambahan. |
22 |
additionalInfo.callbackUrl |
String |
Variable |
Wajib |
- |
URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh pelanggan. |
23 |
additionalInfo.balance |
JSON Object |
Variable |
- |
- |
Saldo mitra saat ini |
24 |
additionalInfo.balance.value |
String |
Variable |
- |
- |
Nominal additional.balance, termasuk pecahan. |
25 |
additionalInfo.balance.currency |
String |
Variable |
- |
- |
Kode mata uang berdasarkan ISO |
Contoh Request
POST /callback/partner
"Content-Type": "application/json",
"X-Timestamp": "2025-03-04T12:33:28+07:00",
"X-Signature": "Au/HnhHlzXvfe3VK0zLYAEkEGiH2Zrc9lctjastNB/Ho/G4Z9N67e8zvH0j4WeK+2fTCsQg0LoWJqAlFtMBDqN7IBtffy4MzJ6uNN5P9TDp758f/xZlPrdT/c9MY7Y1IuirLHSQUxg3pO/ZDW0iKseordnGcxYYbhiApZxzd6Bw3z+uR+PlZA4CbZdORwCWLzcI1DL9VCXmjeH+NZCtf24CskGA+RhiFH/Vr95Vxux2oYSzDyy/xG5GASYujdIZ/dx9zC+lh9okLwhIEhF5bJ07bYu/IqKFPREEWZgiJ0gbyO5Mgh1RZh7EK6NNx7KuZSLZLW0aa3c62fNa6VhQFbA=="
{
"virtualAccountData": {
"paymentFlagStatus": "00",
"paymentFlagReason": {
"english": "Success",
"indonesia": "Sukses"
},
"partnerServiceId": "1222",
"customerNo": "131857418122353",
"virtualAccountNo": "7137010000000885",
"virtualAccountName": "Setya Wardana",
"trxId": "1Mfo8gsQa43Sd2zJ3CJzDHYjGkeG3ErDD6tu",
"virtualAccountTrxType": "O",
"paidAmount": {
"value": "10000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"creditBalance": {
"value": "7000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://localhost:10007/callback/partner",
"balance": {
"value": "997000.00",
"currency": "IDR"
}
}
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
Contoh Response
{
"responseCode": "2002800",
"responseMessage": "Successful"
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2002800 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
Create Payment Emoney
API Name |
Create Emoney |
Function |
Layanan untuk menerima dana dari Aplikasi E-wallet. Layanan ini akan memberi notifikasi pembayaran langsung ke aplikasi pelanggan. FAQ:
Settlement membutuhkan 2-4 hari untuk menerima dana ke saldo Anda. |
Service Code |
29 |
Method |
POST |
URL |
/snap/v1.0/payment/emoney |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Authorization |
String |
Variable |
Wajib |
- |
Berisikan B2B Bearer JWT Token, yang didapatkan dari Access Token B2B |
2 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
Messaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama. |
6 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
7 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini. |
Body
No |
nama |
Tipe |
Panjang |
Wajib |
Condition |
Keterangan |
1 |
parnerReferenceNo |
String |
Variable, maksimal |
Wajib |
- |
Nomor unik (hingga 20 digits). |
2 |
customerId |
String |
Variable, maksimal 35 |
Wajib |
- |
Pengidentifikasi unik untuk pelanggan di dalam sistem |
3 |
customerName |
String |
Variable, maksimal 100 |
Wajib |
- |
Pengidentifikasiunik untuk pelanggan yang disediakan oleh mitra. |
4 |
customerPhone |
String |
Variable, maksimal 15 |
Optional |
- |
Nomor telepon pelanggan yang disediakan oleh mitra |
5 |
customerEmail |
String |
Variable, maksimal 225 |
Optional |
- |
Alamat email pelanggan yang disediakan oleh mitra |
6 |
expiredDate |
Sreing |
Variable |
Optional |
y |
Waktu kedaluwarsa dari VA dinamis yang dibuat (dalam format ISO). Jika variable ini tidak diisi, maka secara default akan diisi 24 jam oleh sistem. |
7 |
totalAmount |
money |
Variable |
Wajib |
- |
Berisi dua sub-field. Mata uang: Kode mata uang berdasarkan ISO |
8 |
additionalInfo |
String |
Variable |
Wajib |
- |
Informasi tambahan |
9 |
additionalInfo.productCode |
String |
Variable, maksimal 20 |
Wajib |
- |
Kode yang mewakili jenis metode pembayaran digital |
10 |
additionalInfo.emoneyPhone |
String |
text |
Wajib |
- |
Nomor telepon e-money yang ditautkan |
11 |
additionalInfo.billTitle |
String |
variabel |
Optional |
- |
Judul penagihan yang jelas dan ringkas untuk memudahkan identifikasi pembayaran. |
12 |
additionalInfo.callbackUrl |
String |
text |
Wajib |
- |
URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh pelanggan |
Contoh Request
POST /snap/v1.0/payment/emoney
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1068976176
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"partnerReferenceNo": "V9I4JJJott8YQu4jZgWLUmHM7unEQ5B4j0Hh",
"customerId": "31857118",
"customerName": "Hermawan",
"customerPhone": "081133383900",
"customerEmail": "
"expiredDate": "2025-04-23T11:01:34+07:00",
"totalAmount": {
"value": "11000.00",
"currency": "IDR"
},
"additionalInfo": {
"productCode": "PAYOVO",
"emoneyPhone": "081133383900",
"billTitle": "Payment Order 0000001",
"callbackUrl": "http://localhost:10007/callback/partner"
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
3 |
emoneyData |
String |
Variable |
Wajib |
- |
Berisikan data e-money. |
4 |
paymentCode |
|
|
|
|
|
5 |
referenceNo |
String |
Variable |
Wajib |
- |
Identifikasi transaksi yang sedang berlangsung |
6 |
feeAmount |
JSON Object |
Variable |
Wajib |
- |
Jumlah biaya yang dikenakan dalam suatu transaksi |
7 |
feeAmount.value |
String |
Variable |
Wajib |
- |
Nominal feeAmount, termasuk pecahan. |
8 |
feeAmount.currency |
String |
Variable |
Wajib |
- |
Kode mata uang berdasarkan ISO |
Contoh Response
{
"responseCode": "2002900",
"responseMessage": "Successful",
"emoneyData": {
"partnerReferenceNo": "V9I4JJJott8YQu4jZgWLUmHM7unEQ5B4j0Hh",
"customerId": "31857118",
"customerName": "Hermawan",
"customerPhone": "081133383900",
"customerEmail": "
"paymentCode": "1741068977957",
"referenceNo": "EMI000002S",
"totalAmount": {
"value": "11000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"productCode": "PAYOVO",
"emoneyPhone": "081133383900",
"billTitle": "Payment Order 0000001",
"callbackUrl": "http://localhost:10007/callback/partner"
}
}
}
Kode dan Pesan Response
No |
Kode Response |
Pesan Response |
Keterangan |
1 |
2002900 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4002901 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4002902 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4012900 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4012901 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4032901 |
Feature Not Allowed |
Fitur yang diminta tidak diizinkan atau tidak tersedia |
7 |
4032902 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi |
8 |
4042903 |
Bank Not Supported By Switch |
Bank yang digunakan tidak didukung oleh sistem |
9 |
4092900 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
10 |
4092901 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo, trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem |
11 |
5002902 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses permintaan |
Callback Payment Emoney
API Name |
Callback Payment Notif Emoney |
Function |
API yang digunakan untuk menginformasikan kepada mitra PakaiLink ketika kode payment telah dilakukan pembayaran. |
Service Code |
30 |
Method |
POST |
URL |
URL yang ditambahkan saat mengakses endpoint create kode payment emoney sebelumnya. |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
3 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
partnerReferenceNo |
String |
Variable |
Wajib |
- |
Nomor unik (hingga 20 digits). |
2 |
transactionData |
JSON Object |
Variable |
Wajib |
- |
Berisi informasi data callback transaksi emoney. |
3 |
paymentFlagStatus |
|||||
4 | paymentFlagReason | |||||
5 |
paymentFlagReason.english |
|
|
|
|
|
6 |
paymentFlagReason.indonesia |
|
|
|
|
|
7 |
customerNo |
|
|
|
|
|
8 |
customerName |
|
|
|
|
|
9 |
emoneyPhone |
|
|
|
|
|
10 |
paidAmount |
|
|
|
|
|
11 |
paidAmount.value |
|
|
|
|
|
12 |
paidAmount.currency |
|
|
|
|
|
13 |
feeAmount |
|
|
|
|
|
14 |
feeAmount.value |
|
|
|
|
|
15 |
feeAmount.currency |
|
|
|
|
|
16 |
creditBalance |
|
|
|
|
|
17 |
creditBalance.value |
|
|
|
|
|
18 |
creditBalance.currency |
|
|
|
|
|
19 |
additionalInfo |
|
|
|
|
|
20 |
additionalInfo.callbackUrl |
|
|
Wajib |
|
|
21 |
additionalInfo.balance |
|
|
|
|
|
22 |
additionalInfo.balance.value |
|
|
|
|
|
23 |
additionalInfo.balance.currency |
|
|
|
|
|
Contoh Request
POST /callback/partner
"Content-Type": "application/json",
"X-Timestamp": "2025-03-04T12:33:28+07:00",
"X-Signature": "Au/HnhHlzXvfe3VK0zLYAEkEGiH2Zrc9lctjastNB/Ho/G4Z9N67e8zvH0j4WeK+2fTCsQg0LoWJqAlFtMBDqN7IBtffy4MzJ6uNN5P9TDp758f/xZlPrdT/c9MY7Y1IuirLHSQUxg3pO/ZDW0iKseordnGcxYYbhiApZxzd6Bw3z+uR+PlZA4CbZdORwCWLzcI1DL9VCXmjeH+NZCtf24CskGA+RhiFH/Vr95Vxux2oYSzDyy/xG5GASYujdIZ/dx9zC+lh9okLwhIEhF5bJ07bYu/IqKFPREEWZgiJ0gbyO5Mgh1RZh7EK6NNx7KuZSLZLW0aa3c62fNa6VhQFbA=="
{
"partnerReferenceNo": "V9I4JJJott8YQu4jZgWLUmHM7unEQ5B4j0Hh",
"transactionData": {
"paymentFlagStatus": "00",
"paymentFlagReason": {
"english": "Success",
"indonesia": "Sukses"
},
"customerNo": "31857118",
"customerName": "Hermawan",
"emoneyPhone": "081133383900",
"paidAmount": {
"value": "11000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"creditBalance": {
"value": "8000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://localhost:10007/callback/partner",
"balance": {
"value": "997000.00",
"currency": "IDR"
}
}
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
Contoh Response
{
"responseCode": "2003000",
"responseMessage": "Successful"
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2003000 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
Generate QR MPM
API Name |
Generate QR MPM |
Function |
API yang digunakan untuk membuat QRIS dari mitra ke PakaiLink selaku acquirer. |
Service Code |
47 |
Method |
POST |
URL |
/snap/v1.0/qr/qr-mpm-generate |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisikan B2B Bearer JWT Token, yang didapatkan dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
Messaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
merchantid |
String |
Variable, 64 max |
Wajib |
- |
Pengidentifikasi unik untuk masing-masing mitra. |
2 |
storeId |
String |
Variable, 64 max |
Optional |
- |
Pengidentifikasi unik untuk masing-masing mitra. |
3 |
terminalId |
String |
Variable, 16 max |
Optional |
- |
Pengidentifikasi unik untuk masing-masing mitra. |
4 |
partnerReferenceNo |
String |
Variable, 64 max |
Wajib |
- |
Unique transaction identifier on partner system which assigned to each transaction |
5 |
amount |
Money |
Variable |
Wajib |
- |
Berisi dua sub-field.
|
7 |
validityPeriod |
String |
Fixed, 25 max |
Optional |
- |
Durasi QRIS valid, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (waktu Jakarta). Jika mitra tidak mengisi data ini, maka akan diatur secara default selama 1 jam. |
8 |
additionalInfo |
JSON Object |
Variable |
Wajib |
- |
Informasi tambahan |
9 |
additionalInfo.callback |
String |
Variable |
Wajib |
- |
URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh pelanggan. |
Contoh Request
POST /snap/v1.0/qr/qr-mpm-generate
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1098449924
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"merchantId": "1031964782",
"storeId": "12333",
"terminalId": "ID1024361878720",
"partnerReferenceNo": "Mkbk7WbPyEB3PAYDI5ZlunhK02qOG8cPEZ4B",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"validityPeriod": "2025-03-06T23:59:59+07:00",
"additionalInfo": {
"callbackUrl": "http://localhost:10007/callback/partner"
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
3 |
referenceNo |
String |
Variable, 64 max |
Optional |
- |
ID transaksi di PakaiLink |
4 |
partnerReferenceNo |
String |
Variable, 64 max |
Optional |
- |
Pengidentifikasi transaksi unik pada sistem mitra yang ditetapkan untuk setiap transaksi |
5 |
qrContent |
String |
Variable, 512 max |
Wajib |
- |
QR String MPM |
6 |
merchantName |
String |
Variable, 25 max |
Optional |
- |
Nama merchant |
7 |
storeId |
String |
Variable, 64 max |
Optional |
- |
ID unik milik toko merchant |
8 |
terminalId |
String |
Variable, 16 max |
Optional |
- |
Pengidentifikasi unik untuk masing-masing merchant. |
9 |
validityPeriod |
String |
Fixed, 25 max |
Optional |
- |
Durasi QRIS valid, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (waktu Jakarta). Jika mitra tidak mengisi data ini, maka akan diatur secara default selama 1 jam. |
10 |
amount |
Money |
Variable |
Optional |
- |
Berisi dua sub-field.
|
11 |
feeAmount |
Money |
Variable |
Optional |
- |
Berisi dua sub-field.
|
Contoh Response
{
"responseCode": "2004700",
"responseMessage": "Successful",
"referenceNo": "QRA0000038",
"partnerReferenceNo": "Mkbk7WbPyEB3PAYDI5ZlunhK02qOG8cPEZ4B",
"qrContent": "00020101021226640017ID.CO.DANAMON.WWW0118936000110000063204021012126070280303UKE51440014ID.CO.QRIS.WWW0215LQ12309846890140303UKE626001090000038070510QRA00000380709LI307GXIN9916000200010647875153033605405100006008SIDOARJO520459995915Merchant LinkQu5802ID61056125363041BD6",
"merchantName": "HoreStudio",
"storeId": "12333",
"terminalId": "ID1024361878720",
"validityPeriod": "2025-03-06T23:59:59+07:00",
"amount": {
"currency": "IDR",
"value": "10000.00"
},
"feeAmount": {
"currency": "IDR",
"value": "3000.00"
}
}
Kode dan Pesan Response
No |
Response Code |
Response Message |
Remarks |
1 |
2004700 |
Successful |
Request telah berhasil diproses tanpa ada masalah. |
2 |
4004701 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter. |
3 |
4004702 |
Invalid Mandatory Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan. |
4 |
4014700 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu. |
5 |
4014701 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa. |
6 |
4034702 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi |
7 |
4044708 |
Invalid Merchant |
Merchant tidak ada atau dalam status abnormal |
8 |
4094700 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
9 |
4094701 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo, trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem |
10 |
5004702 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Inquiry Transaction Status
API Name |
Inquiry Transaction Status |
Function |
API ini digunakan untuk menanyakan status pembayaran dan informasi yang dihasilkan qr dari platform merchant ke PakaiLink. |
Service Code |
53 |
Method |
POST |
URL |
/snap/v1.0/qr/qr-mpm-status |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisikan B2B Bearer JWT Token, yang didapatkan dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
Messaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
originalPartnerReferenceNo |
String |
Variable, 64 max |
Optional |
y: (originalReferenceNo = null) |
Pengidentifikasi transaksi asli pada sistem mitra |
2 |
originalReferenceNo |
String |
Variable, 64 max |
Optional |
y: (originalPartnerReferenceNo = null) |
Pengidentifikasi transaksi asli pada sistem PakaiLink |
3 |
serviceCode |
String |
Variable, 2 max |
Wajib |
- |
Indikator jenis transaksi (kode layanan dari transaksi asli) |
Contoh Request
POST /snap/v1.0/qr/qr-mpm-status
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1101167819
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"originalPartnerReferenceNo": "Mkbk7WbPyEB3PAYDI5ZlunhK02qOG8cPEZ4B",
"serviceCode": "53",
"merchantId": "1031964782"
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
3 |
originalPartnerReferenceNo |
String |
Variable, 64 max |
Optional |
- |
Pengidentifikasi transaksi asli pada sistem mitra |
4 |
originalReferenceNo |
String |
Variable, 64 max |
Wajib |
jika berhasil, value akan terisi |
Pengidentifikasi transaksi asli pada sistem PakaiLink |
5 |
originalExternalId |
String |
Variable, 32 max |
Optional |
- |
ID eksternal asli pada pesan header |
6 |
serviceCode |
String |
Variable, 2 max |
Wajib |
- |
Indikator jenis transaksi (kode layanan dari request transaksi asli) |
7 |
transactionDate |
String |
Fixed, 25 max |
Optional |
- |
Waktu transaksi: ISO8601, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (waktu Jakarta) |
8 |
latestTransactionStatus |
String |
Fixed, 2 max |
Wajib |
- |
Kode kategori untuk status transaksi. Nilai-nilai tersebut meliputi:
|
9 |
transactionStatusDesc |
String |
Variable, 50 max |
Optional |
- |
Deskripsi status transaksi |
10 |
amount |
Money |
Variable |
Wajib |
- |
Berisi dua sub-field.
|
11 |
additionalInfo |
JSON Object |
Variable |
Optional |
- |
Informasi tambahan |
12 |
callback |
String |
Variable |
Wajib |
- |
URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh pelanggan. |
13 |
customerData |
String |
Variable, 50 max |
Wajib |
- |
Nama pelanggan. |
14 |
rrn |
String |
Variable, 12 max |
Wajib |
- |
Nomor referensi dari transaksi QRIS |
15 |
mdr |
Money |
Variable |
Optional |
- |
Berisi dua sub-field.
|
16 |
serviceFee |
Money |
Variable |
Optional |
- |
Berisi dua sub-field.
|
17 |
nominalPaid |
Money |
Variable |
Optional |
- |
Berisi dua sub-field.
|
18 |
totalPaid |
Money |
Variable |
Optional |
- |
Berisi dua sub-field.
|
19 |
totalReceive |
Money |
Variable |
Optional |
- |
Berisi dua sub-field.
|
Contoh Response
{
"responseCode": "2005300",
"responseMessage": "Successful",
"originalPartnerReferenceNo": "Mkbk7WbPyEB3PAYDI5ZlunhK02qOG8cPEZ4B",
"originalReferenceNo": "1741098450422",
"originalExternalId": "1101167819",
"serviceCode": "47",
"transactionDate": "2025-03-04T21:27:31+07:00",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"paidTime": "2025-03-04T21:34:12+07:00",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"callback": "http://localhost:10007/callback/partner",
"customerData": "Toko Kelontong",
"rrn": "",
"mdr": {
"value": "0.00",
"currency": "IDR"
},
"serviceFee": {
"value": "3000.00",
"currency": "IDR"
},
"nominalPaid": {
"value": "10000.00",
"currency": "IDR"
},
"totalPaid": {
"value": "10000.00",
"currency": "IDR"
},
"totalReceive": {
"value": "7000.00",
"currency": "IDR"
}
}
}
Kode dan Pesan Response
No |
Response Code |
Response Message |
Remarks |
1 |
2005300 |
Successful |
Request telah berhasil diproses tanpa ada masalah. |
2 |
4005301 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter. |
3 |
4005302 |
Invalid Mandatory Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan. |
4 |
4015300 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu. |
5 |
4015301 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa. |
6 |
4045301 |
Transaction Not Found |
Transaksi tidak ditemukan |
7 |
4095300 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
8 |
4095301 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo, trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem |
9 |
5005302 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Callback Payment Notif
API Name |
Callback Payment Notif |
Function |
API ini digunakan untuk menginformasikan status pembayaran dan informasi dari PakaiLink ke platform merchant |
Service Code |
52 |
Method |
POST |
URL |
URL yang ditambahkan saat mengakses endpoint generate QR Code sebelumnya. |
Accept |
application/json |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Mandatory |
- |
Tipe konten, nilai selalu application/json |
2 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Mandatory |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
3 |
X-PARTNER-ID |
String |
Variable, 36 max |
Mandatory |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra |
4 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Mandatory |
- |
Messaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama. |
5 |
CHANNEL-ID |
String |
Variable, 5 max |
Mandatory |
- |
Identifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini. |
6 |
X-SIGNATURE |
String |
Variable |
Mandatory |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
originalPartnerReferenceNo |
String |
Variable, 64 max |
Mandatory |
- |
Pengidentifikasi transaksi asli pada sistem mitra |
2 |
originalReferenceNo |
String |
Variable, 64 max |
Mandatory |
- |
Pengidentifikasi transaksi asli pada sistem PakaiLink |
3 |
latestTransactionStatus |
String |
Fixed, 2 max |
Mandatory |
- |
Status transaksi terakhir |
4 |
transactionStatusDesc |
String |
Variable, 50 max |
Optional |
- |
Deskripsi status transaksi |
5 |
amount |
Money |
Variable |
Mandatory |
- |
Berisi dua sub-field.
|
6 |
additionalInfo |
JSON Object |
Variable |
Optional |
- |
Informasi tambahan |
Request Sample
POST /callback/partner
"Content-Type": "application/json",
"X-Timestamp": "2025-03-04T21:34:12+07:00",
"X-Signature": "V+0jAw/sXmW23c6j+5tb3bXTqrujxBd1fVKIHVtA84th/p6GAO9/PHBXCKvkVOCbCbv/w5uyht+oyjC8csQnZdKZm3yYbl+RJKEP1AvAcKX0de9BPGpMqiDSME9EKASBzoD6ieEkL77wXdnD9KoX2fd51f5COZQD2SUcrKoseKDNLrTMyPoI1dBMbxQjectdypO6seTzYOYsDnkzlpkFtYhPDD1h+Uk/jGqVjvKnegnvuU6f3baonrPU7lTsBCn50ZwbrBJYZnjlZDZVDgbUAwAsLzyCTcpy/RaFI56Hz6SzSAREOPMfgdF26qvCEVOnm2XGNv+jPjFUrToDOTO6ZQ==",
{
"responseCode": "2004700",
"responseMessage": "Successful",
"originalPartnerReferenceNo": "Mkbk7WbPyEB3PAYDI5ZlunhK02qOG8cPEZ4B",
"originalReferenceNo": "1741098450422",
"originalExternalId": "1098449924",
"serviceCode": "52",
"latestTransactionStatus": "00",
"transactionStatusDesc": "success",
"createdTime": "2025-03-04T21:27:31+07:00",
"finishedTime": "2025-03-04T21:34:12+07:00",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"callback": "http://localhost:10007/callback/partner",
"customerData": "Hore Studio",
"rrn": "20231011103236",
"mdr": {
"value": "0.00",
"currency": "IDR"
},
"serviceFee": {
"value": "3000.00",
"currency": "IDR"
},
"nominalPaid": {
"value": "10000.00",
"currency": "IDR"
},
"totalPaid": {
"value": "10000.00",
"currency": "IDR"
},
"totalReceive": {
"value": "7000.00",
"currency": "IDR"
}
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Mandatory |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Mandatory |
- |
Lihat daftar kode response. |
Response Sample
{
"responseCode": "2005200",
"responseMessage": "Successful"
}
Kode dan Pesan Response
No |
Response Code |
Response Message |
Remarks |
1 |
2005200 |
Successful |
Request telah berhasil diproses tanpa ada masalah. |
2 |
5005202 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Create Payment Retail
API Name |
Create Payment Retail Code |
Function |
Layanan untuk menerima dan mengatur dana dari modern retail. FAQ :
Settlement membutuhkan 2-4 hari untuk menerima dana ke saldo Anda. |
Service Code |
31 |
Method |
POST |
URL |
/snap/v1.0/payment/modern-retail |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisikan B2B Bearer JWT Token, yang didapatkan dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
Messaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
parnerReferenceNo |
String |
Variable, 127 max |
Wajib |
- |
Nomor unik (hingga 20 digits). |
2 |
customerId |
String |
Variable, 35 max |
Wajib |
- |
Pengidentifikasi unik untuk pelanggan di dalam sistem |
3 |
customerName |
String |
Variable, 100 max |
Wajib |
- |
Pengidentifikasi unik untuk pelanggan yang disediakan oleh mitra. |
4 |
customerPhone |
String |
Variable, 15 max |
Optional |
- |
Nomor telepon pelanggan yang disediakan oleh mitra |
5 |
customerEmail |
String |
Variable, 225 max |
Optional |
- |
Alamat email pelanggan yang disediakan oleh mitra |
6 |
expiredDate |
String |
Variable |
Optional |
y |
Waktu kedaluwarsa dari VA dinamis yang dibuat (dalam format ISO). Jika variable ini tidak diisi, maka secara default akan diisi 24 jam oleh sistem. |
7 |
totalAmount |
money |
Variable |
Wajib |
- |
Berisi dua sub-field. Nilai: Total Amount, termasuk pecahan Mata uang: Kode mata uang berdasarkan ISO |
8 |
additionalInfo |
String |
Variable |
Wajib |
- |
Informasi tambahan |
9 |
additionalInfo.productCode |
String |
Variable, 20 max |
Wajib |
- |
Kode yang mewakili jenis metode pembayaran digital |
10 |
additionalInfo.remark |
String |
text |
Optional |
- |
Catatan tambahan atau komen dari mitra mengenai transaksi |
11 |
additionalInfo.callbackUrl |
String |
text |
Optional |
- |
URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh pelanggan |
Contoh Request
POST /snap/v1.0/payment/modern-retail
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1075041270
X-SIGNATURE: jysCg9o4ptFydUFxtT5iBqCha3qeZlHL8l5KO1PXqQKWnRH/WotUDmq8+pf7pArtzpqjAfqr7V6HHgoaR47VXg==
CHANNEL-ID: 95221
{
"partnerReferenceNo": "cD3b5yRiCtGmbFhaNCbhPde5W0jymwHzeEf6",
"customerId" : "31857119",
"customerName" : "Setya Wardana",
"customerPhone" : "085745512488",
"customerEmail" : "This email address is being protected from spambots. You need JavaScript enabled to view it. ",
"expiredDate": "2025-04-23T11:01:34+07:00",
"totalAmount": {
"value": "50000.00",
"currency": "IDR"
},
"additionalInfo": {
"productCode": "ALFAMART",
"remark": "Pembayaran",
"callbackUrl": "http://localhost:10007/callback/partner"
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
3 |
paymentCodeRetail |
String |
Variable |
Wajib |
- |
Berisikan data Retail Code |
Contoh Response
{
"responseCode": "2003100",
"responseMessage": "Successful",
"paymentData": {
"partnerReferenceNo": "cD3b5yRiCtGmbFhaNCbhPde5W0jymwHzeEf6",
"customerId": "31857119",
"customerName": "Setya Wardana",
"customerPhone": "085745512488",
"customerEmail": "
"paymentCode": "1002000005536",
"referenceNo": "RTI000002S",
"totalAmount": {
"value": "50000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"productCode": "ALFAMART",
"remark": "Pembayaran",
"callbackUrl": "http://localhost:10007/callback/partner"
}
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2003100 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4003101 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4003102 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4013100 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4013101 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4033101 |
Feature Not Allowed |
Fitur yang diminta tidak diizinkan atau tidak tersedia |
7 |
4033102 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi |
8 |
4043103 |
Bank Not Supported By Switch |
Bank yang digunakan tidak didukung oleh sistem |
9 |
4093100 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
10 |
4093101 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo, trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem |
11 |
5003102 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses permintaan |
Callback Payment Retail
API Name |
Callback Payment Retail |
Function |
API yang digunakan untuk menginformasikan kepada mitra PakaiLink ketika kode payment telah dilakukan pembayaran. |
Method |
POST |
Service Code |
32 |
URL |
URL yang ditambahkan saat mengakses endpoint create kode payment emoney sebelumnya. |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
transactionData |
JSON Object |
Variable |
Wajib |
- |
Berisi informasi data callback transaksi emoney. |
Contoh Request
POST /callback/partner
"Content-Type": "application/json",
"X-Timestamp": "2025-03-04T12:33:28+07:00",
"X-Signature": "Au/HnhHlzXvfe3VK0zLYAEkEGiH2Zrc9lctjastNB/Ho/G4Z9N67e8zvH0j4WeK+2fTCsQg0LoWJqAlFtMBDqN7IBtffy4MzJ6uNN5P9TDp758f/xZlPrdT/c9MY7Y1IuirLHSQUxg3pO/ZDW0iKseordnGcxYYbhiApZxzd6Bw3z+uR+PlZA4CbZdORwCWLzcI1DL9VCXmjeH+NZCtf24CskGA+RhiFH/Vr95Vxux2oYSzDyy/xG5GASYujdIZ/dx9zC+lh9okLwhIEhF5bJ07bYu/IqKFPREEWZgiJ0gbyO5Mgh1RZh7EK6NNx7KuZSLZLW0aa3c62fNa6VhQFbA=="
{
"transactionData": {
"paymentFlagStatus": "00",
"paymentFlagReason": {
"english": "Success",
"indonesia": "Sukses"
},
"partnerReferenceNo": "cD3b5yRiCtGmbFhaNCbhPde5W0jymwHzeEf6",
"customerNo": "31857119",
"customerName": "Setya Wardana",
"paidAmount": {
"value": "50000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"creditBalance": {
"value": "47000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://localhost:10007/callback/partner",
"balance": {
"value": "997000.00",
"currency": "IDR"
}
}
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
Contoh Response
{
"responseCode": "2003200",
"responseMessage": "Successful"
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2003200 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
Inquiry Transfer ke bank
API Name |
Transfer to Bank Account Inquiry |
Function |
API ini digunakan oleh merchant untuk melakukan pengecekan informasi rekening bank melalui PakaiLink Bisnis. Hasil yang didapatkan adalah nama pemilik nomor rekening. FAQ :
|
Service Code |
42 |
Method |
POST |
URL |
/snap/v1.0/emoney/bank-account-inquiry |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisi B2B Bearer JWT Token, yang telah Anda peroleh dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Tanggal dan waktu transaksi, dalam format. YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam format GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. ID unik untuk setiap mitra. |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
ID referensi pesan unik yang dihasilkan oleh merchant. String numerik. Nomor referensi yang harus unik dalam satu hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat tempat layanan API diakses oleh pengguna akhir (pelanggan) saat ini. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Tanda tangan perlu dihasilkan menggunakan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
parnerReferenceNo |
String |
Variable, 225 max |
Wajib |
- |
Nomor unik (hingga 36 digit). |
2 |
beneficiaryAccountNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor Rekening Penerima. |
3 |
amount |
money |
Variable |
Wajib |
- |
Jumlah uang yang terlibat dalam suatu transaksi |
4 |
additionalInfo |
String |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
5 |
additionalInfo.beneficiaryBankCode |
String |
Variable, 20 max |
Wajib |
- |
Kode bank dimana proses inquiry akan dilakukan |
Contoh Request
POST /snap/v1.0/emoney/bank-account-inquiry
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1155348175
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"partnerReferenceNo": "ilFpX51e0CAttU2DW7dDWV7TCWqk1cE1wyJj",
"beneficiaryAccountNumber" : "6750620416",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"beneficiaryBankCode": "014"
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
3 |
sessionId |
String |
Variable, 50 max |
Wajib |
- |
Id untuk identifikasi transaksi yang sedang berlangsung |
4. |
partnerReferenceNo |
String |
Variable, 225 max |
Wajib |
- |
Nomor referensi unik yang digunakan oleh mitra untuk mengidentifikasi transaksi |
5 |
beneficiaryAccountNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor rekening penerima yang digunakan untuk mengidentifikasi rekening tujuan |
6 |
beneficiaryAccountName |
String |
Variable, 50 max |
Wajib |
- |
Nama pemilik rekening penerima yang terdaftar pada bank |
7 |
beneficiaryBankName |
String |
Variable, 100 max |
Wajib |
- |
Nama bank tempat rekening penerima terdaftar |
8 |
amount |
money |
Variable |
Wajib |
- |
Jumlah uang yang terlibat dalam suatu transaksi |
9 |
feeAmount |
money |
Variable |
Wajib |
- |
Jumlah biaya layanan yang dikenakan dalam suatu transaksi |
10 |
additionalInfo |
JSON Object |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
11 |
additionalInfo.balance |
money |
Variable |
Wajib |
- |
Jumlah uang yang tersedia dalam suatu akun |
Contoh Response
{
"responseCode": "2004200",
"responseMessage": "Successful",
"sessionId": "INQ0000030",
"partnerReferenceNo": "ilFpX51e0CAttU2DW7dDWV7TCWqk1cE1wyJj",
"beneficiaryAccountNumber": "6750620416",
"beneficiaryAccountName": "Henda Sujiadi",
"beneficiaryBankName": "BANK BCA",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"balance": {
"value": "962000.00",
"currency": "IDR"
}
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2004200 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4004201 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4004202 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4014200 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4014201 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4034201 |
Feature Not Allowed |
Fitur yang diminta tidak diizinkan atau tidak tersedia |
7 |
4034202 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi |
8 |
4044203 |
Bank Not Supported By Switch |
Bank yang digunakan tidak didukung oleh sistem |
9 |
4094200 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
10 |
4094201 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo,trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem |
11 |
5004202 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Transfer ke bank
API Name |
Transfer to Bank Transfer |
Function |
API ini memungkinkan merchant untuk melakukan permintaan transfer dana ke bank melalui PakaiLink bisnis. Layanan ini berjalan secara real-time. Pastikan Balance mencukupi untuk melakukan transfer. Faq :
|
Service Code |
43 |
Method |
POST |
URL |
/snap/v1.0/emoney/transfer-bank |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisi B2B Bearer JWT Token, yang telah Anda peroleh dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Tanggal dan waktu transaksi, dalam format. YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam format GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. ID unik untuk setiap mitra. |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
ID referensi pesan unik yang dihasilkanoleh merchant. String numerik. Nomor referensi yang harus unik dalam satu hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat tempat layanan API diakses oleh pengguna akhir (pelanggan) saat ini. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
partnerReferenceNo |
String |
Variable, 225 max |
Wajib |
- |
Nomor unik yang diisi oleh merchant atau partner. |
2 |
beneficiaryAccountNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor Rekening Penerima. |
3 |
beneficiaryBankCode |
String |
Variable, 20 max |
Wajib |
- |
Kode unik yang mengidentifikasi bank tujuan dalam sebuah transaksi |
4 |
sessionId |
String |
Variable, 10 max |
Wajib |
- |
Nomor referensi unik yang digunakan untuk mengidentifikasi permintaan inquiry dalam sistem |
5 |
amount |
money |
Variable |
Wajib |
- |
Jumlah dana yang terlibat dalam suatu transaksi |
6 |
additionalInfo |
String |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
7 |
additionalInfo.callbackUrl |
String |
Variable, text |
Optional |
- |
URL yang digunakan oleh sistem untuk mengirimkan respons atau notifikasi otomatis setelah suatu transaksi atau proses selesai |
8 |
additionalInfo.remark |
String |
Variable, text |
Optional |
- |
Keterangan tambahan yang disertakan dalam suatu transaksi |
Contoh Request
POST /snap/v1.0/emoney/transfer-bank
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1155348175
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"partnerReferenceNo": "ilFpX51e0CAttU2DW7dDWV7TCWqk1cE1wyJj",
"beneficiaryAccountNumber" : "6750620416",
"beneficiaryBankCode" : "014",
"sessionId": "INQ0000030",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl" : "http://localhost:10007/callback/partner",
"remark": ""
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
3 |
referenceNo |
String |
Variable, 50 max |
Wajib |
- |
Id transaksi yang dibuat oleh provider yang merepresentasikan transaksi yang sedang berlangsung |
4. |
partnerReferenceNo |
String |
Variable, 50 max |
Wajib |
- |
Nomor referensi yang unik yang digunakan oleh mitra untuk mengidentifikasi transaksi |
5 |
beneficiaryAccountNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor rekening penerima yang digunakan untuk mengidentifikasi rekening tujuan |
6 |
beneficiaryAccountName |
String |
Variable, 50 max |
Wajib |
- |
Nama pemilik rekening penerima yang terdaftar pada bank |
7 |
beneficiaryBankName |
String |
Variable, 50 max |
Wajib |
- |
Nama bank tempat rekening penerima terdaftar |
8 |
amount |
money |
Variable |
Wajib |
- |
Jumlah uang yang terlibat dalam suatu transaksi |
9 |
feeAmount |
money |
Variable |
Wajib |
- |
Jumlah biaya yang dikenakan dalam suatu transaksi |
10 |
additionalInfo |
JSON Object |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
11 |
additionalInfo.transactionStatus |
String |
Variable, 32 max |
Wajib |
|
Kode status transaksi:
|
12 |
additionalInfo.transactionStatusDesc.english |
String |
Variable, 32 max |
Wajib |
|
Deskripsi status transaksi dalam bahasa Inggris:
|
13 |
additionalInfo.transactionStatusDesc.indonesia |
String |
Variable, 32 max |
Wajib |
|
Deskripsi status transaksi dalam bahasa Indonesia:
|
14 |
additionalInfo.balance |
money |
Variable |
Wajib |
- |
Jumlah uang yang tersedia dalam suatu akun |
Contoh Response
{
"responseCode": "2004300",
"responseMessage": "Successful",
"referenceNo": "BKO000002V",
"partnerReferenceNo": "yKQC1WFSO9cmFGVa17sj6aqDXVUDqszRZBnC",
"beneficiaryAccountNumber": "6750620416",
"beneficiaryAccountName": "Henda Sujiadi",
"beneficiaryBankName": "BANK BCA",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"transactionStatus": "03",
"transactionStatusDesc": {
"english": "Pending",
"indonesia": "Tertunda"
},
"balance": {
"value": "949000.00",
"currency": "IDR"
}
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2004300 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4004301 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4004302 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4014300 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4014301 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4034301 |
Feature Not Allowed |
Fitur yang diminta tidak diizinkan atau tidak tersedia |
7 |
4034302 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi |
8 |
4044303 |
Bank Not Supported By Switch |
Bank yang digunakan tidak didukung oleh sistem |
9 |
4044311 |
invalid account |
Akun tidak valid atau tidak dapat ditemukan dalam sistem |
10 |
4094300 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
11 |
4094301 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo, trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem |
12 |
5004302 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Inquiry Status
API Name |
Inquiry Status - Transfer ke Bank |
Function |
API yang digunakan untuk melakukan pengecekan status terakhir dari transaksi transfer bank yang dilakukan. |
Service Code |
45 |
Method |
POST |
URL |
/snap/v1.0/emoney/transfer-bank/status |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
---|---|---|---|---|---|---|
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisikan B2B Bearer JWT Token, yang didapatkan dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
Messaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
---|---|---|---|---|---|---|
1 |
originalPartnerReferenceNo |
String |
Variable, 64 max |
Wajib |
- |
Identitas transaksi asli pada sistem konsumen layanan. |
2 |
originalReferenceNo |
String |
Variable, 32 max |
Wajib |
- |
Identitas transaksi asli dari sistem PakaiLink. |
3 |
serviceCode |
String |
Variable, 10 max |
Opsional |
- |
Indikator jenis transaksi (kode layanan dari permintaan transaksi asli). |
Contoh Request
POST /snap/v1.0/emoney/transfer-bank/status
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1155348175
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"originalPartnerReferenceNo": "yKQC1WFSO9cmFGVa17sj6aqDXVUDqszRZBnC",
"originalReferenceNo" : "BKO000002V",
"serviceCode" : "43"
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
---|---|---|---|---|---|---|
1 |
responseCode |
String |
Variable, 7 max |
Wajib |
- |
Merujuk pada daftar kode respons. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Merujuk pada daftar kode respons. |
3 |
originalPartnerReferenceNo |
String |
Variable, 64 max |
Wajib |
|
Identitas transaksi asli pada sistem mitra. |
4 |
originalReferenceNo |
String |
Variable, 32 max |
Wajib |
- |
Identitas transaksi asli pada sistem PakaiLink. |
5 |
originalExternalId |
String |
Variable, 32 max |
Wajib |
- |
ID Eksternal-Asli pada pesan header. |
6 |
serviceCode |
String |
Variable, 2 max |
Wajib |
- |
Indikator jenis transaksi (kode layanan dari permintaan transaksi asli). |
7 |
transactionDate |
String |
Variable, 25 max |
Wajib |
- |
Tanggal transaksi, dengan format YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam GMT+7 (waktu Jakarta). |
8 |
amount |
Money |
Variable |
Wajib |
- |
Berisi nominal yang berhasil dibayarkan, berisi dua sub-bidang:
|
9 |
beneficiaryAccountNumber |
String |
Variable, 32 max |
Wajib |
- |
Nomor rekening tujuan. |
10 |
beneficiaryAccountName |
String |
Variable, 50 max |
Wajib |
- |
Atas nama rekening tujuan. |
11 |
beneficiaryBankCode |
String |
Variable, 8 max |
Wajib |
- |
Kode bank penerima. |
12 |
latestTransactionStatus |
String |
Variable, 2 max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Indonesia:
|
13 |
latestTransactionStatusDesc |
String |
Variable, 32 max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Indonesia:
|
Contoh Response
{
"responseCode": "2004500",
"responseMessage": "Successful",
"originalPartnerReferenceNo": "yKQC1WFSO9cmFGVa17sj6aqDXVUDqszRZBnC",
"originalReferenceNo": "BKO000002V",
"originalExternalId": "332655797",
"serviceCode": "43",
"transactionDate": "2025-04-09T21:34:48+07:00",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"beneficiaryAccountNumber": "6750620416",
"beneficiaryAccountName": "Henda Sujiadi",
"beneficiaryBankName": "BANK BCA",
"latestTransactionStatus": "03",
"latestTransactionStatusDesc": {
"english": "Pending",
"indonesia": "Tertunda"
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
---|---|---|---|
1 |
2004500 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4004501 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4004502 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4014500 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4014501 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4034501 |
Transaction Not Found |
Transaksi tidak ditemukan |
7 |
5004502 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Callback Pending Transfer ke Bank
API Name |
Callback Pending - Transfer ke Bank |
Function |
API yang digunakan untuk menginformasikan status terbaru dari suatu transaksi yang status sebelumnya pending. |
Service Code |
44 |
Method |
POST |
URL |
URL yang ditambahkan saat mengakses endpoint create kode payment emoney sebelumnya. |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
transactionData |
JSON Object |
Variable |
Wajib |
- |
Berisi informasi data callback transaksi emoney. |
Contoh Request
POST /callback/partner
"Content-Type": "application/json",
"X-Timestamp": "2025-03-04T12:33:28+07:00",
"X-Signature": "Au/HnhHlzXvfe3VK0zLYAEkEGiH2Zrc9lctjastNB/Ho/G4Z9N67e8zvH0j4WeK+2fTCsQg0LoWJqAlFtMBDqN7IBtffy4MzJ6uNN5P9TDp758f/xZlPrdT/c9MY7Y1IuirLHSQUxg3pO/ZDW0iKseordnGcxYYbhiApZxzd6Bw3z+uR+PlZA4CbZdORwCWLzcI1DL9VCXmjeH+NZCtf24CskGA+RhiFH/Vr95Vxux2oYSzDyy/xG5GASYujdIZ/dx9zC+lh9okLwhIEhF5bJ07bYu/IqKFPREEWZgiJ0gbyO5Mgh1RZh7EK6NNx7KuZSLZLW0aa3c62fNa6VhQFbA=="
{
"transactionData": {
"paymentFlagStatus": "00",
"paymentFlagReason": {
"english": "Success",
"indonesia": "Sukses"
},
"partnerReferenceNo": "yKQC1WFSO9cmFGVa17sj6aqDXVUDqszRZBnC",
"accountNumber": "6750620416",
"accountName": "Henda Sujiadi",
"paidAmount": {
"value": "10000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://localhost:10007/callback/partner",
"balance": {
"value": "901000.00",
"currency": "IDR"
}
}
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
Contoh Response
{
"responseCode": "2004400",
"responseMessage": "Successful"
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2004400 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
Inquiry Virtual Account
API Name |
Virtual Account Inquiry |
Function |
API ini digunakan oleh merchant untuk melakukan pengecekan informasi nomor rekening virtual account melalui PakaiLink Bisnis. Hasil yang didapatkan adalah Nama pemilik nomor rekening virtual account. Faq :
|
Service Code |
45 |
Method |
POST |
URL |
/snap/v1.0/transfer-bank-va/account-inquiry |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisi B2B Bearer JWT Token, yang telah Anda peroleh dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Tanggal dan waktu transaksi, dalam format. YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam format GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. ID unik untuk setiap mitra. |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
ID referensi pesan unik yang dihasilkan oleh merchant. String numerik. Nomor referensi yang harus unik dalam satu hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat tempat layanan API diakses oleh pengguna akhir (pelanggan) saat ini. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
parnerReferenceNo |
String |
Variable, 225 max |
Wajib |
- |
Nomor unik (hingga 36 digit). |
2 |
beneficiaryAccountNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor Rekening Penerima. |
3 |
amount |
money |
Variable |
Wajib |
- |
Jumlah uang yang terlibat dalam suatu transaksi |
4 |
additionalInfo |
String |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
5 |
additionalInfo.beneficiaryBankCode |
String |
Variable, 20 max |
Wajib |
- |
Kode bank yang digunakan untuk transfer virtual account. |
Contoh Request
POST /snap/v1.0.0/transfer-bank/account-inquiry
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000001
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
X-EXTERNAL-ID: 9244456650
CHANNEL-ID: 21273
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIzY2ZiNDhlOTZkNjZiMjc1M2QxNTZhOWE1Y2RjMGFmNiIsImV4cCI6MTE3MzkxODExMDIsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMSJ9.DNF2zZfEwNnQHO7oOhJKIc3lot_PpFNMxRzaF50SZXt1bb_NZM2ptzdJt4f30b05vBaU9V5JHLkx249aTOv2YQ
{
"partnerReferenceNo": "7TQw1AV0ZmHtUetIKdvObrGUZJbSLmsxA4ay",
"beneficiaryAccountNumber" : "31857418",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"beneficiaryBankCode": "013"
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode respons. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode respons. |
3 |
referenceNo |
String |
Variable, 50 max |
Wajib |
- |
Identifikasi transaksi yang sedang berlangsung |
4. |
partnerReferenceNo |
String |
Variable, 50 max |
Wajib |
- |
Nomor referensi yang unik yang digunakan oleh mitra untuk mengidentifikasi transaksi |
5 |
beneficiaryAccountNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor rekening penerima yang digunakan untuk mengidentifikasi rekening tujuan |
6 |
beneficiaryAccountName |
String |
Variable, 50 max |
Wajib |
- |
Nama pemilik rekening penerima yang terdaftar pada bank |
7 |
beneficiaryBankName |
String |
Variable, 100 max |
Wajib |
- |
Nama bank tempat rekening penerima terdaftar |
8 |
amount |
money |
Variable |
Wajib |
- |
Jumlah uang yang terlibat dalam suatu transaksi |
9 |
feeAmount |
money |
Variable |
Wajib |
- |
Jumlah biaya yang dikenakan dalam suatu transaksi |
10 |
additionalInfo |
JSON Object |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
11 |
additionalInfo.balance |
money |
Variable |
Wajib |
- |
Jumlah uang yang tersedia dalam suatu akun |
Contoh Response
{
"responseCode": "2004500",
"responseMessage": "Successful",
"referenceNo": "INQ0000002",
"partnerReferenceNo": "KJcaa9XaP6erRaDfB6LsImilXOWAvFePZeFb",
"beneficiaryAccountNumber": "31857418",
"beneficiaryAccountName": "Henda Sujiadi",
"beneficiaryBankName": "BANK PERMATA",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "4000.00",
"currency": "IDR"
},
"additionalInfo": {
"balance": {
"value": "1000000.00",
"currency": "IDR"
}
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2004500 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4004501 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4004502 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4014500 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4014501 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4034501 |
Feature Not Allowed |
Fitur yang diminta tidak diizinkan atau tidak tersedia |
7 |
4034502 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi |
8 |
4044503 |
Bank Not Supported By Switch |
Bank yang digunakan tidak didukung oleh sistem |
9 |
4094500 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
10 |
4094501 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo, trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem |
11 |
5004502 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Transfer Virtual Account
API Name |
Virtual Account Transfer |
Function |
Proses pengiriman dana dari satu akun ke rekening melalui virtual account. API ini memungkinkan merchant untuk melakukan transfer ke nomor rekening virtual account melalui PakaiLink Bisnis. Layanan ini berjalan secara real-time. Pastikan saldo mencukupi untuk melakukan transfer. FAQ :
|
Service Code |
46 |
Method |
POST |
URL |
/snap/v1.0/transfer-va/payment |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisi B2B Bearer JWT Token, yang telah Anda peroleh dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Tanggal dan waktu transaksi, dalam format. YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam format GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. ID unik untuk setiap mitra. |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
ID referensi pesan unik yang dihasilkan oleh merchant. String numerik. Nomor referensi yang harus unik dalam satu hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat tempat layanan API diakses oleh pengguna akhir (pelanggan) saat ini. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
partnerServiceId |
String |
Variable, 8 max |
Wajib |
- |
Turunan dari X-PARTNER-ID, mirip dengan kode perusahaan, spasi kiri 8 digit. partnerServiceId + customerNo atau virtualAccountNo |
2 |
customerNo |
String |
Variable, 20 max |
Wajib |
- |
Nomor unik (hingga 20 digit). partnerServiceId + customerNo atau virtualAccountNo |
3 |
inquiryRequestId |
String |
Variable, 64 max |
Wajib |
- |
Kode unik yang merepresentasikan proses inquiry sebelumnya. |
4 |
virtualAccountNo |
String |
Variable, 28 max |
Wajib |
- |
Nomor Rekening VA yang akan dilakukan proses pengecekan. |
5 |
sourceBankCode |
String |
Variable, 28 max |
Wajib |
- |
Kode untuk mengidentifikasi bank yang mengeluarkan kode VA |
6 |
amount |
money |
Variable |
Wajib |
- |
Jumlah dana yang terlibat dalam suatu transaksi |
7 |
additionalInfo |
String |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
8 |
additionalInfo.callbackUrl |
String |
Variable, text |
Optional |
- |
URL yang digunakan oleh sistem untuk mengirimkan respons atau notifikasi otomatis setelah suatu transaksi atau proses selesai |
9 |
additionalInfo.remark |
String |
Variable, text |
Optional |
- |
Keterangan tambahan yang disertakan dalam suatu transaksi |
Contoh Request
POST /snap/v1.0/transfer-va/payment
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1159034104
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"partnerServiceId": " 34737",
"customerNo": "34343444",
"inquiryRequestId": "DNqGRh5wcH1b0E4",
"virtualAccountNo" : "8870800187732330",
"sourceBankCode": "013",
"amount": {
"value": "32000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://127.0.0.1:10007/callback/partner",
"remark": ""
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode respons. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode respons. |
3 |
virtualAccountData |
JSON object |
variable |
wajib |
- |
Berisi data transaksi transfer virtual akun (VA) |
4 |
partnerServiceId |
String |
variable 8 max |
Wajib |
- |
Derivative of X-PARTNER-ID, similar to company code, 8 digit left padding space. partnerServiceId + customerNo or virtualAccountNo |
5 |
customerNo |
String |
variable 20 max |
Wajib |
- |
Unique number (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo |
6 |
inquiryRequestId |
String |
variable 128 max |
Wajib |
- |
Kode unik yang digunakan untuk identifikasi proses inquiry oleh partner |
7 |
virtualAccountNo |
String |
Variable, 28 max |
Wajib |
- |
Nomor Rekening VA yang akan dilakukan proses pengecekan. |
8 |
sourceBankCode |
String |
Variable, 10 max |
Wajib |
- |
Kode untuk mengidentifikasi bank yang mengeluarkan kode VA |
9 |
amount |
money |
Variable |
Wajib |
- |
Jumlah uang yang terlibat dalam suatu transaksi |
10 |
feeAmount |
money |
Variable |
Wajib |
- |
Jumlah biaya yang dikenakan dalam suatu transaksi |
11 |
additionalInfo |
JSON Object |
Variable |
Wajib |
- |
informasi tambahan yang disertakan dalam suatu transaksi |
12 |
additionalInfo.transactionStatus |
String |
Variable, 32 Max |
Wajib |
- |
Kode status transaksi: |
13 |
additionalInfo.transactionStatusDesc.english |
String |
Variable, 32 Max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Inggris: |
14 |
additionalInfo.transactionStatusDesc.indonesia |
String |
Variable, 32 Max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Indonesia: |
15 |
additionalInfo.referenceNo |
string |
variable 10 max |
wajib |
|
ID transaksi yang dibuat oleh provider yang merepresentasikan transaksi yang sedang berlangsung |
16 |
additionalInfo.balance |
money |
Variable |
Wajib |
- |
Jumlah uang yang tersedia dalam suatu akun |
17 |
additionalInfo.callbackUrl |
String |
Variable, text |
Optional |
- |
URL yang digunakan oleh sistem untuk mengirimkan response atau notifikasi otomatis setelah suatu transaksi atau proses selesai |
18 |
additionalInfo.remark |
String |
Variable, text |
Optional |
- |
Keterangan tambahan yang disertakan dalam suatu transaksi |
Contoh Response
{
"responseCode": "2004600",
"responseMessage": "Successful",
"virtualAccountData": {
"partnerServiceId": " 34737",
"customerNo": "34343444",
"inquiryRequestId": "DNqGRh5wcH1b0E4",
"virtualAccountNo": "8870800187732330",
"sourceBankCode": "013",
"amount": {
"value": "32000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"transactionStatus": "03",
"transactionStatusDesc": {
"english": "Pending",
"indonesia": "Tertunda"
},
"referenceNo": "VAO000002U",
"callbackUrl": "http://127.0.0.1:10007/callback/partner",
"remark": "",
"balance": {
"value": "914000.00",
"currency": "IDR"
}
}
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2004600 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4004601 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4004602 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4014600 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4014601 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4034601 |
Feature Not Allowed |
Fitur yang diminta tidak diizinkan atau tidak tersedia |
7 |
4034602 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi |
8 |
4034603 |
Invalid Transaction |
Transaksi yang dilakukan tidak sah atau tidak valid |
9 |
4044603 |
Bank Not Supported By Switch |
Bank yang digunakan tidak didukung oleh sistem |
10 |
4044611 |
invalid account |
Akun tidak valid atau inquiryRequestId tidak dapat ditemukan dalam sistem |
11 |
4094600 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
12 |
5004602 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Inquiry Status
API Name |
Inquiry Status - Virtual Account |
Function |
API yang digunakan untuk melakukan pengecekan status terakhir dari transaksi transfer bank yang dilakukan. |
Service Code |
49 |
Method |
POST |
URL |
/snap/v1.0/transfer-va/inquiry-status |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
---|---|---|---|---|---|---|
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisikan B2B Bearer JWT Token, yang didapatkan dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
Messaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
---|---|---|---|---|---|---|
1 |
partnerServiceId |
String |
Variable, 8 max |
Wajib |
- |
Turunan dari X-PARTNER-ID, mirip dengan kode perusahaan, spasi kiri 8 digit. partnerServiceId + customerNo atau virtualAccountNo |
2 |
inquiryRequestId |
String |
Variable, 25 max |
Wajib |
- |
Kode unik yang merepresentasikan proses inquiry sebelumnya. |
3 |
virtualAccountNo |
String |
Variable, 20 max |
Wajib |
- |
Nomor rekening VA yang akan dilakukan pengecekan. |
4 |
originalReferenceNo |
String |
Variable, 10 max |
Wajib |
- |
ID transaksi yang dibuat oleh PakaiLink, merepresentasikan transaksi VA sebelumnya. |
5 |
serviceCode |
String |
Variable |
Wajib |
- |
Indikator jenis transaksi transfer VA (46). |
Contoh Request
POST /snap/v1.0/transfer-va/inquiry-status
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1159034104
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"partnerServiceId": " 34737",
"inquiryRequestId" : "DNqGRh5wcH1b0E4",
"virtualAccountNo" : "8870800187732330",
"orginalReferenceNo": "VAO000002U",
"serviceCode" : "46"
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
---|---|---|---|---|---|---|
1 |
responseCode |
String |
Variable, 7 max |
Wajib |
- |
Merujuk pada daftar kode respons. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Merujuk pada daftar kode respons. |
3 |
virtualAccountData |
JSON Object |
Variable |
Wajib |
- |
Berisi data transaksi virtual account. |
4 |
partnerServiceId |
String |
Tetap, 7 max |
Wajib |
- |
Turunan dari X-PARTNER-ID, mirip dengan kode perusahaan, spasi kiri 8 digit. partnerServiceId + customerNo atau virtualAccountNo |
5 |
inquiryRequestId |
String |
Variable, 32 max |
Wajib |
- |
Kode unik yang merepresentasikan proses inquiry sebelumnya. |
6 |
virtualAccountNo |
String |
Variable, 2 max |
Wajib |
- |
Nomor rekening VA yang akan dilakukan pengecekan. |
7 |
sourceBankCode |
String |
Variable, 25 max |
Wajib |
- |
Kode untuk mengidentifikasi bank yang mengeluarkan VA. |
8 |
serviceCode |
Money |
Variable |
Wajib |
- |
Indikator jenis transaksi transfer VA (46). |
9 |
transactionDate |
String |
Variable |
Wajib |
- |
Tanggal transaksi, dengan format YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam GMT+7 (waktu Jakarta). |
10 |
amount |
Money |
Variable |
Wajib |
- |
Berisi nominal yang berhasil dibayarkan, berisi dua sub-bidang:
|
11 |
latestTransactionStatus |
String |
Variable, 2 max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Indonesia:
|
12 |
latestTransactionStatusDesc |
String |
Variable, 32 max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Indonesia:
|
Contoh Response
{
"responseCode": "2004900",
"responseMessage": "Successful",
"virtualAccountData": {
"partnerServiceId": " 34737",
"inquiryRequestId": "zkFNhdRuQ8ZAMMq",
"virtualAccountNo": "8870800187732330",
"sourceBankCode": "013",
"serviceCode": "46",
"transactionDate": "2025-04-23T14:41:39+07:00",
"amount": {
"value": "32000.00",
"currency": "IDR"
},
"latestTransactionStatus": "00",
"latestTransactionStatusDesc": {
"english": "Success",
"indonesia": "Sukses"
}
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
---|---|---|---|
1 |
2004900 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4004901 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4004902 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4014900 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4014901 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4034901 |
Transaction Not Found |
Transaksi tidak ditemukan |
7 |
5004902 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Callback Pending Virtual Account
API Name |
Callback Pending - Virtual Account |
Function |
API yang digunakan untuk menginformasikan status terbaru dari suatu transaksi yang status sebelumnya pending. |
Service Code |
48 |
Method |
POST |
URL |
URL yang ditambahkan saat mengakses endpoint create kode payment emoney sebelumnya. |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
transactionData |
JSON Object |
Variable |
Wajib |
- |
Berisi informasi data callback transaksi emoney. |
Contoh Request
POST /callback/partner
"Content-Type": "application/json",
"X-Timestamp": "2025-03-04T12:33:28+07:00",
"X-Signature": "Au/HnhHlzXvfe3VK0zLYAEkEGiH2Zrc9lctjastNB/Ho/G4Z9N67e8zvH0j4WeK+2fTCsQg0LoWJqAlFtMBDqN7IBtffy4MzJ6uNN5P9TDp758f/xZlPrdT/c9MY7Y1IuirLHSQUxg3pO/ZDW0iKseordnGcxYYbhiApZxzd6Bw3z+uR+PlZA4CbZdORwCWLzcI1DL9VCXmjeH+NZCtf24CskGA+RhiFH/Vr95Vxux2oYSzDyy/xG5GASYujdIZ/dx9zC+lh9okLwhIEhF5bJ07bYu/IqKFPREEWZgiJ0gbyO5Mgh1RZh7EK6NNx7KuZSLZLW0aa3c62fNa6VhQFbA=="
{
"virtualAccountData": {
"paymentFlagStatus": "00",
"paymentFlagReason": {
"english": "Success",
"indonesia": "Sukses"
},
"partnerServiceId": " 34737",
"inquiryRequestId": "voSFPTlSuxLnfoZ",
"virtualAccountNo": "8870800187732330",
"virtualAccountName": "Henda Sujiadi",
"paidAmount": {
"value": "32000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://127.0.0.1:10007/callback/partner",
"balance": {
"value": "962000.00",
"currency": "IDR"
}
}
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
Contoh Response
{
"responseCode": "2004800",
"responseMessage": "Successful"
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2004800 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
Inquiry Customer Top-up
API Name |
Account Inquiry - Customer Topup |
Function |
API ini digunakan oleh merchant untuk melakukan pengecekan informasi nomor rekening virtual account melalui PakaiLink Bisnis. Hasil yang didapatkan adalah Nama pemilik nomor rekening virtual account. FAQ :
Jumlah maksimum mengacu pada regulasi yang berlaku untuk setiap e-money atau e-wallet. |
Service Code |
37 |
Method |
POST |
URL |
/snap/v1.0/emoney/account-inquiry |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisi B2B Bearer JWT Token, yang telah Anda peroleh dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Tanggal dan waktu transaksi, dalam format. YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam format GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. ID unik untuk setiap mitra. |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
ID referensi pesan unik yang dihasilkan oleh merchant. String numerik. Nomor referensi yang harus unik dalam satu hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat tempat layanan API diakses oleh pengguna akhir (pelanggan) saat ini. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
parnerReferenceNo |
String |
Variable, 225 max |
Wajib |
- |
Nomor unik (hingga 36 digit). |
2. |
customerNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor identifikasi unik yang digunakan untuk mengenali akun pelanggan. |
3 |
amount |
money |
Variable |
Wajib |
- |
Jumlah uang yang terlibat dalam suatu transaksi |
4 |
additionalInfo |
String |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
5 |
additionalInfo.productCode |
String |
Variable, 20 max |
Wajib |
- |
Kode unik yang digunakan untuk mengidentifikasi suatu produk atau layanan dalam sistem. |
Contoh Request
POST /snap/v1.0/emoney/account-inquiry
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1160854306
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"partnerReferenceNo": "Glv9yFZIb5iwcc2PUviXG9M5r4UnjdffaCjI",
"customerNumber" : "08113338390",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"productCode": "OVO"
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
3 |
sessionId |
String |
Variable, 50 max |
Wajib |
- |
Identifikasi transaksi yang sedang berlangsung |
4 |
partnerReferenceNo |
String |
Variable, 50 max |
Wajib |
- |
Nomor referensi yang unik yang digunakan oleh mitra untuk mengidentifikasi transaksi |
5 |
customerNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor identifikasi unik yang digunakan untuk mengenali akun pelanggan. |
6 |
customerName |
String |
Variable, 50 max |
Wajib |
- |
Nama pelanggan yang terdaftar dalam sistem. |
7 |
amount |
money |
Variable |
Wajib |
- |
Jumlah uang yang terlibat dalam suatu transaksi |
8 |
feeAmount |
money |
Variable |
Wajib |
- |
Jumlah biaya yang dikenakan dalam suatu transaksi |
9 |
additionalInfo |
JSON Object |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
10 |
additionalInfo.balance |
money |
Variable |
Wajib |
- |
Jumlah uang yang tersedia dalam suatu akun |
Contoh Response
{
"responseCode": "2003700",
"responseMessage": "Successful",
"sessionId": "INQ0000032",
"partnerReferenceNo": "Glv9yFZIb5iwcc2PUviXG9M5r4UnjdffaCjI",
"customerNumber": "08113338390",
"customerName": "Henda Sujiadi",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"balance": {
"value": "914000.00",
"currency": "IDR"
}
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2003700 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4003701 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4003702 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4013700 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4013701 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4033701 |
Feature Not Allowed |
Fitur yang diminta tidak diizinkan atau tidak tersedia |
7 |
4033702 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi |
8 |
4043703 |
Bank Not Supported By Switch |
Bank yang digunakan tidak didukung oleh sistem |
9 |
4093700 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
10 |
4093701 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo, trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem |
11 |
5003702 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Payment Customer Top-up
API Name |
Payment - Customer Topup |
Function |
Proses pengisian saldo akun pelanggan agar bisa digunakan untuk transaksi melalui layanan PakaiLink Bisnis. Pastikan saldo mencukupi untuk melakukan transfer. FAQ:
Jumlah maksimum mengacu pada regulasi yang berlaku untuk setiap e-money atau e-wallet. |
Service Code |
38 |
Method |
POST |
URL |
/snap/v1.0/emoney/topup |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisi B2B Bearer JWT Token, yang telah Anda peroleh dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Tanggal dan waktu transaksi, dalam format. YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam format GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. ID unik untuk setiap mitra. |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
ID referensi pesan unik yang dihasilkan oleh merchant. String numerik. Nomor referensi yang harus unik dalam satu hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat tempat layanan API diakses oleh pengguna akhir (pelanggan) saat ini. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
parnerReferenceNo |
String |
Variable, 225 max |
Wajib |
- |
Nomor unik (hingga 36 digit). |
2. |
customerNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor identifikasi unik yang digunakan untuk mengenali akun pelanggan. |
3 |
productCode |
String |
Variable, 20 max |
Wajib |
- |
Kode unik yang digunakan untuk mengidentifikasi suatu produk atau layanan dalam sistem. |
4 |
sessionId |
String |
Variable, 50 max |
Wajib |
- |
Nomor referensi unik yang digunakan untuk mengidentifikasi permintaan inquiry dalam sistem |
5 |
amount |
money |
Variable |
Wajib |
- |
Jumlah dana yang terlibat dalam suatu transaksi |
6 |
additionalInfo |
String |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
7 |
additionalInfo.callbackUrl |
String |
Variable, text |
Optional |
- |
URL yang digunakan oleh sistem untuk mengirimkan respons atau notifikasi otomatis setelah suatu transaksi atau proses selesai |
Contoh Request
POST snap/v1.0/emoney/topup
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1160854306
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"partnerReferenceNo": "Glv9yFZIb5iwcc2PUviXG9M5r4UnjdffaCjI",
"customerNumber" : "08113338390",
"productCode" : "OVO",
"sessionId" : "INQ0000032",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl" : "http://localhost:10007/callback/partner"
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode respons. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode respons. |
3 |
referenceNo |
String |
Variable, 50 max |
Wajib |
- |
Identifikasi transaksi yang sedang berlangsung |
4 |
partnerReferenceNo |
String |
Variable, 50 max |
Wajib |
- |
Nomor referensi yang unik yang digunakan oleh mitra untuk mengidentifikasi transaksi |
5 |
customerNumber |
String |
Variable, 25 max |
Wajib |
- |
Nomor identifikasi unik yang digunakan untuk mengenali akun pelanggan. |
6 |
customerName |
String |
Variable, 50 max |
Wajib |
- |
Nama pelanggan yang terdaftar dalam sistem. |
7 |
amount |
money |
Variable |
Wajib |
- |
Jumlah uang yang terlibat dalam suatu transaksi |
8 |
feeAmount |
money |
Variable |
Wajib |
- |
Jumlah biaya yang dikenakan dalam suatu transaksi |
9 |
additionalInfo |
JSON Object |
Variable |
Wajib |
- |
Informasi tambahan yang disertakan dalam suatu transaksi |
10 |
additionalInfo.transactionStatus |
String |
Variable, 32 Max |
Wajib |
- |
Kode status transaksi: |
11 |
additionalInfo.transactionStatusDesc.english |
String |
Variable, 32 Max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Inggris: |
12 |
additionalInfo.transactionStatusDesc.indonesia |
String |
Variable, 32 Max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Indonesia: |
13 |
additionalInfo.balance |
money |
Variable |
Wajib |
- |
Jumlah uang yang tersedia dalam suatu akun |
Contoh Response
{
"responseCode": "2003800",
"responseMessage": "Successful",
"referenceNo": "EMO000002S",
"partnerReferenceNo": "9K8A0JLBNZhT624HkruH2TyVhpZgZl3J1ug9",
"customerNumber": "08113338390",
"customerName": "Henda Sujiadi",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"transactionStatus": "03",
"transactionStatusDesc": {
"english": "Pending",
"indonesia": "Tertunda"
},
"balance": {
"value": "901000.00",
"currency": "IDR"
}
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2003800 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4003801 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4003802 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4013800 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakse tindakan tertentu |
5 |
4013801 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4033801 |
Feature Not Allowed |
Fitur yang diminta tidak diizinkan atau tidak tersedia |
7 |
4033802 |
Exceeds Transaction Amount Limit |
Jumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi |
8 |
4033803 |
Invalid Transaction |
Transaksi yang dilakukan tidak sah atau tidak valid |
9 |
4043803 |
Bank Not Supported By Switch |
Bank yang digunakan tidak didukung oleh sistem |
10 |
4043811 |
invalid account |
Akun tidak valid atau inquiryReferenceNo tidak dapat ditemukan dalam sistem |
11 |
4093800 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
12 |
5003802 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Inquiry Status
API Name |
Inquiry Status - Customer Topup |
Function |
API yang digunakan untuk melakukan pengecekan status terakhir dari transaksi transfer bank yang dilakukan. |
Service Code |
40 |
Method |
POST |
URL |
/snap/v1.0/emoney/topup/status |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
---|---|---|---|---|---|---|
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisikan B2B Bearer JWT Token, yang didapatkan dari Access Token B2B |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
4 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra |
5 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
Messaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama. |
6 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini. |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
---|---|---|---|---|---|---|
1 |
originalPartnerReferenceNo |
String |
Variable, 64 max |
Wajib |
- |
Identitas transaksi asli pada sistem konsumen layanan. |
2 |
originalReferenceNo |
String |
Variable, 32 max |
Wajib |
- |
Identitas transaksi asli dari sistem PakaiLink. |
3 |
serviceCode |
String |
Variable, 10 max |
Opsional |
- |
Indikator jenis transaksi customer topup (38). |
Contoh Request
POST snap/v1.0/emoney/topup/status
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1160854306
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"originalPartnerReferenceNo": "Glv9yFZIb5iwcc2PUviXG9M5r4UnjdffaCjI",
"originalReferenceNo" : "EMO000002S",
"serviceCode" : "38"
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
---|---|---|---|---|---|---|
1 |
responseCode |
String |
Variable, 7 max |
Wajib |
- |
Merujuk pada daftar kode respons. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Merujuk pada daftar kode respons. |
3 |
originalPartnerReferenceNo |
String |
Tetap, 7 max |
Wajib |
- |
Identitas transaksi asli pada sistem mitra. |
4 |
originalReferenceNo |
String |
Tetap, 7 max |
Wajib |
- |
Identitas transaksi asli pada sistem PakaiLink. |
5 |
originalExternalId |
String |
Variable, 32 max |
Wajib |
- |
ID Eksternal-Asli pada pesan header. |
6 |
serviceCode |
String |
Variable, 2 max |
Wajib |
- |
Indikator jenis transaksi (kode layanan dari permintaan transaksi asli). |
7 |
transactionDate |
String |
Variable, 25 max |
Wajib |
- |
Tanggal transaksi, dengan format YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam GMT+7 (waktu Jakarta). |
8 |
amount |
Money |
Variable |
Wajib |
- |
Berisi nominal yang berhasil dibayarkan, berisi dua sub-bidang:
|
9 |
customerNumber |
String |
Variable, 32 max |
Wajib |
- |
Nomor tujuan customer yang terdaftar di emoney. |
10 |
customerName |
String |
Variable, 50 max |
Wajib |
- |
Nama customer. |
11 |
productType |
String |
Variable, 8 max |
Wajib |
- |
Jenis produk emoney dari transaksi yang dilakukan. |
12 |
latestTransactionStatus |
String |
Variable, 2 max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Indonesia:
|
13 |
transactionStatusDesc |
String |
Variable, 32 max |
Wajib |
- |
Deskripsi status transaksi dalam bahasa Indonesia:
|
Contoh Response
{
"responseCode": "2004000",
"responseMessage": "Successful",
"originalPartnerReferenceNo": "Glv9yFZIb5iwcc2PUviXG9M5r4UnjdffaCjI",
"originalReferenceNo": "EMO000002S",
"originalExternalId": "5393477729",
"serviceCode": "38",
"transactionDate": "2025-04-23T14:31:18+07:00",
"amount": {
"value": "10000.00",
"currency": "IDR"
},
"customerNumber": "08113338390",
"customerName": "Henda Sujiadi",
"productType": "TOPUP OVO E-MONEY",
"latestTransactionStatus": "00",
"latestTransactionStatusDesc": {
"english": "Success",
"indonesia": "Sukses"
}
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
---|---|---|---|
1 |
2004000 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4004001 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4004002 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4014000 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu |
5 |
4014001 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4034001 |
Transaction Not Found |
Transaksi tidak ditemukan |
7 |
5004002 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
Callback Pending Customer Topup
API Name |
Callback Pending - Customer Topup |
Function |
API yang digunakan untuk menginformasikan status terbaru dari suatu transaksi yang status sebelumnya pending. |
Service Code |
39 |
Method |
POST |
URL |
URL yang ditambahkan saat mengakses endpoint create kode payment emoney sebelumnya. |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
3 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Waktu transaksi, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time) |
7 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
transactionData |
JSON Object |
Variable |
Wajib |
- |
Berisi informasi data callback transaksi emoney. |
Contoh Request
POST /callback/partner
"Content-Type": "application/json",
"X-Timestamp": "2025-03-04T12:33:28+07:00",
"X-Signature": "Au/HnhHlzXvfe3VK0zLYAEkEGiH2Zrc9lctjastNB/Ho/G4Z9N67e8zvH0j4WeK+2fTCsQg0LoWJqAlFtMBDqN7IBtffy4MzJ6uNN5P9TDp758f/xZlPrdT/c9MY7Y1IuirLHSQUxg3pO/ZDW0iKseordnGcxYYbhiApZxzd6Bw3z+uR+PlZA4CbZdORwCWLzcI1DL9VCXmjeH+NZCtf24CskGA+RhiFH/Vr95Vxux2oYSzDyy/xG5GASYujdIZ/dx9zC+lh9okLwhIEhF5bJ07bYu/IqKFPREEWZgiJ0gbyO5Mgh1RZh7EK6NNx7KuZSLZLW0aa3c62fNa6VhQFbA=="
{
"transactionData": {
"paymentFlagStatus": "00",
"paymentFlagReason": {
"english": "Success",
"indonesia": "Sukses"
},
"partnerServiceId": "oROEvMEmIzF37xFjDRUaSS11QXncYAjlL9yg",
"accountNumber": "08113338390",
"accountName": "Henda Sujiadi",
"paidAmount": {
"value": "10000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "3000.00",
"currency": "IDR"
},
"additionalInfo": {
"callbackUrl": "http://localhost:10007/callback/partner",
"balance": {
"value": "888000.00",
"currency": "IDR"
}
}
}
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode response. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode response. |
Contoh Response
{
"responseCode": "2003900",
"responseMessage": "Successful"
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2003900 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
Balance Inquiry
API Name |
Balance Inquiry |
Function |
API ini digunakan untuk menanyakan saldo PakaiLink melalui merchant |
Service Code |
11 |
Method |
POST |
URL |
/snap/v1.0/balance-inquiry |
Content Type |
application/json |
Related Service |
Request
Header
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
Content-Type |
String |
Variable, 127 max |
Wajib |
- |
Tipe konten, nilai selalu application/json |
2 |
Authorization |
String |
Variable |
Wajib |
- |
Berisi B2B Bearer JWT Token, yang telah Anda peroleh dari Access Token B2B |
3 |
Authorization - Customer |
String |
Variable, 64 max |
Optional |
Jika Anda ingin cek saldo melalui merchant |
Berisi customer token yang didapat dari Access Token B2B2C |
4 |
X-TIMESTAMP |
String |
Fixed, 25 max |
Wajib |
- |
Tanggal dan waktu transaksi, dalam format. YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam format GMT+7 (Jakarta time) |
5 |
X-PARTNER-ID |
String |
Variable, 36 max |
Wajib |
- |
ID untuk mitra yang dihasilkan oleh PakaiLink. ID unik untuk setiap mitra. |
6 |
X-EXTERNAL-ID |
String |
Variable, 36 max |
Wajib |
- |
ID referensi pesan unik yang dihasilkan oleh merchant. String numerik. Nomor referensi yang harus unik dalam satu hari yang sama. |
7 |
CHANNEL-ID |
String |
Variable, 5 max |
Wajib |
- |
Identifikasi perangkat tempat layanan API diakses oleh pengguna akhir (pelanggan) saat ini. Daftar Channel ID dapat dilihat di sini. |
8 |
X-SIGNATURE |
String |
Variable |
Wajib |
- |
Signature harus dihasilkan dengan metode Symmetric Signature |
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
parnerReferenceNo |
String |
Variable, 64 max |
Wajib |
- |
Pengidentifikasi unik di sistem mitra untuk setiap transaksi. |
2. |
accountNo |
String |
Variable, 16 max |
Optional |
Harus diisi jika Authorization-Customer Null. |
Pengidentifikasi unik untuk masing-masing merchant. |
3 |
balanceType |
Array of String |
Variable |
Wajib |
- |
Selalu memiliki nilai balance |
Contoh Request
POST /snap/v1.0/balance-inquiry
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJQQUtBSUxJTksiLCJqdGkiOiIyNDc0NzdlNjk0ZGM3N2FhZDU5YzA4MjA1NzdmZmViNyIsImV4cCI6MTE3NDAyOTc2NzgsImFzIjoicGFydG5lciIsImlkIjoiUFRSMDAwMDAwMyJ9.XmUxHExWILJCHJG74Af8TPJljX2aOmUz4UwJXumxkqxW9uDsIrSX_M_j0uRzPOmaBkk2_rQiHIo_OX_qxv45Mg
Content-Type: application/json
X-TIMESTAMP: 2025-01-30T12:38:12+07:00
X-PARTNER-ID: PTR0000003
X-EXTERNAL-ID: 1187412354
X-SIGNATURE: AaE7rxaiIFPQYryj+JxwOi826dQG4e8RbzagEBaAywS4ETa490Cy/3b1/Ljqput67EF+OgE0V1GDw2t/lxqEJw==
CHANNEL-ID: 95221
{
"partnerReferenceNo": "6YUwldTHgKr362EkL1oWMMYjrMuUHqyNMTQT",
"accountNo": "2536265359300003",
"balanceTypes": ["Balance"]
}
Response
Body
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
responseCode |
String |
Fixed, 7 max |
Wajib |
- |
Lihat daftar kode respons. |
2 |
responseMessage |
String |
Variable, 150 max |
Wajib |
- |
Lihat daftar kode respons. |
3 |
referenceNo |
String |
Variable, 64 max |
Wajib |
- |
Identifikasi transaksi yang sedang berlangsung |
4. |
partnerReferenceNo |
String |
Variable, 64 max |
Wajib |
- |
Nomor referensi yang unik yang digunakan oleh mitra untuk mengidentifikasi transaksi |
5 |
accountNo |
String |
Variable, 32 max |
Wajib |
- |
Nomor akun yang teregister |
6 |
name |
String |
Variable, 140 max |
Wajib |
- |
Nama akun mitra |
8 |
accountInfo |
Array of Object |
Variable |
Wajib |
- |
Daftar. contoh: BALANCE, CASH, QRIS, POINTS dll |
9 |
accountInfo.balanceType |
String |
Variable, 70 max |
Wajib |
- |
Untuk menentukan jenis saldo mana yang ingin dikembalikan. Akan mengembalikan semua jenis saldo yang tersedia jika parameter ini kosong |
10 |
accountInfo.amount |
Money |
Variable |
Wajib |
- |
Daftar, jumlah yang aktif. Berisi dua sub-field. Mata uang: Kode mata uang berdasarkan ISO |
11 |
accountInfo.status |
String |
Variable, 4 max |
Wajib |
- |
Status akun:
|
Contoh Response
{
"responseCode": "2001100",
"responseMessage": "Successful",
"referenceNo": "BLC0000003",
"partnerReferenceNo": "6YUwldTHgKr362EkL1oWMMYjrMuUHqyNMTQT",
"accountNo": "2536265359300003",
"name": "Celline Septiana",
"accountInfo": [
{
"balanceType": "Balance",
"activeBalance": {
"value": "888000.00",
"currency": "IDR"
},
"freezeBalance": {
"value": "0.00",
"currency": "IDR"
},
"holdBalance": {
"value": "180000.00",
"currency": "IDR"
},
"status": "0001"
}
]
}
Kode dan Pesan Response
No |
Response Kode |
Response Pesan |
Keterangan |
1 |
2001100 |
Successful |
Request telah berhasil diproses tanpa ada masalah |
2 |
4001101 |
Invalid Field Format |
Panjang informasi tidak boleh melebihi 150 karakter |
3 |
4001102 |
Invalid Wajib Field |
Kolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan |
4 |
4011100 |
Unauthorized. [reason] |
Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakse tindakan tertentu |
5 |
4011101 |
Invalid Token (B2B) |
Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa |
6 |
4091100 |
Conflict |
X-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama |
7 |
4091101 |
Duplicate partnerReferenceNo |
Nomor referensi mitra (partnerReferenceNo, trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem |
8 |
5001102 |
Backend system failure |
Kesalahan yang terjadi di server saat mencoba memproses request |
APENDIKS
Data Model
Money
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
value |
String |
Variable, 19 max |
Wajib |
- |
Menunjukkan besaran nominal yang digunakan dalam transaksi atau proses tertentu dalam sistem. |
2 |
currency |
String |
Variable, 3 max |
Wajib |
- |
Jenis mata uang yang digunakan dalam transaksi, biasanya direpresentasikan dalam format kode mata uang internasional. |
virtualAccountData
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
paymentFlagReason |
MultilanguageText |
Variable |
Optional |
- |
Alasan Status Pembayaran multi bahasa |
2 |
partnerServiceId |
String |
Fixed, 8 max |
Wajib |
- |
Kode biller/merchant dari virtual account. Left Padding dengan spasi |
3 |
customerNo |
String |
Variable, 20 max |
Wajib |
- |
Nomor unik (hingga 20 digit). Menggabungkan partnerServiceId dan customerNo atau virtualAccountNo |
4 |
virtualAccountNo |
String |
Variable, 28 max |
Wajib |
- |
Informasi nomor virtual account yang menggabungkan partnerServiceId dan customerNo |
5 |
virtualAccountName |
String |
Variable, 255 max |
Wajib |
- |
Informasi nama pelanggan |
6 |
paymentFlagStatus |
String |
Fixed, 2 max |
Wajib |
- |
Status untuk pembayaran va. Nilai-nilai tersebut meliputi:
|
7 |
trxId |
String |
Variable, 64 max |
Wajib |
- |
Pengidentifikasi transaksi unik pada sistem mitra yang ditetapkan untuk setiap transaksi. |
8 |
inquiryRequestId |
String |
Variable, 64 max |
Wajib |
- |
Pengidentifikasi request unik untuk inquiry. |
9 |
paidAmount |
Money |
Variable |
Optional |
- |
Berisi nominal yang berhasil dibayarkan, berisi dua sub-bidang:
|
10 |
feeAmount |
Money |
Variable |
Optional |
- |
Biaya yang dikenakan pada transaksi, berisi dua sub-bidang:
|
11 |
creditbalance |
Money |
Variable |
Wajib |
- |
Nominal yang masuk ke saldo mitra, Berisi dua sub-bidang:
|
12 |
expiredDate |
String |
Fixed, 25 max |
Optional |
- |
Tanggal kedaluwarsa untuk virtual account, dalam format YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam GMT+7 (waktu Jakarta). |
13 |
additionalInfo |
JSON Object |
Variable |
Optional |
- |
Informasi tambahan. |
14 |
additionalInfo.callbackUrl |
String |
Variable, 8 max |
Optional |
- |
URL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh pelanggan. |
15 |
balance |
Money |
Variable |
Wajib |
- |
Saldo mitra saat ini, berisi dua sub-bidang:
|
MultilanguageText
No |
Name |
Type |
Length |
Required |
Condition |
Remarks |
1 |
english |
String |
Variable, 200 max |
Wajib |
- |
Alasan Status Pembayaran dalam Bahasa Inggris. |
2 |
indonesia |
String |
Variable, 200 max |
Wajib |
- |
Alasan Status Pembayaran dalam Bahasa Indonesia. |