Skip to main content

Approve payment order

POST
URLhttps://open-api.tingee.vn/v1/direct-link/approve-transfer

Approve a disbursement payment order (Checker)

Header Request​

HeaderRequiredDescription
Content-Type✓application/json
x-client-id✓Partner identifier issued by TINGEE.
x-signature✓HMAC SHA512 authentication signature.
x-request-timestamp✓Time the request is sent (format: yyyyMMddHHmmssSSS, UTC+7)

Body Parameter​

FieldTypeRequiredDescription
bankBinstring✓Bank BIN. Currently only 970418 (BIDV) is supported. The API uses the BIDV authorization session of the Checker role.
actionTypestring✓Disbursement order type
- INTERNAL_TRANSFER: Domestic transfer
- SALARY: Salary payment
- BILL_PAYMENT: Bill / statement payment
transactionIdsarray✓List of pending transaction IDs to approve (the id field in the Transaction inquiry result with inquiryType = PENDING_APPROVAL_LIST).

Code samples​

curl --location --request POST 'https://open-api.tingee.vn/v1/direct-link/approve-transfer' \
--header 'accept: application/json' \
--header 'x-client-id: YOUR_CLIENT_ID' \
--header 'x-request-timestamp: 20240509154004003' \
--header 'x-signature: YOUR_SIGNATURE' \
--header 'Content-Type: application/json' \
--data '{
"bankBin": "970418",
"actionType": "INTERNAL_TRANSFER",
"transactionIds": [
"PM0226061000074420"
]
}'

Sample Response​

{
"code": "00",
"message": "Success",
"data": {
"successfulTransactions": [],
"failedTransactions": [],
"requireAuth": true,
"transAuth": {
"authType": "SMARTOTP",
"expTime": 120,
"qrData": "OTkwMDVCMDUwMDMyMTc4MTE0MjI4NDkwNS1kYjdjZWU3NC1hNTdjLTQxMjItODljZi1jZmEyYWNjMDkyZjgwNjAwMDQ3OTczMjAwMDEzQklEVklCQU5LX1RSQU5TX09UUA=="
},
"confirmId": "TXNKEY_APPROVAL_25607354makerotv_a8993883-d5fe-4ced-a0c0-20cff5b5120b",
"confirmUrl": null
}
}
FieldTypeDescription
codestringResult code (00 = Success).
messagestringResponse message.
dataobjectObject containing the transaction approval result.
data.successfulTransactionsarrayTransactions approved successfully (raw result from BIDV; each item has a transactionId). Usually empty when requireAuth = true — the final result is returned at the OTP confirmation step.
data.failedTransactionsarrayTransactions whose approval failed.
data.requireAuthbooleanWhether additional authentication is required (e.g. SmartOTP).
data.transAuthobjectAdditional authentication details (only set when requireAuth = true, otherwise null).
data.confirmIdstringConfirmation key. When requireAuth = true, pass this value together with the OTP to the Confirm disbursement approval API to complete the approval.
data.confirmUrlstringURL where the user confirms the transaction (if BIDV returns it).
data.transactionobjectSummary of the approved batch order (only for SALARY / BILL_PAYMENT), including: id (transaction ID), originId, status, amount, currency, feeTotal, feeMethod, processDate, effectiveDate.

data.transAuth details (when requireAuth = true)​

FieldTypeDescription
authTypestringAuthentication method (e.g. SMARTOTP).
expTimenumberValidity period of the QR code (in seconds).
qrDatastringData string used to render the QR code image; scan it with the BIDV Direct app to get the SmartOTP.

Common error codes​

CodeDescriptionHow to handle
1077The BIDV authorization session of the approver (Checker) has expired or has not been grantedCall Get authorization URL with role = Checker to re-authorize, then resend the approval request.
1021The bank is not supported for this APICheck bankBin; this API only supports BIDV (970418).
90, 91, 92, 97Request authentication error (timestamp, client-id, signature)See System error codes.
OthersOther errorsSee Error codes.