PlutoPay Docs
API Reference Dashboard ↗

#Hosted checkout & payment links

Two low/zero-code ways to collect a card payment on a PlutoPay-hosted page, so you never build or host a card form yourself.

#Hosted checkout

Create a checkout session, then redirect the customer to the returned url. They pay on the PlutoPay-hosted page and return to your success_url.

POST /v1/checkout/sessions
Field Type Required Description
amount integer Cents. Minimum 50.
currency string Defaults to your account currency.
description string
customer_email string Prefill the customer's email.
customer_name string
success_url / cancel_url string Where to send the customer after paying / canceling.
payment_method_types array Any of card, apple_pay, google_pay.
collect_email / collect_name / collect_phone / collect_address boolean Fields to collect on the page.
expires_in integer Seconds until expiry (5 min – 24 h).
metadata object
curl https://plutopayus.com/api/v1/checkout/sessions \
  -H "Authorization: Bearer sk_test_your_key_here" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: checkout_1001" \
  -d '{ "amount": 4750, "currency": "usd", "description": "Order #1001",
        "success_url": "https://your-site.com/thanks",
        "cancel_url": "https://your-site.com/cart" }'

#Response 201

{
  "data": {
    "id": "019c8044-…",
    "reference": "cs_9Yx2Kq…",
    "url": "https://plutopayus.com/pay/cs_9Yx2Kq…",
    "amount": 4750,
    "currency": "usd",
    "status": "open",
    "expires_at": "2026-07-05T14:42:03+00:00",
    "transaction_id": "019c8044-…"
  }
}

Redirect the customer to data.url. Fulfill the order on the payment.succeeded webhook — don't rely on the browser returning to success_url. Retrieve a session anytime with GET /v1/checkout/sessions/{id}.

A payment link is a long-lived, shareable hosted-checkout URL — no website required.

POST /v1/payment-links
Field Type Required Description
amount integer Cents. Minimum 50.
currency string Defaults to your account currency.
description string
customer_email string Prefill the customer's email.
success_url / cancel_url string Redirect targets.
expires_in integer Seconds until expiry. Min 5 min, max 90 days.
metadata object
curl https://plutopayus.com/api/v1/payment-links \
  -H "Authorization: Bearer sk_test_your_key_here" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: link_1001" \
  -d '{ "amount": 4750, "currency": "usd", "description": "Invoice #1001",
        "customer_email": "customer@example.com" }'

#Response 201

{
  "data": {
    "id": "019c8044-…",
    "reference": "pl_9Yx2Kq…",
    "url": "https://plutopayus.com/pay/pl_9Yx2Kq…",
    "amount": 4750,
    "currency": "USD",
    "status": "open",
    "is_test": true,
    "expires_at": "2026-07-12T14:12:03+00:00",
    "created_at": "2026-07-05T14:12:03+00:00"
  }
}

Share data.url. Manage links with:

GET    /v1/payment-links/{id}      # id or reference (pl_…)
GET    /v1/payment-links?limit=20
DELETE /v1/payment-links/{id}      # deactivate

Want customers to stay on your own branded page instead of a hosted one? Use Elements — create a payment, then mount the Payment Element on your checkout.