Dokumentasi API

Transfer Virtual Account

API NameVirtual Account Transfer
FunctionProses 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 :  Jumlah minimum adalah IDR 10.000,00 Jumlah maksimal adalah IDR 50.000.000,00
Service Code46
MethodPOST
URL/snap/v1.0/transfer-va/payment
Content Typeapplication/json
Related ServiceTransfer Virtual Account

Request​

Header

NoNameTypeLengthRequiredConditionRemarks
1Content-TypeStringVariable, 127 maxWajibTipe konten, nilai selalu application/json
2AuthorizationStringVariableWajibBerisi B2B Bearer JWT Token, yang telah Anda peroleh dari Access Token B2B
3X-TIMESTAMPStringFixed, 25 maxWajibTanggal dan waktu transaksi, dalam format. YYYY-MM-DDTHH:mm:ss+07:00. Waktu harus dalam format GMT+7 (Jakarta time)
4X-PARTNER-IDStringVariable, 36 maxWajibID untuk mitra yang dihasilkan oleh PakaiLink. ID unik untuk setiap mitra.
5X-EXTERNAL-IDStringVariable, 36 maxWajibID referensi pesan unik yang dihasilkan oleh merchant. String numerik. Nomor referensi yang harus unik dalam satu hari yang sama.
6CHANNEL-IDStringVariable, 5 maxWajibIdentifikasi perangkat tempat layanan API diakses oleh pengguna akhir (pelanggan) saat ini. 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
3inquiryRequestIdStringVariable, 64 maxWajibKode unik yang merepresentasikan proses inquiry sebelumnya.
4virtualAccountNoStringVariable, 28 maxWajibNomor Rekening VA yang akan dilakukan proses pengecekan.
5sourceBankCodeStringVariable, 28 maxWajibKode untuk mengidentifikasi bank yang mengeluarkan kode VA
6amountmoneyVariableWajibJumlah dana yang terlibat dalam suatu transaksi 
7additionalInfoStringVariableWajibInformasi tambahan yang disertakan dalam suatu transaksi 
8additionalInfo.callbackUrlStringVariable, textOptionalURL yang digunakan oleh sistem untuk mengirimkan respons atau notifikasi otomatis setelah suatu transaksi atau proses selesai
9additionalInfo.remarkStringVariable, textOptionalKeterangan 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

NoNameTypeLengthRequiredConditionRemarks
1responseCodeStringFixed,  7 maxWajibLihat daftar kode respons.
2responseMessageStringVariable,  150 maxWajibLihat daftar kode respons.
3virtualAccountDataJSON objectvariablewajibBerisi data transaksi transfer virtual akun (VA)
4partnerServiceIdStringvariable 8 maxWajibDerivative of X-PARTNER-ID, similar to company code, 8 digit left padding space. partnerServiceId + customerNo or virtualAccountNo
5customerNoStringvariable 20 maxWajibUnique number (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo
6inquiryRequestIdStringvariable 128 maxWajibKode unik yang digunakan untuk identifikasi proses inquiry oleh partner
7virtualAccountNoStringVariable,  28 maxWajibNomor Rekening VA yang akan dilakukan proses pengecekan.
8sourceBankCodeStringVariable,  10 maxWajibKode untuk mengidentifikasi bank yang mengeluarkan kode VA
9amountmoneyVariableWajibJumlah uang yang terlibat dalam suatu transaksi
10feeAmountmoneyVariableWajibJumlah biaya yang dikenakan dalam suatu transaksi
11additionalInfoJSON  ObjectVariableWajibinformasi tambahan yang disertakan dalam suatu transaksi 
12additionalInfo.transactionStatusStringVariable, 32 MaxWajibKode status transaksi:
00: Success
03: Pending
06: Failed
13additionalInfo.transactionStatusDesc.englishStringVariable, 32 MaxWajibDeskripsi status transaksi dalam bahasa Inggris:
00: Success
03: Pending
06: Failed
14additionalInfo.transactionStatusDesc.indonesiaStringVariable, 32 MaxWajibDeskripsi status transaksi dalam bahasa Indonesia:
00: Sukses
03: Tertunda
06: Gagal
15additionalInfo.referenceNostringvariable 10 maxwajib ID transaksi yang dibuat oleh provider yang merepresentasikan transaksi yang sedang berlangsung
16additionalInfo.balancemoneyVariableWajibJumlah uang yang tersedia dalam suatu akun
17additionalInfo.callbackUrlStringVariable, textOptionalURL yang digunakan oleh sistem untuk mengirimkan response atau notifikasi otomatis setelah suatu transaksi atau proses selesai
18additionalInfo.remarkStringVariable, textOptionalKeterangan 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

NoResponse KodeResponse PesanKeterangan
12004600SuccessfulRequest telah berhasil diproses tanpa ada masalah
24004601Invalid Field FormatPanjang informasi tidak boleh melebihi 150 karakter
34004602Invalid Wajib FieldKolom atau field yang wajib diisi tidak lengkap atau formatnya tidak sesuai dengan yang diharapkan
44014600Unauthorized. [reason]Kesalahan umum yang terjadi ketika pengguna atau sistem tidak memiliki izin untuk mengakses tindakan tertentu
54014601Invalid Token (B2B)Token akses yang digunakan untuk otentikasi tidak sah atau sudah kedaluwarsa
64034601Feature Not AllowedFitur yang diminta tidak diizinkan atau tidak tersedia
74034602Exceeds Transaction Amount LimitJumlah uang terkecil atau terbesar yang dapat diproses dalam transaksi
84034603Invalid TransactionTransaksi yang dilakukan tidak sah atau tidak valid
94044603Bank Not Supported By SwitchBank yang digunakan tidak didukung oleh sistem
104044611invalid accountAkun tidak valid atau inquiryRequestId  tidak dapat ditemukan dalam sistem
114094600ConflictX-EXTERNAL-ID tidak dapat digunakan lebih dari sekali dalam satu hari yang sama
125004602Backend system failureKesalahan yang terjadi di server saat mencoba memproses request