Travel
Payments made by Indian resident individuals for foreign travel services are classified under the Liberalized Remittance Scheme (LRS), which carries additional checks and regulations. EBANX handles the required checks, helps merchants comply with the regulations automatically, and keeps the flow simple for both merchants and customers.
Requirements
- API authentication - All API requests must be authenticated using JWS (JSON Web Signature). The legacy
integration_keyis being deprecated — if you still use it, follow the Migration Guide to transition to JWS. If you don't have credentials yet, complete the Merchant Signup Form. - Familiarity with EBANX Direct - This setup follows the same general structure as other payment methods, with a few unique parameters.
LRS travel services
The following services are classified under LRS:
- Transportation such as flights and trains, with at least one leg outside India.
- Accommodation such as hotels and stays situated outside India.
- Tour packages, meaning a combination of transportation and accommodation in a single transaction.
Support for tour packages is in progress and will be available in the near future. At present, only transactions involving one kind of service — either transportation or accommodation — are permitted in a single transaction.
Non-LRS travel: Import classification
The following services are not classified under LRS travel and are processed as regular import transactions:
- Transportation where both legs (origin and destination) are within India, but the service is provided by a foreign provider.
- Accommodation situated in India, but the service is provided by a foreign provider.
Automatic compliance handling
EBANX automatically handles the additional checks and regulations that apply to travel payments:
- PAN (Indian tax ID) - EBANX collects the PAN details from the customer at checkout and validates them.
- Address - EBANX captures the customer's address required for regulatory reporting.
- TCS (Tax Collected at Source) - LRS regulations require tax to be collected during a transaction when the customer has breached a certain threshold for the fiscal year. The customer declares at checkout whether the threshold was breached, and EBANX collects the applicable tax and deposits it with the tax authorities through its banking partners.
- LRS limit checks - LRS regulations cap remittances in foreign currency at USD 250,000 per PAN per fiscal year. EBANX performs this check through its banking partners.
Applicable TCS rates
| Type of service | Overseas spends <= INR 1,000,000 | Overseas spends > INR 1,000,000 |
|---|---|---|
| Either accommodation or transportation | 0% | 20% |
| Tour packages (accommodation and transportation together) | 2% | 2% |
The overseas spend against a PAN in the fiscal year (April 1 of the current year to March 31 of the next year) used to calculate TCS during transaction processing is based on the customer's declaration at checkout.
- The TCS amount, when collected from the customer, is not refunded through a merchant-initiated refund. The customer must claim it as a tax credit when filing an Income Tax Return with the Indian tax authorities.
- For refunds, add the following statement to the confirmations sent to the customer: "TCS deducted by your bank may be claimed as a tax credit in your Income Tax Return."
How it works
- Merchant initiates payment - The merchant creates the payment with EBANX, and EBANX responds with a
redirect_url. - Merchant invokes checkout - The merchant renders the redirect URL and invokes the checkout flow.
- LRS flow details - The customer enters, verifies, and declares the details required by LRS regulations.
- Payment method selection - The customer chooses between UPI and cards.
- For UPI, the customer can scan a QR code or tap to pay using a specific UPI app.
- For cards, the customer can use a credit or debit card of the Mastercard, Visa, or Rupay networks.
- Redirection
- For UPI QR code, the customer scans the QR code with their UPI app, which opens the payment page with pre-filled details.
- For UPI app, the customer is redirected directly to their chosen UPI app with pre-filled payment details.
- For cards, the customer enters the card details and is redirected to the authentication page.
- Authentication
- In the UPI app, the customer enters their UPI PIN to authorize and complete the transaction.
- In the cards flow, the customer enters an OTP to authorize and complete the transaction.
- Payment confirmation - Once the transaction is successful, the customer is redirected to the merchant page defined in the payment request, and the merchant is updated with the transaction status.
- EBANX notification - EBANX sends a notification to the merchant confirming the successful transaction, allowing the merchant to fulfill the customer's order.
Key information
| Item | Value |
|---|---|
| Minimum amount per transaction | INR 1 |
| Maximum amount per transaction | INR 2,500,000 |
| Limit for UPI as payment method | INR 100,000 |
| Payment methods supported | UPI and cards |
| Transaction expiration time | 30 minutes |
| Refund date range | 180 days from the transaction date |
| Refund turnaround time | 3 to 10 working days, retries included |
Instructions
Follow the steps below.
- Select your environment
Select the appropriate environment for your integration. Use the sandbox environment for testing, or the production environment for live transactions. Use the URL for your HTTP requests based on your selection.
Check the method's availability for your country and tenant in Payment Methods by Country. Questions about tenant and environment? Check our API Operability and API Endpoints.
https://sandbox.ebanxpay.com/ws/direct Basic parameters
Parameter Requirement Description integration_keyRequired Your EBANX integration key operationRequired Set to requestpayment.payment_type_codeRequired Set to lrs-travelfor LRS travel related paymentspayment.countryRequired Set to infor IndiaCustomer data
Parameter Requirement Description payment.nameRequired Customer's full name
Note: Minimum 5 characters, alphabets onlypayment.emailRequired Customer's email payment.phone_numberOptional Customer's phone
Note: Minimum 8 digits, maximum 10 digits, numbers onlypayment.addressOptional Customer's address
Note: Minimum 3 characterspayment.street_numberOptional Customer's street number payment.cityOptional Customer's city
Note: Minimum 3 characters, alphabets onlypayment.stateOptional Customer's state
Note: Refer to the states list. Either use the state code or the state namepayment.zipcodeOptional Customer's zipcode or pincode
Note: Must be 6 digits, numbers onlyCharge parameters
Parameter Requirement Description payment.merchant_payment_codeRequired Unique Payment Reference Number as defined by the merchant payment.currency_codeRequired Set to INRpayment.amount_totalRequired Total amount to be charged payment.metadata.lrs_typeRequired Set to flightfor transportation andhotelfor accommodation related payments
Note: No other value is allowedpayment.redirect_urlRequired Callback URL used to redirect the customer after the transaction is processed
Note: Used for both successful and failed transactions- Create the payment request
Request
Use the following example to initiate a request.
curl -X POST \
--location 'https://sandbox.ebanxpay.com/ws/direct' \
--header 'Content-Type: application/json' \
--data '{
"integration_key": "{{integration_key}}",
"operation": "request",
"payment": {
"name": "John Doe",
"email": "john.doe@example.com",
"phone_number": "5555555555",
"address": "123 Main Street",
"street_number": "100",
"city": "Capital City",
"state": "State Name",
"zipcode": "000000",
"country": "in",
"payment_type_code": "lrs-travel",
"merchant_payment_code": "{{unique_merchant_code}}",
"currency_code": "INR",
"amount_total": 99.85,
"redirect_url": "https://merchant.example.com/callback",
"metadata": {
"lrs_type": "flight"
}
}
}'Response
A successful request returns a response like the example below. Extract the
redirect_urlvalue and render the checkout by invoking it.{
"payment": {
"hash": "59acc5f00945fa382ab051651440826da7701533249b3a475",
"country": "in",
"merchant_payment_code": "{{unique_merchant_code}}",
"order_number": null,
"status": "PE",
"status_date": "{{YYYY-MM-DD HH:mm:ss}}",
"open_date": "{{YYYY-MM-DD HH:mm:ss}}",
"confirm_date": null,
"transfer_date": null,
"amount_br": "99.85",
"amount_ext": "99.85",
"amount_iof": "1",
"currency_rate": "1",
"currency_ext": "INR",
"due_date": "{{YYYY-MM-DD}}",
"instalments": "1",
"payment_type_code": "lrs-travel",
"redirect_url": "https://sandbox.ebanxpay.com/ws/redirect?hash=59acc5f00945fa382ab051651440826da7701533249b3a475",
"pre_approved": false,
"capture_available": null
},
"status": "SUCCESS",
"redirect_url": "https://sandbox.ebanxpay.com/ws/redirect?hash=59acc5f00945fa382ab051651440826da7701533249b3a475"
} - Monitor the payment for status changes
At this stage, the payment appears as pending (
PE) in your Merchant Area.Notifications
EBANX sends a notification whenever a payment status changes. Make sure your system is set up to receive notifications from EBANX.
Status
After receiving a notification that the status has changed, retrieve the payment status. When a payment is confirmed, the status changes from pending (
PE) to confirmed (CO). If the customer does not complete the payment, the status eventually changes to cancelled (CA).Request
curl -X POST \
--location 'https://sandbox.ebanxpay.com/ws/query' \
--header 'Content-Type: application/json' \
--data '{
"integration_key": "{{integration_key}}",
"hash": "59acc5f00945fa382ab051651440826da7701533249b3a475"
}'Response for a payment completed with UPI
{
"payment": {
"hash": "59acc5f00945fa382ab051651440826da7701533249b3a475",
"country": "in",
"merchant_payment_code": "{{unique_merchant_code}}",
"order_number": null,
"status": "CO",
"status_date": "{{YYYY-MM-DD HH:mm:ss}}",
"open_date": "{{YYYY-MM-DD HH:mm:ss}}",
"confirm_date": "{{YYYY-MM-DD HH:mm:ss}}",
"transfer_date": "{{YYYY-MM-DD HH:mm:ss}}",
"amount_br": "99.85",
"amount_ext": "99.85",
"amount_iof": "1",
"currency_rate": "1",
"currency_ext": "INR",
"due_date": "{{YYYY-MM-DD}}",
"instalments": "1",
"payment_type_code": "lrs-travel",
"redirect_url": "https://sandbox.ebanxpay.com/ws/redirect?hash=59acc5f00945fa382ab051651440826da7701533249b3a475",
"pre_approved": false,
"capture_available": null,
"metadata": {
"payment_method": "upi",
"payment_sub_type": "link",
"instrument_type": "UPI",
"order_amount": "99.85",
"tcs_amount": "1",
"bank_reference_id": "{{bank_reference_id}}"
}
},
"status": "SUCCESS"
}Response for a payment completed with cards
{
"payment": {
"hash": "59acc5f00945fa382ab051651440826da7701533249b3a475",
"country": "in",
"merchant_payment_code": "{{unique_merchant_code}}",
"order_number": null,
"status": "CO",
"status_date": "{{YYYY-MM-DD HH:mm:ss}}",
"open_date": "{{YYYY-MM-DD HH:mm:ss}}",
"confirm_date": "{{YYYY-MM-DD HH:mm:ss}}",
"transfer_date": "{{YYYY-MM-DD HH:mm:ss}}",
"amount_br": "99.85",
"amount_ext": "99.85",
"amount_iof": "1",
"currency_rate": "1",
"currency_ext": "INR",
"due_date": "{{YYYY-MM-DD}}",
"instalments": "1",
"payment_type_code": "lrs-travel",
"redirect_url": "https://sandbox.ebanxpay.com/ws/redirect?hash=59acc5f00945fa382ab051651440826da7701533249b3a475",
"pre_approved": false,
"capture_available": null,
"metadata": {
"payment_method": "card",
"payment_sub_type": "credit_card",
"instrument_type": "mastercard",
"order_amount": "99.85",
"tcs_amount": "1",
"bank_reference_id": "{{bank_reference_id}}"
}
},
"status": "SUCCESS"
} - Read the metadata section
The
metadatanode is returned only for confirmed (CO) payments and describes how the customer actually paid. Fields with no value are omitted.Field Description payment_methodPayment method used by the customer: upiorcardpayment_sub_type1. For UPI, linkfor the UPI intent flow orqrcodefor the UPI QR flow.
2. For cards,credit_cardordebit_card.instrument_type1. For UPI, the underlying account used:
a.UPIfor a bank account (savings or current).
b.UPI_Credit_Cardfor a Rupay credit card.
c.UPI_PPIfor a prepaid instrument.
d.UPI_Credit_Linefor a credit line extended by the bank on the account.
2. For cards, the card network:Mastercard,Visa, orRupay.order_amountAmount sent in the payment request, plus the TCS collected from the customer tcs_amountTax collected at source based on the customer's declaration. 0means the customer declared no breach of the TCS threshold; a valuegreater than 0means the customer confirmed the threshold was breached for the fiscal yearbank_reference_idTransaction reference ID generated at the bank. It is the common transaction identifier between the customer and the merchant at the processing level - Congratulations!
You have successfully integrated Travel.
For more information, refer to theDirect API reference guidechevron_right
Expected error codes
Travel payments are processed through UPI or cards, so the error codes are the ones already documented for each payment method:
- For transactions processed with UPI, refer to the UPI error codes.
- For transactions processed with cards, refer to the API error codes reference.
Resources
Use the following resources when testing in your sandbox environment.
Sample Cards
Click here to view mock card data to validate your payment integration.
API Reference
Click here to access detailed API documentation to integrate efficiently.
Mock Customer Data
Click here to view mock customer data for testing and validating user flows.
Error Codes
Click here to review common error codes to troubleshoot and resolve issues quickly.
Still need help?
We hope this article was helpful. If you still have questions, you can explore the following options:
- Merchant support: Contact our support team at sales.engineering@ebanx.com for assistance.
- Not a partner yet? Please complete the Merchant Signup Form, and our commercial team will reach out to you.