Home/Developers/Quickstart
DevelopersQuickstart

Accept your first stablecoin payment in 5 minutes.

Get an API key. Make one POST request. Share the link. Real code, real endpoints — same flow as the production API.

//Before you start4 things you need01/05
  • 01

    PYMSTR account

    Free. No KYB. Sign up in 5 minutes via social login.

  • 02

    API key

    Created in the PYMSTR dashboard. Store server-side only.

  • 03

    Settlement wallet

    Bring your own self-custody wallet, or PYMSTR creates an embedded wallet for you on signup — you hold the keys either way.

  • 04

    Webhook endpoint

    Configure your webhook URL in the dashboard so PYMSTR can notify your backend when payments complete. Optional: set a redirect URL the customer returns to after paying.

//Step 01 · Create the paymentPOST /v1/payments02/05

One POST. That's the integration.

Send an amount and a currency. PYMSTR returns a paymentUrl your customer pays at. Optional fields (acceptedChains, acceptedTokens, externalId, expiresAt, sellers) let you restrict the customer's options or wire up marketplace splits.

POST https://api.pymstr.com/v1/paymentsrequest
curl -X POST https://api.pymstr.com/v1/payments \
  -H "Authorization: Bearer pk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "49.99",
    "currency": "USD",
    "title": "Order #1234",
    "externalId": "order-1234"
  }'

Response · 201 Created

response
{
  "id": "8f3a9c2d-1b6e-4d8a-9c2e-3f4b5d6e7a8c",
  "status": "ACTIVE",
  "amount": "49.99",
  "currency": "USD",
  "title": "Order #1234",
  "externalId": "order-1234",
  "acceptedChains": [1, 42161, 8453, 137, 56],
  "acceptedTokens": ["USDC", "USDT"],
  "pymstrFee": "0.50",
  "merchantFee": "49.49",
  "paymentUrl": "https://pay.pymstr.com/p/8f3a9c2d-1b6e-4d8a-9c2e-3f4b5d6e7a8c",
  "expiresAt": "2026-05-20T07:00:00Z",
  "createdAt": "2026-05-19T07:00:00Z"
}
//Step 02 · Share the linkpaymentUrl03/05

One URL. Anywhere your customer is.

The response's paymentUrl is a hosted PYMSTR page — you don't build a checkout, you don't render anything customer-facing. Drop it into whatever channel reaches the customer.

paymentUrlhosted by PYMSTR
https://pay.pymstr.com/p/8f3a9c2d-1b6e-4d8a-9c2e-3f4b5d6e7a8c
EMAIL

Send in an email

Link the URL from your transactional emails or order confirmations.

INVOICE

Link from your invoice

Embed the URL as the "Pay now" CTA on PDF or HTML invoices.

SMS

Send via SMS or chat

Short URL — copies cleanly into texts, WhatsApp, Telegram, Slack.

REDIRECT

Redirect from your app

After the customer hits "Pay" in your checkout, redirect them to the paymentUrl.

At the URL, the customer signs in (social login or wallet connect), picks from the chains + tokens you accept, and signs one transaction. Funds settle directly to your wallet on-chain.

//Step 03 · Get notifiedpayment.completed04/05

Webhook fires when the chain confirms.

Configure a webhook endpoint in Dashboard → Webhooks. Once a customer pays, PYMSTR sends a payment.completed event with the paymentId. The funds are already in your wallet — the webhook is for your accounting and order-fulfilment side.

See /developers/webhooks for more.

//Quickstart questions5 answers05/05
Sign up at the PYMSTR dashboard, then create a key in the API Keys section. Treat the key like any other production secret and store it securely in the backend. See docs.pymstr.com for the full key-management flow.
No. PYMSTR creates an embedded wallet for the customer via social login (Google, email, SMS, Apple) the first time they visit the paymentUrl. Your only requirement is that the customer holds USDC or USDT on a chain you accept.
No — PYMSTR doesn't support testnet, so there is no staging API key tier. For staging or local-dev work, create a separate API key inside your account (or use a dedicated low-volume merchant account) and validate with small-amount real payments before going live.
PYMSTR settlement is stable-in. The customer needs USDC or USDT on a supported chain to pay. If your customer base is fiat-only today, PYMSTR is best deployed alongside your existing card processor — the stablecoin rail is additive, not a replacement.
Include a sellers array on the POST /v1/payments call. PYMSTR routes each split on-chain at settlement — no manual ledger work after the customer pays. See docs.pymstr.com for the current per-payment cap and full schema.

Build with the stablecoin rail.