Cross-Border Import Payments Integration Guide
Step-by-step technical guide to integrate Pine Labs PA-CB Import flow for accepting cross-border payments.
Learn how you can integrate with Pine Labs Online APIs to start accepting cross border Import Payments on your website.
Follow the below steps to integrate with Pine Labs Online PA-CB seamless checkout APIs in your application.
- [Prerequisite] Generate Token
- Create Order
- Compute TCS
- Create Payment
- Create Invoice
- Upload Invoice
- Create AWB
- Upload AWB File
📘 Note
- Ensure you store your
client_idandclient_secretin your Backend securely.- Integrate our APIs on your backend system.
- We strictly recommend not to call our APIs from the frontend.
- Failure to adhere to the above guidelines may result in legal implications. In such cases, you will be held responsible for any damage or loss arising from non-compliance.
🚧 Watch Out
- To Integrate with Pine Labs Online seamless checkout flow you must have a PCI compliance certificate.
1. [Prerequisite] Generate Token
Integrate our Generate Token API in your backend servers to generate the access token. Use the token generated to authenticate Pine Labs Online APIs.
Below are the sample requests and response for the Generate Token API.
curl --request POST \
--url https://pluraluat.v2.pinepg.in/api/auth/v1/token \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'Request-Timestamp: 2024-07-09T07:57:08.022Z' \
--header 'Request-ID: c17ce30f-f88e-4f81-ada1-c3b4909ed235' \
--data '
{
"client_id": "a17ce30e-f88e-4f81-ada1-c3b4909ed232",
"client_secret": "fgwei7egyhuggwp39w8rh",
"grant_type": "client_credentials"
}
'
Refer to our Generate Token API documentation to learn more.
2. Create Order
To create an Order, use our Create Order API, for authentication use the generated access token in the headers of the API request.
Below are the sample requests and response for a Create Order API.
curl --location 'https://pluraluat.v2.pinepg.in/api/pay/v1/orders' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
--data '{
"merchant_order_reference": 112345,
"order_amount": {
"value": 1100,
"currency": "INR"
},
"pre_auth": false,
"allowed_payment_methods": [
"CARD",
"UPI",
"NETBANKING",
"POINTS",
"WALLET"
],
"notes": "order1",
"callback_url": "https://sample-callback-url",
"failure_callback_url": "https://sample-failure-callback-url",
"purchase_details": {
"customer": {
"email_id": "kevin.bob@example.com",
"first_name": "Kevin",
"last_name": "Bob",
"customer_id": "123456",
"mobile_number": "9876543210",
"country_code": "91",
"billing_address": {
"address1": "H.No 15, Sector 17",
"address2": "",
"address3": "",
"pincode": "61232112",
"city": "CHANDIGARH",
"state": "PUNJAB",
"country": "INDIA",
"full_name": "Kevin Bob",
"adddress_type": "Home",
"address_category": "billing"
},
"shipping_address": {
"address1": "H.No 15, Sector 17",
"address2": "",
"address3": "",
"pincode": "144001123",
"city": "CHANDIGARH",
"state": "PUNJAB",
"country": "INDIA",
"full_name": "Kevin Bob",
"adddress_type": "Home",
"address_category": "shipping"
}
},
"merchant_metadata": {
"key1": "DD",
"key2": "XOF"
}
},
"cross_border_details": {
"settlement_currency": "USD",
"hs_code": "8471300000",
"hs_description": "Portable digital automatic data processing machines",
"iec_code": "0512345678"
}
}'
Refer to our Create Order API documentation to learn more.
3. Compute TCS
To calculate the tax computed at source, use our Compute TCS API.
Below are the sample requests and sample response for Compute TCS API.
curl --location 'https://pluraluat.v2.pinepg.in/api/v1/tcs/compute' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
--data '{
"order_id": "v1-260430151510-aa-rPpSR3",
"amount": {
"value": 500000,
"currency": "INR"
},
"is_tcs_declared": true
}'
Refer to our Compute TCS API documentation to learn more.
📘 Note:
- TCS Compute API integration is required only for LRS + Services cross-border orders.
4. Create Payment
To create a payment, use our Create Payment API, use the order_id returned in the response of a Create Order API to link the payment against an order.
Below are the sample requests and sample response for Card Payment API.
curl --request POST \
--url 'https://pluraluat.v2.pinepg.in/api/pay/v1/orders/v1-4405071524-aa-qlAtAf/payments' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
--data '{
"merchant_payment_reference": "39965ef7-355f-45a0-a8b7-9cd48b77fec2",
"payment_method": "CARD",
"payment_amount": {
"value": 1000,
"currency": "INR"
},
"payment_option": {
"card_details": {
"name": "John Doe",
"card_number": "4000000000000000",
"cvv": "065",
"expiry_month": "12",
"expiry_year": "2026"
}
},
"payer_data": {
"first_name": "Rajesh",
"last_name": "Patel",
"pan": "KGEPS1880J",
"dob": "1999-04-14",
"email": "rajesh@techcorp.com",
"phone": "9876543210",
"country_code": "91",
"is_tcs_declared": true
},
"tcs_data": {
"tcs_applicable": true,
"tcs_rate": "2.00",
"original_amount": {
"value": 1000,
"currency": "INR"
},
"computed_amount": {
"value": 1020,
"currency": "INR"
},
"slab_id": "EDU_MED_FY2627",
"is_flat_rate": false,
"financial_year": "2026-27",
"breakdown": {
"amount": {
"value": 1000,
"currency": "INR"
},
"tcs": {
"value": 20,
"currency": "INR"
}
}
}
}'
Refer to our Create Payment API documentation to learn more.
5. Create Invoice
To update the invoice details, use our Create Invoice Details API.
Below are the sample requests and sample response for Create Invoice Details API.
curl --location 'https://pluraluat.v2.pinepg.in/api/pay/v1/orders/v1-260430151510-aa-rPpSR3/invoice' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
--data '
{
"invoice_number": "INV-2026-001",
"invoice_date": "2026-04-28",
"supplier_name": "Global Exports Ltd"
}
'
Refer to our Create Invoice Details API documentation to learn more.
6. Upload Invoice
To upload a invoice into our system, use our Upload Invoice API.
Below are the sample requests and sample response for Upload Invoice API.
curl --location --request PUT 'https://pluraluat.v2.pinepg.in/api/pay/v1/orders/v1-260430151510-aa-rPpSR3/invoice/INV-2026-001/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'accept: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
--form 'file=@"/path/to/invoice.pdf"'
Refer to our Upload Invoice API documentation to learn more.
7. Create AWB
To create a airway bill, use our Create AWB API, use the order_id returned in the response of a Create Order API to link the AWB against an order.
Below are the sample requests and sample response for Create AWB API.
curl --request POST \
--url 'https://pluraluat.v2.pinepg.in/api/pay/v1/orders/v1-260520225359-aa-LHy288/awb' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
--data '[
{
"awb_number": "AWB-2026-001",
"awb_date": "2026-05-22",
"tracking_url": "https://www.dhl.com/track?id=AWB-2026-001"
},
{
"awb_number": "AWB-2026-002",
"awb_date": "2026-05-22",
"tracking_url": "https://www.fedex.com/track?id=AWB-2026-002"
}
]'
Refer to our Create AWB API documentation to learn more.
8. Upload AWB
To upload a airway bill, use our upload AWB API, use the order_id returned in the response of a Create Order API to link the AWB against an order.
Below are the sample requests and sample response for Upload AWB API.
curl --request PUT \
--url 'https://pluraluat.v2.pinepg.in/api/pay/v1/orders/v1-260520225359-aa-LHy288/awb/awb-260522-001/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'accept: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
--form 'file=@"/path/to/awb-document.pdf"'
Refer to our Upload AWB API documentation to learn more.
To Know Your Payment Status
To check you payment status, you can rely on webhook events.
- Webhook Notification : We send Webhook notifications on the successful payment or any changes to the payments object. Refer to our Webhooks documentation to learn more.
- Use Fetch APIs : You can use the below list of APIs to fetch the status of payments, Invoice, and AWB.
-
Orders Get Order by Order ID: Use this API to retrieve the order by order ID. Refer to our Get Order by Order ID API documentation to learn more.
-
Invoice
Get Invoice: Retrieves the current invoice details and status for a given order.
Use this API to check invoice status after creating an invoice and/or uploading the invoice file. Refer to our Get Invoice API documentation to learn more. -
AWB
Get All AWBs: Retrieves all AWB records and their statuses for a given order. Returns an empty list (total: 0) if no AWB records exist for the order. Refer to our Get All AWBs API documentation to learn more.
Get AWB by ID: Retrieves a single AWB record by its ID. Refer to our Get AWB by ID API documentation to learn more.
