Payment Notification VA

Before hit this API, QoinHub will call [Access Token API B2B] Merchant first. Merchant have to use QoinHub a partner id that will be used in request header as X-PARTNER-ID.

Access Token API B2B

Path[merchant_endpoint]/api/v1.0/access-token/b2b
HTTP MethodPOST
Versionv1.0
Service Code73

Request Header

Field NameField TypeMandatoryField Description
Content-typeStringMMedia type of the resource, i.e. application/json
X-TIMESTAMPStringMClient’s current local time in ISO-8601 format
X-SIGNATUREStringMCreated using asymmetric signature SHA256withRSA algorithm. Read here
X-CLIENT-KEYStringMClient’s client_id (given at the completion registration process)
Content-typeapplication/json
X-TIMESTAMP2025-07-06T14:12:50+07:00
X-SIGNATUREneGbHoFVY1d7EtG8Z6VBWwykvyqIkg
X-CLIENT-KEYQoinSnap

Request Body

Field NameField TypeMandatoryField Description
grantTypeStringMclient_credentials: The client can request an access token using only its client credentials
additionalInfoObjectOAdditional Information
{
    "grantType": "client_credentials",
    "additionalInfo": {}
}

Response Body

Field NameField TypeMandatoryField Description
accessTokenStringCA string representing an authorization issued to the client that used to access protected resources.

Will only be returned if API call is successful.
additionalInfoStringCAddtional Info.
expiresInStringCTime duration when the accessToken will expire. (default = 900 second).

Will only be returned if API call is successful.
responseCodeStringMError code to specify the error returned.
responseMessageStringMDebug message to provide more information.
tokenTypeStringCThe access token type provides the client with the information required to successfully utilize the access token to make a protected resource request.

Will only be returned if API call is successful.
{
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhN2UzMmI3MC1hMWY2LTQyYmUtODM1NS1mZWU2MTAyODk3MjQiLCJjbGllbnRJZCI6IjIwMjAwMDIxNSIsIm5iZiI6MTcxOTQ3NjI3MywiZXhwIjoxNzE5NDc3MTczLCJpYXQiOjE3MTk0NzYyNzN9.uqvcrZaFnY2dmV16K9785xII_fby_uugeimUWJBvSYE",
  "additionalInfo": {},
  "expiresIn": "900",
  "responseCode": "2007300",
  "responseMessage": "successfull",
  "tokenType": "Bearer"
}

List of Response Code

Response CodeHTTP Status CodeResponse Message
2007300200Successful
4007300400Bad Request
4007301400Invalid Field Format {field name}
4007302400Invalid Mandatory Field {field name}
4017300401Unauthorized. [Reason]
4017301401Invalid Token (B2B)
4047301404Transaction Not Found
4047312404Invalid Bill/Virtual Account [Reason]
4047313404Invalid Amount
4097300409Conflict
5007300500General Error

Payment Notification VA


Path[merchant_endpoint]/api/v1.0/transfer-va/payment
HTTP MethodPOST
Versionv1.0
Service Code25

Request Header

Field NameField TypeMandatoryField Description
Content-TypeStringMMedia type of the resource, i.e. application/json
AuthorizationStringMRepresents access_token of a request; string starts with keyword “Bearer ” followed by access_token. Can get this from Access Token B2B API response. Read here
X-TIMESTAMPStringMClient’s current local time in ISO-8601 format
X-SIGNATUREStringMCreated using symmetric signature HMAC_SHA512 algorithm. Use Access Token B2B from above.
X-PARTNER-IDStringMUnique identifier for caller
X-EXTERNAL-IDStringMMerchant’s unique ID per transaction request
CHANNEL-IDStringMPJP’s channel id.
Content-Typeapplication/json
AuthorizationBearer gp9HjjEj813Y9JGoqwOeOPWbnt4CupvIJbU1Mmu4a11MNDZ7Sg5u9a
X-TIMESTAMP2023-07-06T14:12:50+07:00
X-SIGNATUREqoda1fa417c72d6b91c257e01e54fac824
X-PARTNER-IDQoinSnap
X-EXTERNAL-ID41807553358950093184162180797837
CHANNEL-ID95221

Request Body

Field Name

Field Type

Mandatory

Field Description

additionalInfo

Object

O

Additional Information

additionalInfo.paymentFlagStatus

String(2)

M

Status for Payment Flag

00 (Success) 01 (Initiated) 02 (Paying) 03 (Pending) 04 (Refunded) 05 (Canceled) 06 (Failed) 07 (Not found) 08 (Expiry) 09 (Rejected)

customerNo

String(20)

O

Customer Number

paidAmount

Object

M

Amount paid for this transaction

paidAmount.currency

String

M

Transaction currency

paidAmount.value

String

M

Transaction value

partnerServiceId

String(8)

M

Partner Service ID

paymentRequestId

String

C

Payment Request ID

referenceNo

String

M

Payment auth code generated by Qoinhub

trxDateTime

Datetime

M

Transaction datetime

trxId

String

M

Transaction ID

virtualAccountEmail

String(255)

M

The customer email

virtualAccountName

String(255)

M

The customer name

virtualAccountNo

String(28)

M

Virtual account number

virtualAccountPhone

String(30)

M

The customer phonen umber

  {
    "additionalInfo": {
      "paymentFlagStatus": "00"
    },
    "customerNo": "",
    "paidAmount": {
      "currency": "IDR",
      "value": "12346678.00"
    },
    "partnerServiceId": "  088899",
    "paymentRequestId": "",
    "referenceNo": "abcdefgh0017",
    "trxDateTime": "2024-08-23T07:44:11+07:00",
    "trxId": "abcdefgh0017",
    "virtualAccountEmail": "[email protected]",
    "virtualAccountName": "Jokul Doe ",
    "virtualAccountNo": "7509240700664378",
    "virtualAccountPhone": "6281828384858"
  }

Response Body

Field NameField TypeMandatoryField Description
responseCodeString(7)MStatus code of transaction charge result
responseMessageString(150)MDescription of transaction charge result.
virtualAccountDataObjectMObject Virtual Account Data
virtualAccountData.partnerServiceIdString(8)MPartner Service Id from Create VA
virtualAccountData.customerNoString(29)MCustomer Number from Create VA
virtualAccountData.virtualAccountNoString(28)MVirtual account number for the transaction
virtualAccountData.trxDateTimeDate(25)MTransaction Date Time
virtualAccountData.trxIdString(64)MTransaction ID
{
    "responseMessage": "Successful",
    "responseCode": "2002500"
}

List Response Code

Response CodeHTTP StatusDescription
2002500200Successful
4002501400Invalid Field Format {field name}
4002502400Invalid Mandatory Field {field name}
4012500401Unauthorized. [Reason]
4012501401Invalid Token (B2B)
4042501404Transaction Not Found
4042512404Invalid Bill/Virtual Account [Reason]
4042513404Invalid Amount
4092500409Conflict
5002500500General Error