Create Payin Order
API EndPoint
POST baseUrl
+ /api/payIn
Request Parameters
Parameter | Required | Type | Description | Example |
---|---|---|---|---|
currency | Y | string(32) | Currency code | PHP |
payType | Y | int | Pay product type | Payin PayType Enum |
amount | Y | decimal(20,2) | Amount | 100-50000 |
reusableStatus | Y | boolean | Multiple payments | Currently it can only be false |
mchOrderNo | Y | string(32) | Merchant order number | |
expireTime | Y | long | Expiration time | Expiration time, Some payment products support |
notifyUrl | Y | string(250) | Webhooks url | |
nonceStr | Y | string(32) | Random string | |
remark | Y | string(32) | Remark | Please use English characters |
realName | Y | string(32) | Name of the payee | firstName-middleName-lastName |
payerAddress | Y | string(256) | Payee address | province-city-line1 |
phone | Y | string(32) | Payee phone | 09123456789 |
idType | Y | string(32) | Payee IdType | Payer ID Type |
idCard | Y | string(32) | Payee Number | |
email | Y | string(64) | User email | example@maildomain.com |
INFO
Please use - to connect firstName, middleName, and lastName of realName. If there is no middleName, an empty string can be used instead.
INFO
Note that cashier collection only supports single repayment and fixed amount repayment products. If you need to use RefNo (BillPayments) and BankTransfer, please move to payin interface .
TIP
Please note that when you choose to use the e-wallet payment method, we will return to the payment landing page of the channel. The channel may choose to display the QR code or directly launch the APP payment based on the user's device environment. If you use the APP embedded webview technology solution to render the page, please pay attention to the logic of compatible processing URL SCHEME to launch the App payment.
Request Example
curl -L 'baseUrl/api/payIn' \
-H 'MerchantId: 1002001' \
-H 'Sign: A6FC73F7D22EC8B4A064C8FFCC592CBF' \
-H 'Content-Type: application/json' \
-d '{"realName":"Reza Wijaya","amount":"20000.00","reusableStatus":false,"payType":"43","expireTime":3600,"mchOrderNo":"1386556787811426305","notifyUrl":"https://merchant.com/webhooks/payin","currency":"IDR","remark":"Electronic Cigarettes","nonceStr":"16a5a70f43384134bfae33acc77132e0"}'
2
3
4
5
Response Parameters
Parameter | Type | Description |
---|---|---|
merchantId | long | Merchant id |
mchOrderNo | string(32) | Merchant order number |
orderNo | string(32) | Platform order number |
amount | decimal(20,0) | Amount |
orderFee | decimal(20,0) | Fee |
payCode | string(32) | payCode |
biller | string(32) | Receiving institution, used when receiving payment using refNo/bankVa |
payUrl | string(250) | Payment information display page/payment jump URL |
Response Example
{
"msg": "SUCCESS",
"code": 200,
"data": {
"merchantId": "1002001",
"mchOrderNo": "1386556787811426305",
"orderNo": "PAYIN8551844049125523456",
"payCode": "RN123456",
"payUrl": "https://gcash.com/pay?bizNo=20241202111212800110166154827",
"biller": "Gcash",
"amount": "20000",
"orderFee": "1700"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"msg": "Payin_Order_Error",
"code": 500
}
2
3
4
TIP
Please use the payCode
, biller
, payUrl
and other fields according to the actual selected PayType Enumeration. If you don't want to render the display information yourself, Cashy provides a display page, and merchants can use the payUrl
field to jump directly to the page to display payment information for users. See the table below for the specific support list.
payType value | Payment product name | payCode | payUrl | biller |
---|---|---|---|---|
401 | QRPH_STATIC | Original QR code text | Display page provided by Cashy | N/A |
402 | QRPH_DYNAMIC | Original QR code text | Display page provided by Cashy | N/A |
403 | BANK_TRANSFER_INSTA | Bank VA account number | Display page provided by Cashy | Payee |
404 | BANK_TRANSFER_PESONET | Bank VA account number | Display page provided by Cashy | Payee |
410 | RefNo (Bill Payment) | Repayment code | Display page provided by Cashy | Payee, you need to inform the cashier when using it offline |
431 | GCASH_WEB_ONLINE | N/A | Payment URL | N/A |
432 | PAYMAYA_WEB_ONLINE | N/A | Payment URL | N/A |
433 | COINS_WEB_ONLINE | N/A | Payment URL | N/A |
434 | GRABPAY_WEB_ONLINE | N/A | Payment URL | N/A |
435 | BPIA_WEB_ONLINE | N/A | Payment URL | N/A |
436 | UBPB_WEB_ONLINE | N/A | Payment URL | N/A |
Query Payin Order
API EndPoint
POST baseUrl
+ /api/payInQuery
Request Parameters
Parameter | Required | Type | Example | Description |
---|---|---|---|---|
mchOrderNo | N | string(32) | 1386556575370063873 | Merchant order number |
orderNo | N | string(32) | PAYIN8551843837024997376 | Platform order number |
nonceStr | Y | string(32) | 9459931608 | Random string |
TIP
We recommend using orderNo (platform order number) first. At least one of the platform order number and the merchant order number must be passed.
Request Example
curl -L 'baseUrl/api/payInQuery' \
-H 'MerchantId: 1002001' \
-H 'Sign: A6FC73F7D22EC8B4A064C8FFCC592CBF' \
-H 'Content-Type: application/json' \
-d '{"mchOrderNo":"1386556575370063873","nonceStr":"9459931608","orderNo":"PAYIN8551843837024997376"}'
2
3
4
5
Response Parameters
Parameter | Type | Description |
---|---|---|
merchantId | int | Merchant id |
mchOrderNo | string(32) | Merchant order number |
orderNo | string(32) | Platform order number |
channelOrderNo | string(32) | Channel order number |
payType | string(32) | Payin PayType Enum |
payCode | string(32) | Payment Code |
payUrl | string(250) | Payment url |
amount | decimal(20,0) | Amount |
fee | decimal(20,4) | Fee |
orderStatus | string(32) | Payin Order Status Enum |
completionTime | yyyy-MM-dd HH:mm:ss | Completion time |
Response Example
{
"msg": "SUCCESS",
"code": 200,
"data": {
"merchantId": "1002001",
"mchOrderNo": "1386556575370063873",
"orderNo": "PAYIN8551843837024997376",
"payType": "43",
"payCode": "",
"payUrl": "https://m.dana.id/link/pay?bizNo=202412021112128001101660361270",
"payDeskUrl": "https://idpaydesk2.brcashypro.com/views/pay.html?PAYIN8551843837024997376",
"amount": "20000",
"fee": "1700",
"orderStatus": "PAYING",
"completionTime": null,
"nonceStr": null
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"msg": "SUCCESS",
"code": 200,
"data": {
"merchantId": "1002001",
"mchOrderNo": "1386556575370063873",
"orderNo": "PAYIN8551843837024997376",
"payType": "43",
"payCode": "",
"payUrl": "https://m.dana.id/link/pay?bizNo=202412021112128001101660361270",
"payDeskUrl": "https://idpaydesk2.brcashypro.com/views/pay.html?PAYIN8551843837024997376",
"amount": "20000",
"fee": "1700",
"orderStatus": "SUCCESS",
"completionTime": "2024-12-02 15:40:50",
"nonceStr": null
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Async Webhook Notification
The webhooks url is provided by the merchant
POST Merchant NotifyUrl
Webhook Request Parameters
Parameter | Type | Description |
---|---|---|
merchantId | int | Merchant id |
mchOrderNo | string(32) | Merchant order number |
orderNo | string(32) | Platform order number |
amount | decimal(20,2) | Amount |
fee | decimal(20,4) | Fee |
orderStatus | string(32) | Order status |
payUrl | string(32) | Payment url |
payCode | string(32) | Payment VA/QRCODE |
payType | string(32) | Pay product type |
completionTime | yyyy-MM-dd HH:mm:ss | Completion time |
nonceStr | string(32) | Random string |
Webhook Request Example
curl -L 'merchant.com/webhooks/payin' \
-H 'MerchantId: 1002001' \
-H 'Sign: A6FC73F7D22EC8B4A064C8FFCC592CBF' \
-H 'Content-Type: application/json' \
-d '{"amount":20000.00,"completionTime":"2024-12-02 12:07:06","fee":2500.0000,"mchOrderNo":"1386503284355244033","merchantId":"1002001","nonceStr":"1733116026894","orderNo":"PAYIN8551790545658687488","orderStatus":"SUCCESS","payCode":"OR.GPNQR..INOPROID_BS","payType":"41","payUrl":"https://payurl.com"}'
2
3
4
5
{
"amount": 20000.0,
"completionTime": "2024-12-02 12:07:06",
"fee": 2500.0,
"mchOrderNo": "1386503284355244033",
"merchantId": "1002001",
"nonceStr": "1733116026894",
"orderNo": "PAYIN8551790545658687488",
"orderStatus": "SUCCESS",
"payCode": "OR.GPNQR..INOPROID_BS",
"payType": "41",
"payUrl": "https://payurl.com"
}
2
3
4
5
6
7
8
9
10
11
12
13
{
"amount": 20000.0,
"completionTime": "2024-12-02 12:07:06",
"fee": 2500.0,
"mchOrderNo": "1386503284355244033",
"merchantId": "1002001",
"nonceStr": "1733116026894",
"orderNo": "PAYIN8551790545658687488",
"orderStatus": "FAIL",
"payCode": "OR.GPNQR..INOPROID_BS",
"payType": "41",
"payUrl": "https://payurl.com"
}
2
3
4
5
6
7
8
9
10
11
12
13
TIP
When the webhooks response HTTP status code is 200, 301 or 302, we believe that the merchant has successfully received and processed the callback. For other statuses, we believe that the merchant has failed to process the callback.
After the webhooks fails, it will be retried in 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 minutes
, and the webhooks will be retried 10 times in total