Appearance
Payment SNAP
Endpoint to initiate payment (with or without OTP) using a registered Direct Debit Card.
| Name | API Direct Debit Payment |
|---|---|
| Service Code | 54 |
| Path | /v1.0/debit/payment-host-to-host |
| Version | 1.0 |
| HTTP Method | POST |
| Type Format | JSON |
Request Body E-Wallet and Direct Debit
Details
| Field | Type | Mandatory | Length | Description |
|---|---|---|---|---|
| partnerReferenceNo | String | M | 64 | Transaction identifier on service consumer system |
| bankCardToken | String | C | 560 | Token for Payment. Only Mandatory For Direct Debit BRI. For E-Wallet such as DANA, OVO, LinkAja this is not necessary. |
| chargeToken | String | C | 50 | string code for verification OTP. Fill with "null". For E-Wallet such as DANA, OVO, LinkAja this is not necessary. |
| amount | Object | M | ||
| amount.value | String (ISO4217) | M | 16,2 | Net amount of the transaction. If it's IDR then the value includes 2 decimal digits. e.g. IDR 10.000,- will be placed with 10000.00. Amount refers to amount validation |
| amount.currency | String | M | 3 | Currency. Possible value: IDR |
| urlParams | Array of Object | O | ||
| urlParams.url | string | M | 512 | The URL |
| urlParams.type | string | M | 32 | URL Type. Possible value: PAY_NOTIFY / PAY_RETURN. PAY_NOTIFY for notification url (Required), PAY_RETURN for return url (Conditional (Required for DANA only)). |
| urlParams.isDeeplink | string | M | 1 | Whether the URL is a deep link URL or not. Possible value: N |
| pointOfInitiation | String | O | 20 | used for getting more info regarding the source of request of the user. Possible value: - Mobile App - Web App - Others |
| payOptionDetails | Array of Object | O | Payment option that will be used for this payment. Applicable only to BRI Direct Debit | |
| payOptionDetails.payMethod | String | C | 64 | Payment Method. Possible value: DEBIT_CARD, Required for BRI only |
| payOptionDetails.payOption | String | C | 64 | Payment option which shows the provider of this payment. Possible value: BRI. Required for BRI only |
| additionalInfo | Object | O | Additional information | |
| additionalInfo.isWithOtp | String | C | 5 | With OTP or Without OTP. Possible value: - Y: With OTP - N: Without OTP. Required for BRI only |
| additionalInfo.remarks | String | O | 64 | Transaction description |
| additionalInfo.billDetails | Array of Object | O | ||
| billDetails.billName | String | O | 20 | Bill Name |
| billDetails.billEmail | String | O | 50 | Bill Email |
| billDetails.billPhoneNumer | String | O | 30 | Bill Phone Number |
| additionalInfo.accountDetails | Object | C | Applicable only to E-Wallet transactions such as DANA, OVO, LinkAja | |
| additionalInfo.accountDetails.id | String | C | 50 | Payer's phone number, email user. Only required for OVO. |
| additionalInfo.accountDetails.idType | String | C | enum | PHONE, EMAIL, CASHTAG |
| additionalInfo.itemDetails | Array of Objects | O | Explain the items purchased Applicable only to E-Wallet transactions such as DANA, OVO, LinkAja | |
| additionalInfo.itemDetails.itemId | String | M | 25 | ID of product. Mandatory if item details is filled |
| additionalInfo.itemDetails.name | String | M | 100 | Name of product. Mandatory if item details is filled |
| additionalInfo.itemDetails.amount | Object | M | ||
| additionalInfo.itemDetails.amount.value | String | M | 16,2 | Price per unit. Mandatory if item details is filled. Accumulation amount should be match with original amount. |
| additionalInfo.itemDetails.amount.currency | String | M | 3 | Mandatory if item details is filled |
| additionalInfo.itemDetails.qty | Integer | M | 8 | Number of product units. Mandatory if item details is filled. Maximum 99999999 |
| additionalInfo.itemDetails.description | String | O | 255 | Description of product |
| additionalInfo.paymentCategory | String | O | 50 | Category of payment |
Example Request E-Wallet (DANA)
Details
sh
POST .../v1.0/debit/payment-host-to-host HTTP/1.2
Content-type: application/json
X-TIMESTAMP: 2020-12-23T07:44:11+07:00
X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
ORIGIN: www.hostname.com
X-PARTNER-ID: 82150823919040624621823174737537
X-EXTERNAL-ID: 41807553358950093184162180797837
CHANNEL-ID: 95221
{
"partnerReferenceNo": "2020102900000000000001",
"amount": {
"value": "12345678.00",
"currency": "IDR"
},
"urlParams": [
{
"url": "https://test1.bi.go.id/v1/test",
"type": "PAY_NOTIFY",
"isDeeplink": "N"
},
{
"url": "https://test2.bi.go.id/v1/test",
"type": "PAY_RETURN",
"isDeeplink": "N"
}
],
"validUpTo": "2020-12-23T07:44:11+07:00",
"pointOfInitiation": "Web App",
"additionalInfo": {
"remarks": "Dress Wanita Pink",
"accountDetails": {
"id": "08888999999",
"idType": "PHONE",
},
"billDetails": {
"billName": "John Doe",
"billEmail": "[email protected]",
"billPhoneNumber": "08888999999"
},
"itemDetails": [{
"itemId": "F001",
"name": "Dress",
"amount": {
"value": "12345678.00",
"currency": "IDR"
},
"qty": 1,
"description": "Dress Wanita Pink"
}],
"paymentCategory" : "Dress"
}
}Example Request with OTP (Direct Debit BRI)
Details
sh
curl --location 'https://api-stage.ifortepay.id/v1.0/debit/payment-host-to-host' \
--header 'X-TIMESTAMP: 2020-12-18T10:55:00+07:00' \
--header 'X-SIGNATURE: ZF9tnd42ngwP6eStSRY4dBQdGrzrq/ucryeRwOROdJ4o1L99w3baE47niPa+q9X2AzMbKNiTvMNxBYJ48lp1x4rXLGUTJ7K3su7tKXjUndAn9KGSjZFmvFxrZFllQv9mEh0BGYvLo9B+Z9mbAcHztCRJuU0VgIYWrAAD3VaefSSaP/LLdN0yLuGDJiDPeOr8gqEiQh8SDOnEhGo8a4URmwqQLr2nyqXQR+HcYAmyonXhCh/JJ/NQamYpuzrTUrmXw6PpHiQBpsAMEPqwRDaENJ0c0LJeTiNW2SSLwNn9+zE3kPt0w9SAh7a2lxJg/T+cLywGEVnoNExwJLmDcxrDhw==' \
--header 'X-Partner-Id: IFP2024078302' \
--header 'CHANNEL-ID: DD003' \
--header 'X-EXTERNAL-ID: 38258699010458' \
--header 'Content-Type: application/json' \
--data '{
"partnerReferenceNo": "QA-20240731-005",
"bankCardToken": "card_.eyJpYXQiOjE3MjE4OTM3NDQsImlzcyI6IkJhbmsgQlJJIC0gRENFIiwianRpIjoiZTcxZTUxNTUtMWRkZS00OWM1LWJiYmQtNjJlMjJmOGJmNzE0IiwicGFydG5lcklkIjoi77-9Iiwic2VydmljZU5hbWUiOiJERF9FWFRFUk5BTF9TRVJWSUNFIn0.TS9Mw1ZvxplurJAsONIbvSqgb3-QnupvvLeNWr_iklRgD_qazjqqIF2qFYZHD9eb1B2II_bKgmtcorrcOSthj4xj1PokCC5RhdKdOMmPW2hNkcyagMLCrmqNPf7QRz12WCCxJk8Z1gA1ey_YS4UQBL4qKhZr9qaXJwlhO_gyiVuQVTYMeqrI4v9Z_ZWXzQI05ySfQD46IzvD1wblewsKJbv5GUwxgGvB5SjVq2-iYkuMeBU1YF51fM6s5PtWrohtcTh3EjLiK_SPKo_To6iHnjg1gSxufnqNrr8_Cgr8d2vXwr_Yk2TaoVKSrnIV9muphaescrMYYJ6V6EPMCQu5jw",
"chargeToken": "null",
"additionalInfo": {
"isWithOtp": "Y",
"remarks": "Testing Remarks",
"billDetails": {
"billName": "Irham Raziqony",
"billEmail": "[email protected]",
"billPhoneNumber": "62xxxxxxxxxxxxx"
}
},
"amount": {
"currency": "IDR",
"value": "15000.00"
},
"pointOfInitiation": "Web app",
"payOptionDetails": [
{
"payOption": "BRI",
"payMethod": "DEBIT_CARD"
}
],
"urlParams": [
{
"type": "PAY_NOTIFY",
"isDeepLink": "N",
"url": "https://google1.com"
}
]
}'Example Request without OTP (Direct Debit BRI)
Details
sh
curl --location 'https://api-stage.ifortepay.id/v1.0/debit/payment-host-to-host' \
--header 'X-TIMESTAMP: 2020-12-18T10:55:00+07:00' \
--header 'X-SIGNATURE: lIXMYYeKUokauLbrmoBpS4V+HSk9QIKUN0V2jUsuBt/kjPidC+vQ/Ah1kEoCz0+XEuJ3wVucH+cMqRbpvTkkiK5VQfifPXm8Gyaem0WOtEc+j1Yuv600KWThPvnspxykWHxPYJzV/TeH8BywXyqefmo+8R5ehCFZZvKMtF8g2MqqxgiaKHmBjhPp5CgU0sTLSpx7V22E5ZmU+mzW/Pqp8DJO6IN0hSbXLHUwsEWjyhUrTD+1eyQXo8qcxis/VP2YTZUDXQrCMUKa2w6vGY/k78HmHZoPxzPfcBgmxEYCJfOlFoNATOAiDroF4mdYcE5hE8+sz7+qbiZ27ePtvHXDqQ==' \
--header 'X-Partner-Id: IFP2024078302' \
--header 'CHANNEL-ID: DD003' \
--header 'X-EXTERNAL-ID: 16144400187635' \
--header 'Content-Type: application/json' \
--data '{
"partnerReferenceNo": "QA-20240731-006",
"bankCardToken": "card_.eyJpYXQiOjE3MjE4OTM3NDQsImlzcyI6IkJhbmsgQlJJIC0gRENFIiwianRpIjoiZTcxZTUxNTUtMWRkZS00OWM1LWJiYmQtNjJlMjJmOGJmNzE0IiwicGFydG5lcklkIjoi77-9Iiwic2VydmljZU5hbWUiOiJERF9FWFRFUk5BTF9TRVJWSUNFIn0.TS9Mw1ZvxplurJAsONIbvSqgb3-QnupvvLeNWr_iklRgD_qazjqqIF2qFYZHD9eb1B2II_bKgmtcorrcOSthj4xj1PokCC5RhdKdOMmPW2hNkcyagMLCrmqNPf7QRz12WCCxJk8Z1gA1ey_YS4UQBL4qKhZr9qaXJwlhO_gyiVuQVTYMeqrI4v9Z_ZWXzQI05ySfQD46IzvD1wblewsKJbv5GUwxgGvB5SjVq2-iYkuMeBU1YF51fM6s5PtWrohtcTh3EjLiK_SPKo_To6iHnjg1gSxufnqNrr8_Cgr8d2vXwr_Yk2TaoVKSrnIV9muphaescrMYYJ6V6EPMCQu5jw",
"chargeToken": "null",
"additionalInfo": {
"isWithOtp": "N",
"remarks": "Testing Remarks",
"billDetails": {
"billName": "Irham Raziqony",
"billEmail": "[email protected]",
"billPhoneNumber": "62812912301239"
}
},
"amount": {
"currency": "IDR",
"value": "15000.00"
},
"pointOfInitiation": "Web app",
"payOptionDetails": [
{
"payOption": "BRI",
"payMethod": "DEBIT_CARD"
}
],
"urlParams": [
{
"type": "PAY_NOTIFY",
"isDeepLink": "N",
"url": "https://google1.com"
}
]
}'Response Body EWallet (DANA)
Details
| Parameter | Data Type | Mandatory | Length | Description |
|---|---|---|---|---|
| responseCode | String | M | 7 | Response code |
| responseMessage | String | M | 150 | Response description |
| referenceNo | String | M | 64 | Transaction identifier on service provider system. Must be filled upon successful transaction |
| partnerReferenceNo | String | M | 64 | Transaction identifier on service consumer system |
| appRedirectUrl | String | O | 2048 | Returns an URL scheme to PJP AIS payment page in native app. |
| webRedirectUrl | String | O | 2048 | Returns a universal link to PJP AIS payment page. Recommended if Client is unable to implement check for PJP AIS app. |
| additionalInfo | Object | O | Additional information | |
| additionalInfo.payOptionDetails | Array of Object | O | Payment option that will be used for this payment | |
| additionalInfo.payOptionDetails.payMethod | String | M | 64 | Payment Method. Possible value: WALLET |
| additionalInfo.payOptionDetails.payOption | String | M | 64 | Provider of this payment. Possible value: OVO, DANA, SHOPEEPAY, LINKAJA, VIRGO |
| additionalInfo.validUpTo | String | M | The time when the payment will be automatically expired. ISO 8601 | |
| additionalInfo.remarks | String | O | 64 | Transaction description |
Example Response E-Wallet (DANA)
Details
sh
Content-type: application/json
X-TIMESTAMP: 2020-12-23T07:44:16+07:00
{
"responseCode": "20054000",
"responseMessage": "Request has been processed successfully",
"referenceNo": "2020102977770000000009",
"partnerReferenceNo": "2020102900000000000001",
"appRedirectUrl": "https://pjsp.com/app?bizNo=REF993883&...",
"webRedirectUrl": "https://pjsp.com/universal?bizNo=REF993883&...",
"additionalInfo": {
"validUpTo": "2020-12-23T07:44:11+07:00",
"remarks": "Dress Wanita Pink"
}
}Response Body with OTP (Direct Debit BRI)
Details
| Field | Type | Mandatory | Length | Description |
|---|---|---|---|---|
| responseCode | String | M | 7 | Response code |
| responseMessage | String | M | 150 | Response description |
| referenceNo | String | M | 64 | Transaction identifier on service provider system. Must be filled upon successful transaction |
| partnerReferenceNo | String | O | 64 | Transaction identifier on service consumer system |
| additionalInfo | Object | O | Additional information | |
| additionalInfo.chargeToken | String (ISO4217) | M | 16,2 | string code for verification OTP |
| additionalInfo.remarks | String | O | 64 | Transaction description |
Example Response with OTP (Direct Debit BRI)
Details
sh
"additionalInfo": {
"chargeToken": "CHARGE_TIW6JE3N2MQAU7IG24G5XO5JBBC7ZKCH::0146",
"remarks": "Testing Remarks"
},
"partnerReferenceNo": "QA-20240731-005",
"referenceNo": "019106cd49f37da3908224ae6db2e800",
"responseCode": "2005400",
"responseMessage": "Successful"
}Response Body without OTP (Direct Debit BRI)
Details
| Field | Type | Mandatory | Length | Description |
|---|---|---|---|---|
| responseCode | String | M | 7 | Response code |
| responseMessage | String | M | 150 | Response description |
| referenceNo | String | M | 64 | Transaction identifier on service provider system. Must be filled upon successful transaction |
| partnerReferenceNo | String | O | 64 | Transaction identifier on service consumer system |
| additionalInfo | Object | O | Additional information | |
| additionalInfo.amount | String (ISO4217) | M | 16,2 | Net amount of the transaction. If it's IDR then value includes 2 decimal digits. e.g. IDR 10.000,- will be placed with 10000.00 |
| additionalInfo.currency | String | M | 3 | Currency |
| additionalInfo.remarks | String | O | 64 | Transaction description |
Sample Response without OTP (Direct Debit BRI)
Details
sh
"additionalInfo": {
"amount": "15200.00",
"currency": "IDR",
"remarks": "Testing Remarks"
},
"partnerReferenceNo": "QA-20240731-006",
"referenceNo": "019106ed8dc274f389e4fe704a1e3df8",
"responseCode": "2005400",
"responseMessage": "Successful"
}