Integeration Guide
Overview
This service provides a payment page to the merchant’s system after a checkout transaction. The merchant requests a payment link from Cash In, and the payment page is displayed to the merchant’s customer. After the customer completes the payment, Cash In will notify the merchant that the payment has been successfully processed. A detailed explanation of the process flow is provided in the Sequence Diagram:

Backend Integration Process
To utilize the checkout page, the merchant must implement the following APIs:
- API Request URL Checkout Page
- API Check Status Payment
- API Notify for Acknowledge Payment
API Request URL Checkout Page
-
The parameters provided by Cash In for This integration are:
- clientId
- secretKey
-
URL
Sandboxhttps://sandbox-api.cashin.co.id/pg/fo/paymentProductionhttps://api.cashin.co.id/pg/fo/paymentRelative path url for signature/payment -
Method: POST
-
Content Type: application/json
-
Request Header:
No Name Type Length Required Description Example 1 X-CLIENT-ID String 36 Mandatory Identifier id client generated by Cash In CID12345678910 2 X-REQUEST-ID String 36 Mandatory Unique Identifier request must be unique each request 3fa85f64-5717-4562-b3fc-2c963f66afa6 3 X-TIMESTAMP String 25 Mandatory Transaction date format in YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time) 2024-11-04T10:00:00+07:00 4 X-SIGNATURE String Variable Mandatory Signature generated using Symmetric Method -
Request Body:
No Name Type Length Required Description Example 1 amount Number Mandatory Identifier id client CID12345678910 2 trxNo String 64 Mandatory Unique Identifier request must be unique each request 3fa85f64-5717-4562-b3fc-2c963f66afa6 3 duration Number Mandatory Duration expired for checkout page in minutes 4 successCallbackUrl String 255 Mandatory Page redirect of success payment in checkout page 5 cancelCallbackUrl String 255 Mandatory Page redirect of cancel or back in checkout page 6 paymentChannel String 50 String for directly select payment channel, if value not blank or null then result url checkout page direct to specific payment channel. value available :
- QRIS
- BANK_TRANSFER
QRIS 7 customer JSON Object Mandatory 8 customer.id String 50 Mandatory Customer id of merchant system 9 customer.phoneNumber String 16 Mandatory Customer phone of merchant system -
Response:
No Name Type Length Required Description Example 1 message String 20 Mandatory Message response 2 data JSON Object Mandatory 3 data.paymentToken String 150 Mandatory Token for Checkout page access 4 data.paymentUrl String 255 Mandatory URL for open Checkout Page Example Request - API Request URL Checkout Pagecurl --location --request POST 'https://sandbox-api.cashin.co.id/pg/fo/payment' \
--header 'X-CLIENT-ID: CID1234567890' \
--header 'X-REQUEST-ID: 3fa85f64-5717-4562-b3fc-2c963f66afa6' \
--header 'X-TIMESTAMP: 2024-11-04T10:00:00+07:00' \
--header 'X-SIGNATURE: 1iND8TUKOnGvH4TIFsQB5cCvtYyQKvJrmdpqjgQaLLLiHXdmWsVX8SAnmdq7dWWeKtfl1SKovegk9nwCmjXFHg==' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 1000,
"trxNo": "TRX-MERCHANT-0001",
"duration": 30,
"successCallbackUrl": "https://tes-url-merchant.com/success",
"cancelCallbackUrl": "https://tes-url-merchant.com/cancel",
“paymentChannel” : “QRIS”,
"customer": {
"id": "CUSTOMER-1",
"phoneNumber": "082232232231111"
}
}'Example Response - API Request URL Checkout Page{
"paymentToken": "Y2ExMTRjNjAtMzBjNy00MDA5LThiYjctOWI2NTI2Yzg0OGI3XzAxOTJmNTljLWM1MTMtNzQ0Mi04MmRmLTM5ZTYzMzQ1NGE4OV8yMDI0LTExLTExVDAzOjU5OjQ2LjQ5MzY2NjQ5OVo=",
"paymentUrl": https://dev-checkout.cashin.co.id/payment/Y2ExMTRjNjAtMzBjNy00MDA5LThiYjctOWI2NTI2Yzg0OGI3XzAxOTJmNTljLWM1MTMtNzQ0Mi04MmRmLTM5ZTYzMzQ1NGE4OV8yMDI0LTExLTExVDAzOjU5OjQ2LjQ5MzY2NjQ5OVo="
}
API Status Payment (Checkout Page)
-
The parameters provided by Cash In for This integration are:
- clientId
- publicKey
-
URL :
Sandboxhttps://sandbox-api.cashin.co.id/pg/fo/payment/statusProductionhttps://api.cashin.co.id/pg/fo/payment/statusRelative path url for signature/payment/status -
Method: POST
-
Content Type: application/json
-
Request Header:
No Name Type Length Required Description Example 1 X-CLIENT-ID String 36 Mandatory Identifier id client generated by Cash In CID12345678910 2 X-REQUEST-ID String 36 Mandatory Unique Identifier request must be unique each request 3fa85f64-5717-4562-b3fc-2c963f66afa6 3 X-TIMESTAMP 25 Mandatory Transaction date format in YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time) 4 X-SIGNATURE String Mandatory Signature generated using Symmetric Method -
Request Body:
No Name Type Length Required Description Example 1 trxNo String 20 Mandatory Transaction number of merchant TRX001 -
Response:
No Name Type Length Required Description Example 1 message String 20 Mandatory Message response Sucessfull 2 data JSON Object Mandatory 3 data.trxNo JSON Object 150 Mandatory Transaction Number identifier of Merchant TRX001 4 data.status JSON Object 30 Mandatory Status payment :
1. SUCCESS (Success)
2. OPEN (Ready to be paid)
3. FAILED (Failed)SUCCESS 5 data.paymentMethod String 30 Mandatory Payment method QRIS 6 data.referenceNo String 40 Mandatory Transaction Number identifier of Cash In PAY123 7 data.amount Number Mandatory Amount transaction 4000.00 Example Request - Status Paymentcurl --location --request POST 'https://sandbox-api.cashin.co.id/pg/fo/payment/status' \
--header 'X-CLIENT-ID: CID173701069947375062' \
--header 'X-REQUEST-ID: 123' \
--header 'X-TIMESTAMP: 2025-04-11T10:42:53.352+07:00' \
--header 'X-SIGNATURE: 2LxrHCEHWj/j7rE2ZNMEs7sq7Nsd0KPkH8J6ZucPTlM=' \
--header 'Content-Type: application/json' \
--data-raw '{
"trxNo": " TRX001"
}'Example Response - Status Payment{
"message": "Successful",
"data": {
"trxNo": "TRX001",
"status": "SUCCESS",
"paymentMethod": "QRIS ",
"referenceNo": "PAY123",
"amount": 4000.00
}
}
API Acknowledge Payment (Notify Callback)
QRIS & Direct Debit (Snap Api Version)
-
The parameters provided by Cash In for This integration are:
- clientId
- publicKey
-
URL :
https://{your_domain}/v1.0/debit/notifyRelative path url for signaturehttps://{your_domain}/v1.0/debit/notify -
Method: POST
-
Content Type: application/json
-
Request Header:
No Name Type Length Required Description Example 1 X-PARTNER-ID String 36 Mandatory Identifier id client generated by Cash In CID12345678910 2 X-EXTERNAL-ID String 36 Mandatory Unique Identifier request must be unique each request 3fa85f64-5717-4562-b3fc-2c963f66afa6 3 X-TIMESTAMP 25 Mandatory Transaction date format in YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time) 4 X-SIGNATURE String Mandatory Signature generated using Asymmetric Method 5 CHANNEL -ID String Mandatory -
Request Body:
No Name Type Length Required Description Example 1 originalPartnerReferenceNo String 64 Mandatory Transaction identifier on Cash In System CID12345678910 2 originalReferenceNo String 64 Mandatory Transaction identifier on partner (merchant) system 3fa85f64-5717-4562-b3fc-2c963f66afa6 3 originalExternalId Number 36 Optional Unique Identifier request must be unique each request 4 latestTransactionStatus String 2 Mandatory Category code for the status of the payment. The values include:
• 00 = Success, the payment has been paid
• 05 = Cancelled, the payment has been closed because it is expired5 transactionStatusDesc String 50 Mandatory description of transaction status 6 amount JSON Object Mandatory 7 amount.value String Mandatory Amount Value 8 amount.currency String 25 Mandatory Amount Currency 9 createdTime String 25 Mandatory Transaction created time format in YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time) 10 finishedTime String 25 Mandatory Transaction finished time format in YYYY-MM-DDTHH:mm:ss+07:00. Time must be in GMT+7 (Jakarta time) -
Response:
No Name Type Length Required Description Example 1 responseCode String 7 Mandatory Response Code 2 responseMessage String 150 Mandatory Response Message Example Request - API Notify for Acknowledge Paymentcurl --location --request POST 'https://{your_domain}/v1.0/debit/notify \
--header 'X-PARTNER-ID: CID17304190397339244f' \
--header 'X-EXTERNAL-ID: 3fa85f64-5717-4562-b3fc-2c963f66afa6' \
--header 'X-TIMESTAMP: 2024-11-04T10:00:00+07:00' \
--header 'X-SIGNATURE: 1iND8TUKOnGvH4TIFsQB5cCvtYyQKvJrmdpqjgQaLLLiHXdmWsVX8SAnmdq7dWWeKtfl1SKovegk9nwCmjXFHg==' \
--header 'CHANNEL-ID: 9552'\
--header 'Content-Type: application/json' \
--data-raw '{
"originalPartnerReferenceNo": "PAY12345678910",
"originalReferenceNo": "TRX-MERCHANT-0001",
“orgiginalExternalId” : “123232144”,
"latestTransactionStatus": “00”,
“latestTransactionStatusDec”: “Success”,
"amount": {
“value”: 1000,
“currency”: “IDR”
},
"createdTime": "2024-11-04T10:00:00+07:00”,
"finishedTime": "2024-11-04T10:00:00+07:00"
}'Example Response - API Notify for Acknowledge Payment{
"responseCode": “2005600”,
"responseMessage": "Successful”
}