---
title: Accept Payments for a Startup
slug: use-cases/accept-payments-startup
excerpt: >-
  Go from zero to accepting live payments in minutes — the fastest path for
  startups and new businesses on Pine Labs Online.
sidebar_order: 1
hidden: false
metadata:
  title: "Accept Payments for Startups — Go Live in Minutes | Pine Labs"
  description: >-
    Fastest integration path for startups and new businesses. Set up merchant account, build checkout for cards/UPI/wallets/netbanking, test transactions, and go live with Pine Labs Online.
  keywords: "startup payments, accept payments, payment gateway for startups, quick integration, go live fast, Pine Labs account"
  robots: index
---

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

| Requirement | Details |
|---|---|
| Pine Labs account | [Sign up →](https://dashboardv2.pluralonline.com/signup) |
| Business documents | PAN, GST certificate, bank account details |
| A backend server | Node.js, Python, PHP, Java, or any server-side language |

> **No backend yet?** Start with [Payment Links](/use-cases/accept-payments-via-payment-links) — zero code required.

---

## Choose your integration path

```mermaid
flowchart TD
    A[Starting a new business?] --> B{Do you have developer resources?}
    B -->|No| C[Payment Links<br/>No code — just share a link]
    B -->|Yes| D{How much UI control?}
    D -->|Use Pine Labs checkout page| E[Hosted Checkout<br/>Low code — redirect to hosted page]
    D -->|Build my own payment form| F[Seamless Checkout<br/>Full code — custom UI]
    
    C --> G[Live in 2 minutes]
    E --> H[Live in 15 minutes]
    F --> I[Live in 1-2 hours]
    
    style G fill:#36CC8B
    style H fill:#36CC8B
    style I fill:#36CC8B
```

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](https://dashboardv2.pluralonline.com/login)
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
<!-- Simple checkout button on your website -->
<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):

```
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 scenario | How to test |
|---|---|
| Successful card payment | Use [test card details](/test-card-details) on UAT |
| UPI payment | UPI on UAT processes real transactions — use ₹1 amounts |
| Failed payment | Use test cards configured for decline |
| Webhook delivery | Check 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 step | Why |
|---|---|
| [Add EMI options](/affordability-suite) | Increase conversions with instalments |
| [Set up subscriptions](/use-cases/setup-subscriptions-recurring) | Automate recurring billing for SaaS |
| [Split settlements](/split-settlements) | Distribute payments across marketplace sellers |
| [Payment analytics](/dashboard/payments) | Track performance in the Dashboard |

---

## FAQ

<details>
<summary>How long does account activation take?</summary>

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

<details>
<summary>What payment methods are available by default?</summary>

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.
</details>

<details>
<summary>Is there a minimum transaction amount?</summary>

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

<details>
<summary>Can I test without a live website?</summary>

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.
</details>
