---
title: Custom Checkout FAQs
sidebar_label: FAQs
slug: custom-checkout/faqs
excerpt: >-
  Frequently asked questions about Pine Labs Custom checkout (Seamless) — PCI
  compliance, payment methods, integration, error handling, testing, and
  troubleshooting.
hidden: false
sidebar_order: 4
metadata:
  title: Custom Checkout FAQs  | Pine Labs Gateway
  description: >
    Frequently asked questions about Pine Labs Custom checkout (Seamless) — PCI
    compliance, payment methods, integration, error handling, testing, and
    troubleshooting.
  keywords: >-
    custom checkout FAQs, seamless checkout questions, PCI compliance FAQ,
    payment integration troubleshooting, checkout errors, custom integration
    help
  robots: index
---
## General

<details>
<summary><b>What is Custom checkout checkout?</b></summary>

<br/>Custom checkout lets you build your own payment UI on your site and call Pine Labs APIs directly for each payment method. Customers stay on your domain — no redirect to a Pine Labs page.

</details>

---

<details>
<summary><b>Do I need PCI compliance for Custom checkout?</b></summary>

<br/>Yes. You must have a PCI compliance certificate because you collect and transmit sensitive card data (card number, CVV, expiry) directly through your system.

</details>

---

<details>
<summary><b>What payment methods does Custom checkout support?</b></summary>

<br/>Cards (Visa, Mastercard, RuPay), UPI (Collect and Intent), Net Banking, Wallets, and BNPL. Each method requires a separate [Create Payment](/api/card-payments/create-payment) API call.

</details>

---

<details>
<summary><b>Can I use Custom checkout for mobile apps?</b></summary>

<br/>Yes. Make the API calls from your mobile app's backend and build the payment UI natively in your app.

</details>

---

## Integration

<details>
<summary><b>What APIs do I need for Custom checkout?</b></summary>

<br/>Three main APIs: [Generate Token](/api/authentication/generate-token) for authentication, [Create Order](/api/orders/create-order) to create an order, and [Create Payment](/api/card-payments/create-payment) to submit payment per method.

</details>

---

<details>
<summary><b>What's the difference between Create Order and Create Payment?</b></summary>

<br/>Create Order sets up the transaction (amount, customer, allowed methods). Create Payment submits the actual payment with method-specific details (card number, UPI ID, bank code). You always create the order first.

</details>

---

<details>
<summary><b>What is the `challenge_url`?</b></summary>

<br/>The `challenge_url` is returned in the Create Payment response. Redirect the customer to this URL for 3DS authentication, OTP verification, or bank login (net banking). After verification, the customer returns to your callback URL.

</details>

---

<details>
<summary><b>Can I retry a failed payment on the same order?</b></summary>

<br/>Yes. Each order supports multiple payment attempts. Create a new payment with the same `order_id` using a different payment method or corrected details.

</details>

---

<details>
<summary><b>How many payment retries are allowed per order?</b></summary>

<br/>The response includes `payment_retries_remaining` to indicate how many more attempts are allowed.

</details>

---

<details>
<summary><b>Do I need to implement signature verification?</b></summary>

<br/>Yes. This is mandatory. Verify the SHA256 HMAC signature on every callback to confirm the data hasn't been tampered with. See [Signature Verification](/developer-tools/webhooks/signature-verification).

</details>

---

## PCI compliance

<details>
<summary><b>Why is PCI compliance required for Custom checkout?</b></summary>

<br/>Because your system collects, transmits, and processes raw card data (card_number, cvv, expiry). PCI DSS compliance ensures you handle this data securely.

</details>

---

<details>
<summary><b>What level of PCI compliance do I need?</b></summary>

<br/>You need PCI DSS certification appropriate for your transaction volume. Contact your acquiring bank or a PCI Qualified Security Assessor for guidance.

</details>

---

<details>
<summary><b>What if I don't have PCI compliance?</b></summary>

<br/>Use [Hosted checkout (Infinity)](/docs/checkout-hosted) or [iFrame checkout](/docs/checkout-iframe). Both handle card data collection on the Pine Labs side, so you don't need PCI compliance.

</details>

---

## Payment methods

<details>
<summary><b>How do I accept card payments?</b></summary>

<br/>Collect card details (name, number, CVV, expiry, mobile) on your UI, then call [Card Payment Create](/api/card-payments/create-payment). The response includes a `challenge_url` for 3DS/OTP verification.

