API Reference (NEW)
ID - Indonesia
  • ID - Indonesia
  • GL - Global
DashboardProduct Docs
Resources
  • Github
  • Demo Site
  • Simulator
DashboardProduct Docs
Resources
  • Github
  • Demo Site
  • Simulator
ID - Indonesia
  • ID - Indonesia
  • GL - Global
  1. DOKU Generate Payment Code
  • Introduction
  • Getting Started
    • Create Account
    • Authentication & API Keys
    • Make your first API call
    • Postman Collection
  • Checkout API
    • Build a Checkout Page
      • Checkout Page
      • Initiate Payment
  • Direct API
    • Cards
      • Payment Form
        • Step 1 - Generate Payment Page
      • Host-to-host Payment
    • Bank Transfer
      • BCA Virtual Account
        • DOKU Generate Payment Code
          • Step 1 - Get Token
            POST
          • Step 2 - Create VA (DGPC)
            POST
          • Additional - Payment Notification
            POST
          • Additional - Delete Payment Code
            DELETE
          • Additional - Update Payment Code
            PUT
        • Merchant Generate Payment Code
          • Step 1 - Get Token
          • Step 2 - Create VA (MGPC)
          • Additional - Payment Notification
          • Additional - Delete Payment Code
          • Additional - Update Payment Code
        • Direct Inquiry
          • Inquiry Payment
          • Additional - Payment Notification
          • Additional - Delete Payment Code
          • Additional - Update Payment Code
      • BNC Virtual Account
        • Merchant Generated Payment Code
          • Step 2 - Create VA (DGPC)
        • DOKU Generated Payment Code
          • Step 1 - Get Token
          • Step 2 - Create VA (DGPC)
        • Direct Inquiry
          • Step 1 - Get Token
          • Step 2 - Create VA (DGPC)
      • BNI Virtual Account
        • Merchant Generated Payment Code
          • Step 1 - Get Token
          • Step 2 - Create VA (DGPC)
        • DOKU Generated Payment Code
          • Step 1 - Get Token
          • Step 2 - Create VA (DGPC)
        • Direct Inquiry
          • Step 1 - Get Token
          • Step 2 - Create VA (DGPC)
      • BRI Virtual Account
        • Step 1 - Init KJUR
        • Step 2 - Get Token
        • Step 3 - Create VA (DGPC)
      • BSI Virtual Account
        • Step 1 - Init KJUR
        • Step 2 - Get Token
        • Step 3 - Create VA (DGPC)
      • BTN Virtual Account
        • Step 1 - Init KJUR
        • Step 2 - Get Token
        • Step 3 - Create VA (DGPC)
      • DANAMON Virtual Account
        • Step 1 - Init KJUR
        • Step 2 - Get Token
        • Step 3 - Create VA (DGPC)
      • MANDIRI Virtual Account
        • Merchant Generated Payment Code
          • Step 1 - Get Token
          • Step 2 - Create VA (DGPC)
        • DOKU Generated Payment Code
        • Direct Inquiry
      • MAYBANK Virtual Account
        • Step 1 - Init KJUR
        • Step 2 - Get Token
        • Step 3 - Create VA (DGPC)
      • PERMATA Virtual Account
        • Step 1 - Init KJUR
        • Step 2 - Get Token
        • Step 3 - Create VA (DGPC)
      • SINARMAS Virtual Account
        • Step 1 - Init KJUR
        • Step 2 - Get Token
        • Step 3 - Create VA (DGPC)
      • CIMB SNAP Virtual Account
        • Step 1 - Init KJUR
        • Step 2 - Get Token
        • Step 3 - Create VA (DGPC)
    • Convenience Store
      • Alfa Group
        • Alfa - Generate Payment Code
      • Indomaret
        • Indomaret - Generate Payment Code
    • e-Wallet
      • OVO
        • One Time Payment
          • OVO - Payment
          • OVO - Void
        • Account Binding
          • Step 1 - Account Binding
          • Step 2 - Balance Inquiry
          • Step 3 - Payment
          • Additional - Refund
          • Additional - Account Unbinding
      • Shopee Pay
        • Shopee Pay - Create Order
    • Direct Debit
      • BRI Direct Debit
        • Register Card - Create Token
        • Register Card - Validate OTP
        • Register Card - Resend OTP
        • Get Card List
        • Payment - Create Payment
        • Payment - Validate OTP
        • Payment - Resend OTP
        • Payment - Create Recurring Payment
        • Delete Card
      • CIMB Snap Direct Debit
        • Get Token B2B
        • Account Binding
        • Get Token B2B2C
        • Payment
        • Verify OTP Payment
        • Refund
        • Account Unbinding
        • Verify OTP Unbinding
      • ALLO Snap Direct Debit
        • Step 1 - Account Binding
        • Step 2 - Balance Inquiry
        • Step 3 - Payment
        • Additional - Refund
        • Additional - Account Unbinding
      • BRI Snap Direct Debit
        • Get Token B2B
        • Card Binding
        • Verify OTP Binding
        • Get Token B2B2C
        • Payment
        • Verify OTP Payment
        • Refund
        • Card Unbinding
      • Mandiri Snap Direct Debit
        • Get Token B2B
        • Card Binding
        • Request OTP Binding
        • Verify OTP Binding
        • Get Token B2B2C
        • Payment
        • Request OTP Payment
        • Verify OTP Payment
        • Cancel
        • Card Unbinding
      • Dana Snap Direct Debit
        • Get Token B2B
        • Payment
        • Refund
      • ShopeePay Snap Direct Debit
        • Get Token B2B
        • Payment
        • Refund
    • PayLater
      • Generate Order
      • Cancellation
      • Refund
    • Kartu Kredit Indonesia
      • Get Token B2B
      • Binding Only
      • Payment AFP with Binding
      • Payment AFP
      • Payment with token
      • Payment without AFP
      • Refund
      • Unbinding
    • Online Refund
      POST
  • Payout API
  • Check Status API
    • Payment
  • Partner API
  • Biller API
  • Wallet Service API
  • Webhooks
    • Sub Account API
      • Money In
        • Accept Payment
      • Money Out
      • Balance
  • Use Case Guides
  • Error Handling
    • Error Codes Glossary
  • FAQ / Troubleshooting
  • Change Log
    • ID - Indonesia Version
  • Archive
    • Get Token B2B
    • Get Token B2B2C
    • Step 1 - Account Binding
    • Step 2 - Balance Inquiry
    • Step 3 - Payment
    • Additional - Refund
    • Additional - Account Unbinding
    • Get Token B2B
    • Get Token B2B2C
    • Account Binding
    • Balance Inquiry
    • Payment
    • Refund
    • Account Unbinding
  1. DOKU Generate Payment Code

