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 Details

Request Parameter for NIK Endpoint

PayloadsTypeDescriptionExample
nikstring16-digit of Wajib Pajak's NIK as stated on KTP.1234567891234567
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

Request Parameter for NPWP Endpoint

PayloadsTypeDescriptionExample
npwpstringWajib 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. Verihubs accepts these formats of NPWP:

- 15 digit NPWP.
- 16 digit NPWP.
- 22 digit NITKU.
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

🚧

Hitting the Verihubs Tax Number Verification endpoint(s) with both the NPWP and NIK in the same endpoint will result in an INVALID_PAYLOAD response.

🎈Response Details

Response Parameter for NIK and NPWP Endpoint

ResponseTypeDescriptionExamples
messageStringStatus of the transactionSuccessfully check NPWP
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"
}
}
200Successfull Request but NPWP Not Found. This indicates that the searched NPWP by NIK is not registered in the datasource.{
"message": "NPWP not found",
"data": {
"id": "4182b248-f323-4c57-a770-15b4ea4c4968",
"reference_id": "Reference ID from client",
"npwp": null,
"nama": null,
"alamat": null,
"status_wp": null,
"status_spt": null
}
}
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 Success (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.