Welcome to Xendit’s latest documentation. For legacy content, access the previous version here.

Routing payment channels

Prev Next

Our Payments API is designed for flexible and modular integration. By handling 2 of our key parameters, channel_code and channel_properties, you will be able to switch between payment channels easily. If an integration is implemented well, you might be able to configure new payment channels to go live without code.

  • Channel code: a parameter used to inform Xendit of the intended payment route for payment processing.

  • Channel properties: a parameter that contains information required by the payment route provider to initiate payment processing.

Lookup table for channel code and channel properties parameters

Click on each row to see full details of each scenario.

Channel properties parameter definitions

Channel properties fields

Definitions

Example

success_return_url

string min length: 11, max length: 255, must be HTTPS

Merchant-defined URL used for end user redirection upon successful payment on the payment provider hosted page.

"channel_properties" : {
  "success_return_url" : "https://www.xendit.co/success",
  "failure_return_url" : "https://www.xendit.co/failure"
}

failure_return_url

string min length: 11, max length: 255, must be HTTPS

Merchant-defined URL used for end user redirection upon failed payment on the payment provider hosted page.

"channel_properties" : {
  "success_return_url" : "https://www.xendit.co/success",
  "failure_return_url" : "https://www.xendit.co/failure"
}

cancel_return_url

string min length: 11, max length: 255, must be HTTPS

Merchant-defined URL used for end user redirection upon the end user triggering cancellation on the payment provider hosted page.  

"channel_properties" : {
  "success_return_url" : "https://www.xendit.co/success",
  "failure_return_url" : "https://www.xendit.co/failure",
  "cancel_return_url" : "https://www.xendit.co/cancel"
}

pending_return_url

string min length: 11, max length: 255, must be HTTPS

Merchant-defined URL used for end user redirection upon the end user completing payment steps on the payment provider hosted page but final payment status is yet to be confirmed.

"channel_properties" : {
  "success_return_url" : "https://www.xendit.co/success",
  "failure_return_url" : "https://www.xendit.co/failure",
  "pending_return_url" : "https://www.xendit.co/pending"
}

expires_at

string ISO 8601 Timestamp

Timestamp set for the payment request to expire.

"channel_properties" : {
  "expires_at" : "2024-06-01T11:00:00Z"
}

payer_name

string

Name of the payer displayed when attempting payment.

For Over-The-Counter payments, counter staff might validate the payer’s name in person against the value in this field.

"channel_properties" : {
  "expires_at" : "2024-06-01T11:00:00Z",
  "payer_name" : "Dlon Mump"
}

display_name

string

Name that is displayed when the end user is going through the payment flow.

"channel_properties" : {
  "expires_at" : "2024-06-01T11:00:00Z",
  "display_name" : "Dlon Mump"
}

payment_code

string min length: 6, max length: 6

Merchant-defined payment code number for over the counter payments.

"channel_properties" : {
  "expires_at" : "2024-06-01T11:00:00Z",
  "payer_name" : "Dlon Mump",
  "payment_code" : "A1B2C3"
}

virtual_account_number

string

Merchant-defined Virtual Account number for bank transfers.

"channel_properties" : {
  "expires_at" : "2024-06-01T11:00:00Z",
  "payer_name" : "Dlon Mump",
  "virtual_account_number" : "88696969696988"
}

suggested_amount

number

Amount prompted when attempting payment.

"channel_properties" : {
  "expires_at" : "2024-06-01T11:00:00Z",
  "payer_name" : "Dlon Mump",
  "virtual_account_number" : "88696969696988",
  "suggested_amount" : 1991993
}

cashtag

string

Payer’s cashtag as registered with the payment provider.

"channel_properties" : {
  "cash_tag" : "iuriuriur"
}

card_details → cvn

string min length: 3, max length: 4

Card CVN value. This field can only be used directly on our API endpoint by merchants with a valid PCI DSS license. Please refer to Cards SDK integration for non PCI certified merchants.