Additional - Update Payment Code

PUT
/virtual-accounts/bi-snap-va/v1.1/transfer-va/update-va
Update Payment Code

Request

Header Params
X-TIMESTAMP
string 
required
Client's current local time in yyyy-MM-dd'T'HH:mm:ssXXX format. Sample: 2024-03-19T14:39:01+07:00
Example:
2024-03-19T14:39:01+07:00
X-SIGNATURE
string 
required
Algorithm symmetric signature HMAC_SHA512 (clientSecret, stringToSign)
Example:
85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
X-PARTNER-ID
string 
required
Unique ID for a partner (DOKU'S Client ID)
Example:
BRN-0259-1678068334526
X-EXTERNAL-ID
string 
required
Numeric String. Reference number that should be unique in the same day (request-id)
Example:
418075533589
CHANNEL-ID
string 
required
Channel Id for VA. Please fill with H2H (Host-To-Host)
Example:
H2H
Authorization
string 
required
Access Token obtained from Get B2B Token API | Go to here for detailed documentation
Example:
Bearer eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2OTgwNTA3NDMsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjExLTE2OTY5MTk2NTE5MTgifQ.x-D5VlK6TlVZbLPUSCr-Gbfgh4tnp0QDJmedYFHJGHFjg1c4x39pszU4sLvRhr0Jk0vKdMIzxUZeNhKoesWqDJitnG3kfrNZNsMb_WYUC0tJW91onXzYOKXiTgsHwRNFoWPQHlXIEtT3RQm-SRlCpk_E0gsavgkQn2-kbJEBnPhIs4eKg5IUY9GYi4hRr-_GHsudDl8sd2B5UBB_rHYq36BRmLXH7i7MQADHPsB1ktPVgk3ZWF0jebEjI-lJ88p-omL1vQNvRseXej2HKBa9chGLmPDvXYBQaRmmstHz-tv1boFrHfwsHJebcUec-i3WE1vMvP_3EPXdbqb45N4ciQ
Body Params application/json
partnerServiceId
string 
required
similar to company code/BIN,8 digit left padding space. | Mandatory | min length: 1 | max length: 8
Example:
19008
customerNo
string 
required
Unique number (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo. | Mandatory | min length: 1 | max length: 20
Example:
00000000000000000001
virtualAccountNo
string 
required
partnerServiceId (8 digit left padding 0) + customerNo (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo. | Mandatory | min length: 1 | max length: 28
Example:
19008000000000000000000001
virtualAccountName
string 
optional
Customer Name | min length: 1 | max length: 255
Example:
Customer Name
virtualAccountEmail
string 
optional
Customer Email | min length: 1 | max length: 255
Example:
customer.email@mail.com
virtualAccountPhone
string 
optional
Customer Phone, Format: 62xxxxxxxxx xxxx | min length: 9 | max length: 30
Example:
0816291271826
trxId
string 
required
Invoice number in Partner system. | Mandatory | min length: 1 | max length: 64
Example:
23219829713
totalAmount
object (TotalAmountRef) 
optional
value
string 
optional
Transaction Amount. Total Amount with 2 decimal, format ISO 4217 | min length: 1 | max length: 16.2
Example:
11500.00
currency
string 
optional
Currency | min length: 1 | max length: 3
Example:
IDR
additionalInfo
object (AdditionalInfoUpdateVARequestRef) 
required
channel
enum<string> 
required
Channel that will be apply for this VA | Mandatory | min length: 1 | max length: 30
Allowed value:
VIRTUAL_ACCOUNT_BCA
virtualAccountConfig
object 
optional
virtualAccountTrxType
string 
optional
Transaction type for this transaction. C (Closed Amount), O (Open Amount), V (Bill Variable Amount) | Mandatory | min length: 1 | max length: 1
Example:
C
expiredDate
string 
optional
Expiration date for Virtual Account. ISO-8601
Example:
2023-01-01T10:55:00+07:00
Example
{
    "partnerServiceId": "   19008",
    "customerNo": "00000000000000000001",
    "virtualAccountNo": "  19008000000000000000000001",
    "virtualAccountName": "Customer Name",
    "virtualAccountEmail": "customer.email@mail.com",
    "virtualAccountPhone": "0816291271826",
    "trxId": "23219829713",
    "totalAmount": {
        "value": "11500.00",
        "currency": "IDR"
    },
    "additionalInfo": {
        "channel": "VIRTUAL_ACCOUNT_BCA",
        "virtualAccountConfig": {
            "status": "INACTIVE",
            "minAmount": "10000.00",
            "maxAmount": "5000000.00"
        }
    },
    "virtualAccountTrxType": "C",
    "expiredDate": "2023-01-01T10:55:00+07:00"
}

Request samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request PUT '/virtual-accounts/bi-snap-va/v1.1/transfer-va/update-va' \
--header 'X-TIMESTAMP;' \
--header 'X-SIGNATURE;' \
--header 'X-PARTNER-ID;' \
--header 'X-EXTERNAL-ID;' \
--header 'CHANNEL-ID;' \
--header 'Authorization;' \
--header 'Content-Type: application/json' \
--data-raw '{
    "partnerServiceId": "   19008",
    "customerNo": "00000000000000000001",
    "virtualAccountNo": "  19008000000000000000000001",
    "virtualAccountName": "Customer Name",
    "virtualAccountEmail": "customer.email@mail.com",
    "virtualAccountPhone": "0816291271826",
    "trxId": "23219829713",
    "totalAmount": {
        "value": "11500.00",
        "currency": "IDR"
    },
    "additionalInfo": {
        "channel": "VIRTUAL_ACCOUNT_BCA",
        "virtualAccountConfig": {
            "status": "INACTIVE",
            "minAmount": "10000.00",
            "maxAmount": "5000000.00"
        }
    },
    "virtualAccountTrxType": "C",
    "expiredDate": "2023-01-01T10:55:00+07:00"
}'

Responses

🟢200OK
application/json
item created
Body
responseCode
string 
required
Response Code with format HTTP status code + service code + case code. service code and status code refer to: https://developers.doku.com/getting-started-with-doku-api/error-handling/http-status-and-case-code#id-1.-virtual-account . | Mandatory | min length: 1 | max length: 7.
Example:
2002800
responseMessage
string 
required
Response Description. | Mandatory | min length: 1 | max length: 150
Example:
Successful
virtualAccountData
object 
required
partnerServiceId
string 
required
similar to company code/BIN,8 digit left padding space. | Mandatory | min length: 1 | max length: 8
Example:
19008
customerNo
string 
required
Unique number (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo. | Mandatory | min length: 1 | max length: 20
Example:
00000000000000000001
virtualAccountNo
string 
required
partnerServiceId (8 digit left padding 0) + customerNo (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo. | Mandatory | min length: 1 | max length: 28
Example:
19008000000000000000000001
virtualAccountName
string 
required
Customer Name | min length: 1 | max length: 255
Example:
Customer Name
virtualAccountEmail
string 
optional
Customer Email | min length: 1 | max length: 255
Example:
customer.email@mail.com
virtualAccountPhone
string 
optional
Customer Phone, Format: 62xxxxxxxxx xxxx | min length: 9 | max length: 30
Example:
081293912081
trxId
string 
required
Transaction ID in Partner system. | Mandatory | min length: 1 | max length: 64
Example:
23219829713
totalAmount
object (TotalAmountRef) 
required
virtualAccountTrxType
string 
required
Transaction type for this transaction. C (Closed Amount), O (Open Amount), V (Bill Variable Amount) | Mandatory | min length: 1 | max length: 1
Example:
C
expiredDate
string 
required
Example:
2023-01-01T10:55:00+07:00
additionalInfo
object (AdditionalInfoUpdateVARequestRef) 
required
Example
{
    "responseCode": "2002800",
    "responseMessage": "Successful",
    "virtualAccountData": {
        "partnerServiceId": "   19008",
        "customerNo": "00000000000000000001",
        "virtualAccountNo": "  19008000000000000000000001",
        "virtualAccountName": "Customer Name",
        "virtualAccountEmail": "customer.email@mail.com",
        "virtualAccountPhone": "081293912081",
        "trxId": "23219829713",
        "totalAmount": {
            "value": "11500.00",
            "currency": "IDR"
        },
        "virtualAccountTrxType": "C",
        "expiredDate": "2023-01-01T10:55:00+07:00",
        "additionalInfo": {
            "channel": "VIRTUAL_ACCOUNT_BCA",
            "virtualAccountConfig": {
                "status": "INACTIVE",
                "minAmount": "10000.00",
                "maxAmount": "5000000.00"
            }
        }
    }
}
🟠400Bad Request
🟠403Forbidden
🟠404Record Not Found
🟠409409
🔴500Server Error
🔴504Gateway Timeout
Modified at 2025-07-21 11:51:50
Previous
Additional - Delete Payment Code
Next
Step 1 - Get Token
Built with