Featured

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:

  1. 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.
  2. 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

  1. Gunakan perintah berikut untuk menghasilkan private key RSA:

    openssl genrsa -out rsa_private_key.pem 2048

  2. Setelah private key dibuat, ekstrak public key dengan perintah ini:

    openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout

  3. 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

  1. 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

     

  2. 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

     

  3. 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==

     

  4. Letakkan string signature hasil encode ke dalam header HTTP X-SIGNATURE, seperti contoh berikut:
    Format:

    X-SIGNATURE: <Base64_Encoded_Signature>

    Contoh:

    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

  1. 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_qxv45Mg

    4

    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
    ca0b544732c8de18

    5

    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

  2. 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"}}

  3. 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

  4. 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

  5. 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==

  6. 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

  1. Ambil signature dari header HTTP "X-SIGNATURE" yang dikirim oleh pengirim API untuk melakukan verifikasi keasliannya.
    X-Signature : gRDHLuQpscNyNV5JShXmaOkJHIJp8JrpYtLz4PzBAvuQZ0Yug5Ho0ze8pBlhP7r8tqepWAd68qyVc8aGLIkGhOofLKmWK38TJ2VVTkZC30W5SIxlVMCXHdEMdtvDtqtpOuyGK0owNlM3+de8ljzwisQ6aPX1SYrvA9QtNmGy1O+A3SP12r2GWhqcxhaL1T6g2X420L3alelJFTiBgeatM+1o/Fn0MLt9DxQa3c4ezxJpJAxVsJ3HdTP7PQcSajEoLTm3BIRajIhUP3dxgQKEXpDPXGwLFgEVJwW4EGJe39XuVJyiMxhUpB8kxinx76CNstDBw1Cawqm1iqAAHZH8Hg==

  2. 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

  3. Verifikasi keaslian signature menggunakan enkripsi SHA-256 dengan RSA-2048. Bandingkan string tersebut dengan public key yang diberikan oleh pengirim API.

  4. 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:

  1. 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:

  1. 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).
  2. 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:

  1. Generate QR MPM 
    API ini berfungsi untuk membuat QRIS oleh Partner melalui PakaiLink sebagai pengakuisisi.
  2. Inquiry Transaction Status
    API ini digunakan untuk melakukan pengecekan status terbaru dari QR yang telah dibuat oleh partner.
  3. 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:

  1. Create Payment Retail
    API ini berfungsi untuk membuat kode pembayaran yang dapat dilakukan melalui Modern Retail seperti Indomaret dan Alfamart.
  2. 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:

  1. Create Payment Emoney
    API ini berfungsi untuk membuat tagihan yang pembayaran dapat dilakukan menggunakan E-money.
  2. 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:

  1. Inquiry Transfer ke Bank
    API ini memberikan kemudahan bagi merchant untuk mengecek informasi akun pelanggan secara cepat dan efisien melalui layanan PakaiLink.
  2. Transfer ke Bank
    API ini memungkinkan merchant untuk mengajukan permintaan transfer dana ke rekening bank melalui layanan PakaiLink.
  3. Inquiry Status
    API yang digunakan untuk melakukan pengecekan status terakhir dari transaksi transfer bank yang dilakukan.
  4. 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:

  1. Inquiry Virtual Account
    API ini memberikan kemudahan bagi merchant untuk melihat informasi akun pelanggan secara cepat dan efisien melalui layanan PakaiLink.
  2. Transfer Virtual Account
    Layanan ini memungkinkan merchant melakukan pembayaran atau transfer ke nomor rekening virtual account melalui layanan PakaiLink.
  3. Inquiry Status
    API yang digunakan untuk melakukan pengecekan status terakhir dari transaksi transfer bank yang dilakukan.
  4. 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:

  1. Inquiry Customer Top-up
    Layanan ini digunakan untuk memeriksa keabsahan informasi akun e-money melalui layanan PakaiLink.
  2. Payment Customer Top-up
    Proses pengisian saldo akun pelanggan agar bisa digunakan untuk transaksi.
  3. Inquiry Status
    API yang digunakan untuk melakukan pengecekan status terakhir dari transaksi transfer bank yang dilakukan.
  4. 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:

  1. Balance Inquiry
    Layanan ini digunakan untuk menanyakan saldo PakaiLink melalui merchant.

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

 

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

