Account Linking
There are 2 types of account Direct debit supports: Bank Account and Debit Card. Here are the steps to test your Direct Debit integration
INFO
Xendit supports BPI and Unionbank Philippines Direct Debit via Bank Account and BRI Direct Debit via Debit Card
Debit Card
INFO
Xendit supports BRI Direct Debit via Debit Card
Positive Scenarios
Follow these 2 simple steps to link debit card. After linking success, proceed to Payment Scenarios
1. Link Debit Card
Send a POST to `/linked_account_tokens/` with the following parameter values:
{
"customer_id": "any", // Create Customer ID first
"channel_code": "DC_BRI",
"properties": {
"account_mobile_number": "+62818555988", // any Indonesia number in E.164 format
"card_last_four": "8888",
"card_expiry": "06/24", // any future date
"account_email": "test.email@xendit.co" // customer email
}
}
Values for other parameters are arbitrary as long as they follow and consistent with validation rules. This should return a successful linked account token response.
2. Validate OTP
Send a POST to `/linked_account_tokens/{linked_account_token_id}/validate_otp` with valid id
and the following request payload:
{
"otp_code": "333000"
}
This should return a successful linked account token response. After linking success, proceed to Payment Scenarios
Negative Scenarios
There are couple of negative scenarios you will need to handle
Bank failed to deliver OTP to end-customer
Send a POST to `/linked_account_tokens/` with the following parameter values:
{
"customer_id": "any", // Create Customer ID first
"channel_code": "DC_BRI",
"properties": {
"account_mobile_number": "+62818555988", // any Indonesia number in E.164 format
"card_last_four": "0011",
"card_expiry": "06/24", // any future date
"account_email": "test.email@xendit.co" // customer email
}
}
Values for other parameters are arbitrary as long as they follow and consistent with validation rules. This should return an error: 400 OTP_DELIVERY_ERROR
Debit Card Blocked / Any Account Issue
Send a POST to `/linked_account_tokens/` with the following parameter values:
{
"customer_id": "any", // Create Customer ID first
"channel_code": "DC_BRI",
"properties": {
"account_mobile_number": "+62818555988", // any Indonesia number in E.164 format
"card_last_four": "0012",
"card_expiry": "06/24", // any future date,
"account_email": "test.email@xendit.co" // customer email
}
}
Values for other parameters are arbitrary as long as they follow and consistent with validation rules. This should return an error: 400 ACCOUNT_ACCESS_BLOCKED
OTP Expired
This request payload simulates OTP expired when user didn't enter the OTP on-time
{
"otp_code": "333001"
}
The API will response 400 EXPIRED_OTP_ERROR
Max OTP Attampts Reached
This request payload simulates scenario when maximum retry attempts has been reached
{
"otp_code": "333002"
}
The API will response 400 MAX_OTP_ATTEMPTS_ERROR
Invalid OTP
This request payload simulates scenario when user input invalid OTP
{
"otp_code": "333003" // or any 6 digits not 333000-333002
}
The API will response 400 INVALID_OTP_ERROR
Bank Account
INFO
Xendit supports BPI and Unionbank Direct Debit via Bank Account
Positive Scenarios
1. Initiate Link Bank Account
Send a POST to `/linked_account_tokens/` with the following parameter values:
{
"customer_id": "any", // Create Customer ID first
"channel_code": "BA_BPI",
"properties": {
"success_redirect_url": "https://company.co/success",
"failure_redirect_url": "https://company.co/failure",
"callback_url": "https://company.co/callback"
},
"metadata": {
"origin": "mobile_app"
}
}
Values for other parameters are arbitrary as long as they follow and consistent with validation rules. This should return a successful linked account token response. Use authorizer_url
for next step.
{
"id": "lat-aa620619-124f-41db-995b-66a52abe036a",
"customer_id": "7205eb90-ce35-436d-8fa1-3695ecc5889a",
"channel_code": "BA_BPI",
"authorizer_url": "https://link-web.xendit.co/auth/d88ede5dd016?state=",
"status": "PENDING",
"metadata": {
"origin": "mobile_app"
}
}
2. Authorize Bank Account
Use authorizer_url
from previous step and redirect users to the URL to authorize bank account access. A Money Bank login screen will appear. Input the following credentials to simulate successful authorization::
- Username:
91284
- Password:
strongpassword
Upon successful authorization, user will be redirected back to success_redirect_url
Negative Scenarios
User didn't authorize bank account
To simulate an user didn't authorize their bank account, create a new initiate linking request and input these credentials in the Money Bank login screen (authorizer_url
)
- Username:
28284
- Password:
badpassword
Upon failed authorization, user will be redirected back to failure_redirect_url
Need more assistance? Feel free to reach out to our Customer Success or your Indonesia or Philippines Xendit Sales for further assistance.
Last Updated on 2023-05-22