Skip to main content

Submit a saved disbursement order for approval

POST
URLhttps://open-api.tingee.vn/v1/direct-link/process-transaction

Submit a saved disbursement order for approval

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 Maker role.
actionTypestring✓Disbursement order type
- INTERNAL_TRANSFER: Domestic transfer
- SALARY: Salary payment
- BILL_PAYMENT: Bill payment (payment list)
transactionIdsarray✓List of transaction IDs (in draft status INIT) to submit for approval.
- INTERNAL_TRANSFER: the records[].transactionId value returned when you Create a disbursement order with action = INIT
- SALARY / BILL_PAYMENT: the data.transactionId value (batch-level transaction ID)

Code samples​

curl --location --request POST 'https://open-api.tingee.vn/v1/direct-link/process-transaction' \
--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 result of the approval submission.
data.successfulTransactionsarrayList of transactions successfully submitted for approval (each element has transactionId, the transaction ID). Usually empty when requireAuth = true — the final result is returned at the OTP confirmation step.
data.failedTransactionsarrayList of transactions that failed to be submitted for approval.
data.requireAuthbooleanFlag indicating whether additional authentication is required (e.g. SmartOTP).
data.transAuthobjectAdditional authentication information (only set when requireAuth = true, otherwise null).
data.confirmIdstringConfirmation key. When requireAuth = true, pass this value together with the OTP to the Confirm disbursement order API to complete the submission.
data.confirmUrlstringURL for the user to confirm the transaction (if returned by BIDV).

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 maker (Maker) has expired or has not been grantedCall Get the authorization URL with role = Maker to re-authorize, then submit for approval again.
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.