API Request & Response

🎈Headers

KeyTypeDescription
App-IDStringApplication ID that generated from Application Menu in Verihubs Client Dashboard.
To hit in Testing and Live mode you need a Production Application ID.
API-KeyStringAPI-Key that generated from Application Menu in Verihubs Client Dashboard that related to specific Application ID.

You can generate your Application ID and API-Key in the Application page in Verihubs Client Dashboard..

🎈Request Parameter

PayloadsTypeDescriptionExample
nik*string16-digit of Wajib Pajak's NIK as stated on KTP.1234567891234567
npwp*string15-digit of Wajib Pajak's NPWP as stated on NPWP card and has to be inputted without the point (.) and strip (-) symbols that are shown in the Kartu NPWP.If the NPWP written on NPWP card is 01.002.003.4-056.000, then input it as is 010020034056000
purposestringThe main purpose of validation. Currently there is no number of character limitation in this payload.Pengecekan status WP
user_consentbooleanWhen user_consent is true, the response will show the user's NPWP along with the validation status.

When user_consent is false, the response will only show the validation status without showing user's NPWP.
true
reference_idstringID that can be generated from your side to indicate your company's transaction. Must be unique per transaction. Verihubs will also auto-generate this ID if it left empty/non-exist in the payload.npwp#123456

❗️

Users have to choose between NIK or NPWP to be inputted in the body for the checking process. Hitting the Verihubs NPWP Verification endpoint with both the NPWP and NIK in the body will result in an INVALID_PAYLOAD response.

🎈Response

Response Parameter

ResponseTypeDescriptionExamples
messageStringStatus of the transactionSuccessfully check NPWP
dataObjectResult of the verification that contains id, reference_id, npwp, nama, alamat, status_wp and status_spt.N/A
idString32-digit auto-generated Verihubs transaction ID123a4a56-7b8c-91a2-34b5-67a8e9a1234a
reference_idStringID that can be generated from your side to indicate your company's transaction. Must be unique.npwp#123456
npwpStringNPWP from the inputted NIK if user_consent is set TRUE010020034056000
namaStringMasked registered name of the NPWP owner.J*HN D**
alamatStringMasked registered address of the NPWP owner.W_K TW_R 1, JL D.. P_NJ*_T_N K_V. 9 001 011
status_wpStringThe Wajib Pajak (WP) status of the associated NPWP that will be shown as AKTIF or NE (re: Non Efektif).AKTIF
status_sptStringThe Surat Pemberitahuan (SPT) Tahunan status of the associated NPWP for the last 2 years that will be shown as VALID or INVALID.VALID

Detailed Response

CodeDescriptionResponse
200Successful Request; This is a transaction that is considered successful and has been successfully verified by the data source){
"message": "Successfully check NPWP",
"data": {
"id": "Transaction ID",
"referenceid": "Reference ID from Client",
"npwp": "NPWP Number",
"nama": "Masked Name",
"alamat": "Masked Address",
"status_wp": "AKTIF/NE",
"status_spt": "VALID/INVALID"
}
}
400Bad Request; This is a transaction that is considered failed due to validation errors, an error_field will appear explaining the error.{
"message": "Authorization Failed",
"error_code": "BAD REQUEST",
"error_fields": []
}
401Authorization Failed; The transaction cannot proceed because it is unauthorized.{
"message": "Authorization Failed",
"error_code": "UNAUTHORIZED",
"error_fields": []
}
403Insufficient quota; The transaction failed due to insufficient quota, please contact Verihubs Customer Support (CS) Team.{
"message": "Insufficient testing quota",
"error_code": "FORBIDDEN",
"error_fields": []
}
429Spam Error; The transaction is read as spam, please wait a few seconds before re-performing the hit process.{
"message": "Too many request in the allowed time frame",
"error_code": "TOO_MANY_REQUEST",
"error_fields": []
}
500Internal Server Error; The transaction failed due to a server error that could be caused by data source constraints, timeout, internal error.{
"message": "Internal Server Error",
"error_code": "INTERNAL_SERVER_ERROR",
"error_fields": []
}

NIK, NPWP and User Consent Variations

Payload UsedUser ConsentRequestResponseRemarks
NIKTrue{
"nik": "true NIK",
"purpose": "real purpose",
"user_consent": true,
“reference_id”: “Client Generated Reference ID”
}
{
"message": "Successfully check NPWP",
"data": {
"id": "Transaction ID",
"referenceid": "Reference ID from Client",
"npwp": "NPWP Number",
"nama": "Masked Name",
"alamat": "Masked Address",
"status_wp": "AKTIF/NE",
"status_spt": "VALID/INVALID"
}
}
The NPWP number will be shown if the NIK payload is being used and user_consent is true.
NIKFalse/Empty/Not Exist{
"nik": "true NIK",
"purpose": "real purpose",
"user_consent": false,
“reference_id”: “Client Generated Reference ID”
}
{
"message": "Successfully check NPWP",
"data": {
"id": "Transaction ID",
"referenceid": "Reference ID from Client",
"nama": "Masked Name",
"alamat": "Masked Address",
"status_wp": "AKTIF/NE",
"status_spt": "VALID/INVALID"
}
}
The NPWP number will not be shown if the NIK payload is being used and user_consent is false.
NPWPTrue/False/Empty/Not Exist{
"npwp": "true NPWP",
"purpose": "real purpose",
"user_consent": true,
“reference_id”: “Client Generated Reference ID”
}
{
"message": "Successfully check NPWP",
"data": {
"id": "Transaction ID",
"referenceid": "Reference ID from Client",
"nama": "Masked Name",
"alamat": "Masked Address",
"status_wp": "AKTIF/NE",
"status_spt": "VALID/INVALID"
}
}
The user_consent payload will be ignored if the NPWP is being used for the verification.
NIK + NPWPTrue/False/Empty/Not Exist{
"nik": "true NIK",
“npwp”: “true NPWP”,
"purpose": "real purpose",
"user_consent": true
}
{
"message": "Invalid payload",
"error_code": "INVALID_PAYLOAD",
"error_fields": [
{
"field": "nik",
"message": "NPWP and NIK cannot be used on body at the same time"
}
]
}
Only a single request payload option between NIK or NPWP is allowed to be used.

Reference ID Variations

Client Reference IDRequestResponseRemarks
Client Generated{
"nik": "true NIK",
"purpose": "real purpose",
"user_consent": true,
“reference_id”: “Client Generated Reference ID”
}
{
"message": "Successfully check NPWP",
"data": {
"id": "Transaction ID",
"referenceid": "Client Generated Reference ID",
"npwp": "NPWP Number",
"nama": "Masked Name",
"alamat": "Masked Address",
"status_wp": "AKTIF/NE",
"status_spt": "VALID/INVALID"
}
}
The response will show the exact same Reference ID if the client chooses to generate it by themself.
Empty

or

Not Exist
{
"nik": "true NIK",
"purpose": "real purpose",
"userconsent": true,
“reference_id”: “”
}

_or


{
"nik": "true NIK",
"purpose": "real purpose",
"user_consent": true
}
{
"message": "Successfully check NPWP",
"data": {
"id": "Transaction ID",
"referenceid": "Verihubs Generated Reference ID",
"npwp": "NPWP Number",
"nama": "Masked Name",
"alamat": "Masked Address",
"status_wp": "AKTIF/NE",
"status_spt": "VALID/INVALID"
}
}
Verihubs will generate a specific Reference ID if within the request payload client doesn’t include ones.