Authorization Token Request  

 

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: 

  1. Nominal minimum adalah IDR 10.000.00
  2. Nominal maksimal adalah IDR 2.000.000.000.00

Service Code

27

Method

POST

URL

/snap/v1.0/transfer-va/create-va

Content Type

application/json

Related Service

Virtual Account

 

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.

  1. VA Statis [O]
  2. VA Dinamis [C]

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.

  1. VA Statis [O]
  2. VA Dinamis [C]

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

Virtual Account

 

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.

  1. VA Statis [O]
  2. VA Dinamis [C]

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: 

  1. Nominal minimum adalah IDR 15.000,00
  2. Nominal maksimal adalah IDR 2.500.000,00

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

E-money 


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.
Nilai: Total Amount, termasuk pecahan

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": "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": "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": "This email address is being protected from spambots. You need JavaScript enabled to view it.",
    "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

E-money

 

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

QRIS MPM (Acquirer)

 

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.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO

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.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO

11

feeAmount

Money

Variable

Optional

-

Berisi dua sub-field.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO

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

QRIS MPM (Acquirer)


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:

  1. Berhasil, pesanan telah dibayar
  2. Dimulai, pesanan telah dibuat, tetapi belum dibayar
  3. Membayar, pesanan dalam proses pembayaran
  4. Dibatalkan, pesanan telah ditutup

9

transactionStatusDesc

String

Variable, 50 max

Optional

-

Deskripsi status transaksi

10

amount

Money

Variable

Wajib

-

Berisi dua sub-field.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO

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.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO

16

serviceFee

Money

Variable

Optional

-

Berisi dua sub-field.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO

17

nominalPaid

Money

Variable

Optional

-

 Berisi dua sub-field.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO

18

totalPaid

Money

Variable

Optional

-

 Berisi dua sub-field.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO

19

totalReceive

Money

Variable

Optional

-

Berisi dua sub-field.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO


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

QRIS MPM (Acquirer)


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.

  1. Nilai: Total Amount, termasuk pecahan
  2. Mata uang: Kode mata uang berdasarkan ISO

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 : 

  1. Nominal minimum adalah IDR 15.000,00
  2. Nominal maksimal adalah IDR 2.500.000,00

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

Payment Retail

 

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": "This email address is being protected from spambots. You need JavaScript enabled to view it.",
       "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

Payment Retail

 

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 :

  1. Jumlah minimum adalah IDR 10.000,00
  2. Jumlah maksimal adalah IDR 50.000.000,00

Service Code

42

Method

POST

URL

/snap/v1.0/emoney/bank-account-inquiry

Content Type

application/json

Related Service

Transfer ke Bank

 

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 : 

  1. Nominal minimum adalah IDR 10.000,00
  2. Nominal maksimal adalah IDR 50.000.000,00

Service Code

43

Method

POST

URL

/snap/v1.0/emoney/transfer-bank

Content Type

application/json

Related Service

Transfer ke Bank

 

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:

  • 00: Success
  • 03: Pending
  • 06: Failed

12

additionalInfo.transactionStatusDesc.english

String

Variable, 32 max

Wajib

 

Deskripsi status transaksi dalam bahasa Inggris:

  • 00: Success
  • 03: Pending
  • 06: Failed

13

additionalInfo.transactionStatusDesc.indonesia

String

Variable, 32 max

Wajib

 

Deskripsi status transaksi dalam bahasa Indonesia:

  • 00: Sukses
  • 03: Tertunda
  • 06: Gagal

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

Transfer ke Bank

 

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:

  • Nilai: Transaction paidAmount, termasuk pecahan
  • Mata Uang: Kode mata uang berdasarkan ISO

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:

  • 00: Sukses
  • 03: Tertunda
  • 06: Gagal

13

latestTransactionStatusDesc

String

Variable, 32 max

Wajib

-

Deskripsi status transaksi dalam bahasa Indonesia:

  • 00: Sukses
  • 03: Tertunda
  • 06: Gagal
 

 

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

Transfer ke Bank

 

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 : 

  1. Jumlah minimum adalah IDR 10.000,00
  2. Jumlah maksimum adalah IDR 50.000.000,00

Service Code

45

Method

POST

URL

/snap/v1.0/transfer-bank-va/account-inquiry

Content Type

application/json

Related Service

Transfer Virtual Account

 

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 : 

  1. Jumlah minimum adalah IDR 10.000,00
  2. Jumlah maksimal adalah IDR 50.000.000,00