"channel_properties": {
  "card_details": {
    "cvn": "246",
    "card_number": "2222444466668888",
    "expiry_year": "2027",
    "expiry_month": "12",
    "cardholder_name": "John Doe"
  },
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

card_details → card_number

string min length: 15, max length: 19

Card PAN value. This field can only be used directly on our API endpoint by merchants with a valid PCI DSS license. Please refer to Cards SDK integration for non PCI certified merchants.

"channel_properties": {
  "card_details": {
    "cvn": "246",
    "card_number": "2222444466668888",
    "expiry_year": "2027",
    "expiry_month": "12",
    "cardholder_name": "John Doe"
  },
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

card_details → expiry_year

string min length: 4, max length: 4

Card expiry year value. This field can only be used directly on our API endpoint by merchants with a valid PCI DSS license. Please refer to Cards SDK integration for non PCI certified merchants.

"channel_properties": {
  "card_details": {
    "cvn": "246",
    "card_number": "2222444466668888",
    "expiry_year": "2027",
    "expiry_month": "12",
    "cardholder_name": "John Doe"
  },
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

card_details → expiry_month

string min length: 2, max length: 2

Card expiry month value. This field can only be used by merchants with a valid PCI DSS license. Please refer to Cards SDK integration for non PCI certified merchants.

"channel_properties": {
  "card_details": {
    "cvn": "246",
    "card_number": "2222444466668888",
    "expiry_year": "2027",
    "expiry_month": "12",
    "cardholder_name": "John Doe"
  },
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

card_details → cardholder_name

string min length: 1, max length: 50

Card holder’s name as displayed on card. This field can only be used by merchants with a valid PCI DSS license. Please refer to Cards SDK integration for non PCI certified merchants.

"channel_properties": {
  "card_details": {
    "cvn": "246",
    "card_number": "2222444466668888",
    "expiry_year": "2027",
    "expiry_month": "12",
    "cardholder_name": "John Doe"
  },
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

card_details → cardholder_email

string min length: 5, max length: 254

Card holder’s email as registered with their card issuer. This field can only be used by merchants with a valid PCI DSS license. Please refer to Cards SDK integration for non PCI certified merchants.

"channel_properties": {
  "card_details": {
    "cvn": "246",
    "card_number": "2222444466668888",
    "expiry_year": "2027",
    "expiry_month": "12",
    "cardholder_name": "John Doe"
  },
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

card_details → cardholder_phone_number

string min length: 1, max length: 15

Card holder’s phone number as registered with their card issuer. This field can only be used by merchants with a valid PCI DSS license. Please refer to Cards SDK integration for non PCI certified merchants.

"channel_properties": {
  "card_details": {
    "cvn": "246",
    "card_number": "2222444466668888",
    "expiry_year": "2027",
    "expiry_month": "12",
    "cardholder_name": "John Doe"
  },
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

mid_label

string

MID label indicating the specific merchant credentials to be used when processing the request. Do ensure that same MID label is used for related set of transactions.

"channel_properties": {
  "mid_label": "mid_label_acquirer_1",
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

skip_three_ds

boolean

Parameter to toggle between triggering 3DS for the transaction or not. This parameter is a restricted feature in Xendit. Please ensure that access have been granted before proceeding.

"channel_properties": {
  "skip_three_ds": false,
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

card_on_file_type

string

Available values:

CUSTOMER_UNSCHEDULED, MERCHANT_UNSCHEDULED, RECURRING

MID label indicating the specific merchant credentials to be used when processing the request. Do ensure that same MID label is used for related set of transactions.

"channel_properties": {
  "card_on_file_type": "MERCHANT_UNSCHEDULED",
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

billing_information

object

Card holder’s billing information as registered with their card issuer. This information will be used for address verification during processing.

This information should be included for US, CA, UK cards for optimal success rates.

city: 2-letter ISO 3166-2 country code

country: min length: 1, max length: 255

postal_code: min length: 1, max length: 255

street_line1: min length: 1, max length: 255

street_line2: min length: 1, max length: 255

province_state: min length: 1, max length: 255

"channel_properties": {
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success",
  "billing_information": {
    "city": "Austin",
    "country": "US",
    "postal_code": "78769",
    "street_line1": "Texas Chain Suites",
    "street_line2": "21-37",
    "province_state": "Texas"
  }
}

statement_descriptor

string min length: 5, max length: 22, alphanumeric

Description that will show up on the end user’s card statement. This feature is dependent on whether the individual’s card issuer has implemented the field.  

"channel_properties": {
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success",
  "statement_descriptor": "Goods & Services"
}

recurring_configuration → recurring_expiry

string min length: 10, max length: 10

Expiry date of the recurring schedule.

"channel_properties": {
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success",
  "recurring_configuration": {
    "recurring_expiry": "YYYY-MM-DD",
    "recurring_frequency": 30
  }
}

recurring_configuration → recurring_frequency

number

Frequency (in days) of the recurring schedule.

"channel_properties": {
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success",
  "recurring_configuration": {
    "recurring_expiry": "YYYY-MM-DD",
    "recurring_frequency": 30
  }
}

account_email

string min length: 5, max length: 254

Email registered with the bank account used.

"channel_properties": {
  "account_email": "payments@xendit.co",
  "account_mobile_number": "+6369692123456",
  "card_last_four": "1234",
  "card_expiry": "06/24",
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

account_mobile_number

string min length: 1, max length: 15

Mobile number registered with the payment method provider.

"channel_properties": {
  "account_email": "payments@xendit.co",
  "account_mobile_number": "+6369692123456",
  "card_last_four": "1234",
  "card_expiry": "06/24",
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

card_last_four

string min length: 4, max length: 4

Last 4 digits of the card tied to the bank account used.

"channel_properties": {
  "account_email": "payments@xendit.co",
  "account_mobile_number": "+6369692123456",
  "card_last_four": "1234",
  "card_expiry": "06/24",
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

card_expiry

string min length: 5, max length: 5

Expiry date of the card tied to the bank account used.

"channel_properties": {
  "account_email": "payments@xendit.co",
  "account_mobile_number": "+6369692123456",
  "card_last_four": "1234",
  "card_expiry": "06/24",
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

account_identity_number

string

The payer's identification number or passport number as registered with the payment provider.

"channel_properties": {
  "account_identity_number": "12345678901112",
  "account_mobile_number": "+6369692123456",
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

payer_email

string min length: 5, max length: 254

The payer's email.

"channel_properties": {
  "email": "payments@xendit.co",
}

device_type

string

Available values:

DESKTOP, MOBILE

The type of device used by the payer.

"channel_properties": {
  "success_return_url": "https://xendit.co/success",
  "failure_return_url": "https://xendit.co/failure",
  "pending_return_url": "https://xendit.co/pending",
  "device_type": "DESKTOP",
  "payer_ip_address": "192.168.0.1"
}

description

string

Description of the payment request.

"channel_properties": {
  "account_identity_number": "12345678901112",
  "account_mobile_number": "+6369692123456",
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success",
  "description": "https://xendit.co/success"
}

enable_otp

boolean

Parameter to toggle on or off the OTP challenge for the payment request.

"channel_properties": {
  "account_email": "payments@xendit.co",
  "account_mobile_number": "+6369692123456",
  "card_last_four": "1234",
  "card_expiry": "06/24",
  "enable_otp": TRUE,
  "failure_return_url": "https://xendit.co/failure",
  "success_return_url": "https://xendit.co/success"
}

allowed_payment_options

array of string

Available values:

GRABPAY (MYR) -

  • PAYLATER_POSTPAID - Pay next month

  • PAYLATER_INSTALLMENTS_4MO - Pay with installments

Additional fund sources that can be used to complete the transaction. There could be cost differences if another fund source is used by the payer.

"channel_properties": {
  "success_return_url": "https://xendit.co/success",
  "allowed_payment_options": ["PAYLATER_POSTPAID"]
}

redeem_points

string

Available values:

OVO (IDR), requires approval from OVO

  • REDEEM_NONE (default) - No points will be used

  • REDEEM_ALL - Points will be used to offset payment amount before cash balance is used.

SHOPEEPAY (IDR)

  • REDEEM_NONE (default) - No points will be used

  • REDEEM_ALL - Points will be used to offset up to 50% of payment amount before cash balance is used.

Indicates whether or not to use the point balance in the transaction for eligible channels.

"channel_properties": {
  "redeem_points": "REDEEM_NONE"
}

payer_ip_address

string min length: 7, max length: 15

The IP address of the payer's client (e.g. 192.168.0.1).

WECHATPAY (MYR)

  • Required if device_type is set to MOBILE

"channel_properties": {
  "success_return_url": "https://xendit.co/success",
  "failure_return_url": "https://xendit.co/failure",
  "pending_return_url": "https://xendit.co/pending",
  "device_type": "MOBILE",
  "payer_ip_address": "192.168.0.1"
}

installment_configuration → terms

string

Available values:

MONTH

The value used n defining the installment schedule together with the interval field.

"channel_properties": {
  "installment_configuration": {
      "terms": [12],
      "interval": "MONTH"
  }
}

installment_configuration → interval

array of number

The unit of time used in defining the installment schedule.

"channel_properties": {
  "installment_configuration": {
      "terms": [3,6,12],
      "interval": "MONTH"
  }
}