</details>

---

<details>
<summary><b>How do I accept UPI payments?</b></summary>

<br/>Two options: UPI Collect (customer enters VPA, approves on their UPI app) and UPI Intent (generate QR code or deeplink). See [UPI integration steps](/checkout-options).

</details>

---

<details>
<summary><b>How do I accept Net Banking payments?</b></summary>

<br/>Collect the bank selection from your UI, pass the `bank_code` in [Netbanking Payment Create](/api/netbanking/create-payment). Customer is redirected to the bank's login page. See [Supported Banks](/payment-methods/netbanking).

</details>

---

<details>
<summary><b>Can I support tokenized (saved) cards?</b></summary>

<br/>Yes. Use the [Tokenization](/tokenization) flow to save cards and the CVV-less flow for returning customers.

</details>

---

<details>
<summary><b>Can I support EMI through Custom checkout?</b></summary>

<br/>EMI (Credit and Debit) is primarily supported through Hosted checkout. For EMI via Custom checkout, contact the [integration team](mailto:pgintegration@pinelabs.com).

</details>

---

## Pre-authorization

<details>
<summary><b>Does Custom checkout support pre-authorization?</b></summary>

<br/>Yes. Set `pre_auth: true` in the Create Order request. After successful payment, call [Capture Order](/api/orders/capture-order) to settle or [Cancel Order](/api/orders/cancel-order) to void.

</details>

---

<details>
<summary><b>Which payment methods support pre-auth in Custom checkout?</b></summary>

<br/>Card payments support pre-authorization.

</details>

---

## Error handling

<details>
<summary><b>What happens if the Create Payment call fails?</b></summary>

<br/>The response includes `error_detail` with `code` and `message`. Common errors: `INTERNAL_ERROR` (processor unavailable), `INVALID_CARD` (incorrect card details), `INSUFFICIENT_FUNDS`. See [Error Codes](/developer-tools/error-codes).

</details>

---

<details>
<summary><b>How do I handle 3DS failures?</b></summary>

<br/>If the customer fails 3DS verification, they're redirected to your `failure_callback_url` with error details. You can allow a retry with the same or different payment method.

</details>

---

<details>
<summary><b>What if the customer drops off during 3DS/OTP?</b></summary>

<br/>Configure [webhooks](/developer-tools/webhooks) to receive payment status updates server-side. The callback may not fire if the customer closes the browser.

</details>

---

## Testing

<details>
<summary><b>How do I test Custom checkout?</b></summary>

<br/>Use the UAT environment (`https://pluraluat.v2.pinepg.in`) with [test card details](/test-card-details).

</details>

---

<details>
<summary><b>Can I test all payment methods in UAT?</b></summary>

<br/>Cards, Net Banking (SBI), Cross-Border, and Pay by Points work in UAT with test data. UPI processes real transactions — test with minimum amounts.

</details>

---

<details>
<summary><b>When do I get production credentials?</b></summary>

<br/>After UAT sign-off. Share your callback and webhook URLs for whitelisting.

</details>

---

## Troubleshooting

<details>
<summary><b>My signature verification keeps failing.</b></summary>

<br/>Check: (1) Parameters sorted alphabetically by key, (2) joined with `&`, (3) HmacSHA256 with hex-decoded `secret_key`, (4) result compared in uppercase.

</details>

---

<details>
<summary><b>Payment succeeded but I didn't receive a callback.</b></summary>

<br/>The callback depends on the customer's browser. Always use [webhooks](/developer-tools/webhooks) as the primary confirmation mechanism.

</details>

---

<details>
<summary><b>Getting CORS errors when calling Pine Labs APIs.</b></summary>

<br/>You're calling APIs from the frontend. All Pine Labs API calls must be made from your backend server.

</details>

---

<details>
<summary><b>How do I contact support?</b></summary>

<br/>Integration support: [pgintegration@pinelabs.com](mailto:pgintegration@pinelabs.com). General support: [pgsupport@pinelabs.com](mailto:pgsupport@pinelabs.com).

</details>

---

## Related pages

> **[Custom checkout — Overview](/custom-checkout)**
> Features and benefits of Seamless Checkout.

> **[Custom checkout — Integration steps](/custom-checkout/integration-steps)**
> Step-by-step integration guide.

> **[Custom checkout — Customization options](/checkout-options/customization)**
> Configure payment methods and parameters.