Service Code

46

Method

POST

URL

/snap/v1.0/transfer-va/payment

Content Type

application/json

Related Service

Transfer Virtual Account

 

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:
00: Success
03: Pending
06: Failed

13

additionalInfo.transactionStatusDesc.english

String

Variable, 32 Max

Wajib

-

Deskripsi status transaksi dalam bahasa Inggris:
00: Success
03: Pending
06: Failed

14

additionalInfo.transactionStatusDesc.indonesia

String

Variable, 32 Max

Wajib

-

Deskripsi status transaksi dalam bahasa Indonesia:
00: Sukses
03: Tertunda
06: Gagal

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

Transfer Virtual Account

 

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:

  • Nilai: Transaction paidAmount, termasuk pecahan
  • Mata Uang: Kode mata uang berdasarkan ISO

11

latestTransactionStatus

String

Variable, 2 max

Wajib

-

Deskripsi status transaksi dalam bahasa Indonesia:

  • 00: Sukses
  • 03: Tertunda
  • 06: Gagal

12

latestTransactionStatusDesc

String

Variable, 32 max

Wajib

-

Deskripsi status transaksi dalam bahasa Indonesia:

  • 00: Sukses
  • 03: Tertunda
  • 06: Gagal
 

 

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

Transfer Virtual Account

 

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 : 

  1. Jumlah minimum adalah IDR 20.000.00 untuk dana
  2. Jumlah minimum adalah IDR 10.000.00 untuk metode lainnya 

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

Customer Topup

 

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: 

  1. Jumlah minimum adalah IDR 20.000.00 untuk dana
  2. Jumlah minimum adalah IDR 10.000.00 untuk metode lainnya 

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

Customer Topup

 

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:
00: Success
03: Pending
06: Failed

11

additionalInfo.transactionStatusDesc.english

String

Variable, 32 Max

Wajib

-

Deskripsi status transaksi dalam bahasa Inggris:
00: Success
03: Pending
06: Failed

12

additionalInfo.transactionStatusDesc.indonesia

String

Variable, 32 Max

Wajib

-

Deskripsi status transaksi dalam bahasa Indonesia:
00: Sukses
03: Tertunda
06: Gagal

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

Customer Topup

 

 

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:

  • Nilai: Transaction paidAmount, termasuk pecahan
  • Mata Uang: Kode mata uang berdasarkan ISO

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:

  • 00: Sukses
  • 03: Tertunda
  • 06: Gagal

13

transactionStatusDesc

String

Variable, 32 max

Wajib

-

Deskripsi status transaksi dalam bahasa Indonesia:

  • 00: Sukses
  • 03: Tertunda
  • 06: Gagal
 

 

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

Customer Topup

 

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

Balance Inquiry

 

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.
Nilai: Total Amount, termasuk pecahan

Mata uang: Kode mata uang berdasarkan ISO

11

accountInfo.status

String

Variable, 4 max

Wajib

-

Status akun:

  • 0001=Aktif
  • 0002=Ditutup
  • 0004=Akun baru
  • 0006=Terbatas
  • 0007=Dibekukan

 

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:

  • Berhasil, pesanan telah dibayar
  • Inisiasi, VA telah dibuat
  • Dibatalkan, VA telah dihapus
  • Gagal, VA telah ditutup karena sudah kedaluwarsa

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:

  • Nilai: Transaction paidAmount, termasuk pecahan
  • Mata Uang: Kode mata uang berdasarkan ISO

10

feeAmount

Money

Variable

Optional

-

Biaya yang dikenakan pada transaksi, berisi dua sub-bidang:

  • Nilai: Transaction paidAmount, termasuk pecahan
  • Mata Uang: Kode mata uang berdasarkan ISO

11

creditbalance

Money

Variable

Wajib

-

Nominal yang masuk ke saldo mitra, Berisi dua sub-bidang:

  • Nilai: Transaction paidAmount, termasuk pecahan
  • Mata Uang: Kode mata uang berdasarkan ISO

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:

  • Nilai: Transaction paidAmount, termasuk pecahan
  • Mata Uang: Kode mata uang berdasarkan ISO

 

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.

 

Daftar Channel ID

No

Kode

Deskripsi

1

95221

Mobile Phone

2

95222

Browser

3

95223

Desktop

4

95224

Teller

5

95225

EDC/POS