Accept Payments for a Startup

Go from zero to accepting live payments in minutes — the fastest path for startups and new businesses on Pine Labs Online.

Go from zero to live payments in minutes. This guide walks you through the fastest integration path for a new business.


What you're building

By the end of this guide, you'll have:

  • A Pine Labs Online merchant account
  • A working checkout that accepts cards, UPI, wallets, and netbanking
  • Test transactions verified on the Dashboard
  • A clear path to go live

Before you begin

RequirementDetails
Pine Labs accountSign up →
Business documentsPAN, GST certificate, bank account details
A backend serverNode.js, Python, PHP, Java, or any server-side language

No backend yet? Start with Payment Links — zero code required.


Choose your integration path

We recommend Hosted Checkout for most startups — it's fast to set up and handles payment method display, validation, and security for you.


Step-by-step: Hosted Checkout

Step 1 — Get your API credentials

After signing up, retrieve your credentials from the Dashboard:

  1. Log in to the Pine Labs Dashboard
  2. Navigate to Settings → API Keys
  3. Copy your Client ID and Client Secret

Security: Store credentials in environment variables or a secrets manager. Never commit them to source code.

Step 2 — Generate an access token

All API calls require a Bearer token. Generate one from your backend:

Bash
curl --location 'https://pluraluat.v2.pinepg.in/api/auth/v1/token' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
  "client_id": "<your_client_id>",
  "client_secret": "<your_client_secret>",
  "grant_type": "client_credentials"
}'

Response:

JSON
{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 3600
}

Step 3 — Create an order

Create an order for ₹500 (value in paise: 50000):

Bash
curl --location 'https://pluraluat.v2.pinepg.in/api/pay/v1/orders' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--header 'Request-ID: <unique_uuid>' \
--header 'Request-Timestamp: 2024-07-09T07:57:08.022Z' \
--data '{
  "merchant_order_reference": "STARTUP-ORDER-001",
  "order_amount": {
    "value": 50000,
    "currency": "INR"
  },
  "pre_auth": false,
  "allowed_payment_methods": [
    "CARD", "UPI", "NETBANKING", "WALLET"
  ],
  "callback_url": "https://your-domain.com/payment/success",
  "failure_callback_url": "https://your-domain.com/payment/failure",
  "purchase_details": {
    "customer": {
      "email_id": "customer@example.com",
      "first_name": "Rahul",
      "last_name": "Sharma",
      "customer_id": "CUST-001",
      "mobile_number": "9876543210",
      "country_code": "91"
    }
  }
}'

Response includes:

JSON
{
  "order_id": "v1-2505051234-aa-xYzAbC",
  "checkout_url": "https://checkout.pluralonline.com/...",
  "status": "CREATED"
}

Step 4 — Redirect to checkout

Redirect your customer to the checkout_url from the order response. Pine Labs handles:

  • Payment method selection (cards, UPI, wallets, netbanking)
  • Card number validation and 3D Secure authentication
  • UPI intent and collect flows
  • Success and failure redirects back to your URLs
HTML

<form action="/create-order" method="POST">
  <button type="submit">Pay ₹500</button>
</form>

Your server-side handler creates the order and redirects:

JavaScript
// Express.js example
app.post('/create-order', async (req, res) => {
  const order = await createPineLabsOrder(); // your API call
  res.redirect(order.checkout_url);
});

Step 5 — Handle the callback

After payment, Pine Labs redirects the customer to your callback_url with:

JSON
{
  "order_id": "v1-2505051234-aa-xYzAbC",
  "payment_status": "AUTHORIZED",
  "signature": "a1b2c3d4..."
}

Verify the signature on your server (mandatory):

Code
Signature string: order_id=<order_id>&status=AUTHORIZED
Algorithm: SHA256 HMAC with your secret_key

Then capture the order:

Bash
curl --request PUT \
'https://pluraluat.v2.pinepg.in/api/pay/v1/orders/{order_id}/capture' \
--header 'Authorization: Bearer <access_token>'

Step 6 — Configure webhooks

Set up webhooks in the Dashboard for real-time payment notifications:

  1. Go to Dashboard → Settings → Webhooks
  2. Add your endpoint URL
  3. Select events: ORDER_AUTHORIZED, ORDER_CAPTURED, REFUND_PROCESSED

Why webhooks? Don't rely solely on callback redirects. Customers may close their browser before the redirect completes. Webhooks guarantee you receive payment notifications.


Test your integration

Use the UAT environment to test without processing real payments:

Test scenarioHow to test
Successful card paymentUse test card details on UAT
UPI paymentUPI on UAT processes real transactions — use ₹1 amounts
Failed paymentUse test cards configured for decline
Webhook deliveryCheck webhook logs in Dashboard

Go live checklist

Before switching from UAT to production:

  • Verify your merchant account — complete KYC verification in the Dashboard
  • Switch base URL — replace pluraluat.v2.pinepg.in with api.pluralonline.com
  • Update credentials — use production Client ID and Client Secret
  • Configure production webhooks — point to your live server
  • Test on production — make a small real payment and refund it
  • Set up signature verification — mandatory for all callbacks
  • Enable TLS 1.2+ — required for all API communication

What's next?

Once you're live, explore features that help your startup grow:

Next stepWhy
Add EMI optionsIncrease conversions with instalments
Set up subscriptionsAutomate recurring billing for SaaS
Split settlementsDistribute payments across marketplace sellers
Payment analyticsTrack performance in the Dashboard

FAQ

How long does account activation take?

UAT access is instant after signup. Production activation typically takes 1–2 business days after document verification.

What payment methods are available by default?

Cards (Visa, Mastercard, RuPay), UPI, Netbanking, and Wallets are enabled by default. EMI, BNPL, and Pay by Points require additional configuration — contact your account manager.

Is there a minimum transaction amount?

The minimum transaction amount is ₹1. There is no maximum limit — high-value transactions may require additional verification based on your merchant category.

Can I test without a live website?

Yes. Use https://localhost or any URL as your callback during testing. You can also use tools like ngrok to expose your local server for webhook testing.

New chat
Responses are generated using AI and may contain mistakes.
Hi! I'm Pine, your AI developer assistant. Ask me anything about Pine Labs APIs, integrations, or troubleshooting.

Tip: you can create a new chat with + E