Dokumentasi API

Create Virtual Account

API NameCreate VA
FunctionAPI 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:  Nominal minimum adalah IDR 10.000.00 Nominal maksimal adalah IDR 2.000.000.000.00
Service Code27
MethodPOST
URL/snap/v1.0/transfer-va/create-va
Content Typeapplication/json
Related ServiceVirtual Account

Request​

Header

NoNameTypeLengthRequiredConditionRemarks
1AuthorizationStringVariableWajibBerisikan B2B Bearer JWT Token yang didapatkan dari Access Token B2B
2Content-TypeStringVariable, 127 maxWajibTipe konten, nilai selalu application/json
3X-TIMESTAMPStringFixed, 25 maxWajibWaktu transaksi dalam format YYYY-MM-DDTHH:mm:ss+07:00. Zona waktu harus GMT+7 (Jakarta time).
4X-PARTNER-IDStringVariable, 36 maxWajibID untuk mitra yang dihasilkan oleh PakaiLink. Unique ID untuk mitra.
5X-EXTERNAL-IDStringVariable, 36 maxWajibMessaging reference ID unik yang dihasilkan oleh merchant. Numeric String. Nomor referensi harus unik di hari yang sama.
6CHANNEL-IDStringVariable, 5 maxWajibIdentifikasi perangkat dimana API Service ini sedang diakses oleh pengguna. Daftar Channel ID dapat dilihat di sini.
7X-SIGNATUREStringVariableWajibSignature harus dihasilkan dengan metode Symmetric Signature.

Body

NoNameTypeLengthRequiredConditionRemarks
1partnerServiceIdStringVariable, 8 maxWajibTurunan dari X-PARTNER-ID, mirip dengan kode perusahaan, spasi kiri 8 digit. partnerServiceId + customerNo atau virtualAccountNo
2customerNoStringVariable, 20 maxWajibNomor unik (hingga 20 digit). partnerServiceId + CustomerNo atau virtualAccountNo
3virtualAccountNameStringVariable, 100 maxOptionalNama pengguna yang digunakan saat mendaftarkan VA. (statis) Nama yang terdaftar pada akun virtual yang digunakan untuk transaksi. (dinamis)
4virtualAccountEmailStringVariable, 225 maxOptionalData ini wajib ada ketika mengimplementasikan VA Statis.
5trxIdStringVariable, 225 maxOptionalID unik yang digunakan untuk mengidentifikasi suatu transaksi. 
6virtualAccountTrxTypeStringVariable, 1 maxWajibDigunakan untuk mengidentifikasi tipe kode VA yang dibuat, Untuk saat ini PakaiLink hanya support untuk tipe VA Statis dan VA Dinamis. VA Statis [O] VA Dinamis [C]
7expiredDateStringVariableOptionalyWaktu kedaluwarsa dari VA dinamis yang dibuat (dalam format ISO). Jika variable ini tidak diisi, maka secara default akan diisi 24 jam oleh sistem.
8totalAmountMoneyVariableWajibyJumlah tagihan yang harus dibayarkan dalam suatu transaksi jika VA dinamis.
9additionalInfoStringVariableWajibInformasi tambahan yang disertakan dalam suatu transaksi.
10additionalInfo.callbackUrlStringtextWajibURL yang digunakan oleh sistem untuk mengirimkan response atau notifikasi otomatis setelah suatu transaksi atau proses selesai.
11additionalInfo.bankcodeStringtext, 3 maxWajibKode 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" : "test@gmail.com",
    "trxId": "1Mfo8gsQa43Sd2zJ3CJzDHYjGkeG3ErDD6tu",
    "virtualAccountTrxType": "O",
    "additionalInfo": {
        "callbackUrl": "http://localhost:10007/callback/partner",
        "bankCode": "013"
    }
}

​Response​

Body

NoNameTypeLengthRequiredConditionRemarks
1responseCodeStringFixed, 7 maxWajibLihat daftar kode response.
2responseMessageStringVariable, 150 maxWajibLihat daftar kode response.
3virtualAccountDataStringVariableWajibBerisi data virtual account
4partnerServiceIdStringVariableWajib 
5customerNoStringVariableWajib 
6virtualAccountNoStringVariable, 28 max WajibInformasi nomor virtual account yang menggabungkan partnerServiceId dan customerNo
7trxIdStringVariable, 225 maxOptional – 
8virtualAccountTrxTypeStringVariable, 1 max WajibDigunakan untuk mengidentifikasi tipe kode VA yang dibuat, Untuk saat ini PakaiLink hanya support untuk tipe VA Statis dan VA Dinamis. VA Statis [O] VA Dinamis [C]
9totalAmountJSON ObjectVariableyJumlah tagihan yang harus dibayarkan dalam suatu transaksi jika VA dinamis.
10totalAmount.valueStringVariableTotal Amount, termasuk pecahan
11totalAmount.currencyStringVariableKode mata uang berdasarkan ISO
12feeAmountJSON ObjectVariableJumlah biaya layanan yang dikenakan dalam suatu transaksi
13feeAmount.valueStringVariableTransaction paidAmount, termasuk pecahan
14feeAmount.currencyStringVariableKode mata uang berdasarkan ISO
15additionalInfoJSON ObjectVariableWajibInformasi tambahan.
16additionalInfo.callbackUrlStringVariableWajibURL untuk dapat menerima notifikasi pembayaran setelah pembayaran dilakukan oleh pelanggan.
17additionalInfo.bankCodeStringtextKode bank merepresentasikan institusi bank yang digunakan untuk membuat kode VA.
18additionalInfo.referenceNoStringVariableIdentifikasi 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

NoResponse CodeResponse MessageKeterangan
12002700SuccessfulRequest telah berhasil diproses tanpa ada masalah.
24002701Invalid Field FormatPanjang informasi tidak boleh melebihi 150 karakter.
34002702Invalid Wajib FieldKolom atau field yang wajib diisi, tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan.
44012700Unauthorized. [reason]Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk akses tindakan tertentu
54012701Invalid Token (B2B)Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa.
64032701Feature Not AllowedFitur yang diminta tidak diizinkan atau tidak tersedia.
74032702Exceeds Transaction Amount LimitJumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi.
84042703Bank Not Supported By SwitchBank yang digunakan tidak didukung oleh sistem.
94042711invalid accountAkun tidak valid atau tidak dapat ditemukan dalam sistem.
104092700ConflictX-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama.
114092701Duplicate partnerReferenceNoNomor referensi mitra (partnerReferenceNo,trxId) yang digunakan sudah terdaftar atau digunakan sebelumnya dalam sistem.
125002702Backend system failureKesalahan yang terjadi di server saat mencoba memproses request.