PayMeNow Docs

Partner quickstart

End-to-end integration in four steps. Paste these commands and you have a working embed.

1. Get a partner API key

Partner credentials are issued by the PayMeNow team. Email us with your platform name and expected volume. You receive a key that looks like:

pmn_partner_XXXXXXXXXXXXXXXXXXXXXXXX

Store it as a secret on your backend.

2. Provision a merchant

curl -X POST https://paymenow.dev/api/partner/clients \
  -H "Authorization: Bearer pmn_partner_XXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "owner@merchant.com",
    "name": "Acme Co",
    "fee_percent": 5
  }'

Response:

{
  "client_id": "e2a0...",
  "api_key": "pmn_live_XXXXXXXXXXXXXXXXXXXXXXXX",
  "secret_key": "pmn_sec_XXXXXXXXXXXXXXXXXXXXXXXX",
  "webhook_secret": "pmn_whsec_...",
  "dashboard_url": "https://paymenow.dev/dashboard/"
}

Save client_id, api_key (public, for embeds) and secret_key (server-side only, for programmatic product management) keyed to your user. The call is idempotent on email within your partner account — safe to retry.

The response's webhook_secret is intended for verifying normalized PayMeNow webhooks. Automatic outbound webhook delivery is not currently enabled; use the merchant dashboard/API for payment status.

3. Create a product

curl -X POST https://paymenow.dev/api/partner/clients/$CLIENT_ID/products \
  -H "Authorization: Bearer pmn_partner_XXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Pro Plan",
    "amount": 2500,
    "currency": "usd"
  }'

Response:

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Pro Plan",
  "amount": 2500,
  "currency": "usd",
  "active": true,
  "created_at": "2026-10-02T10:00:00Z"
}

Amounts are in the currency's smallest unit (cents, pence, etc).

4. Render the embed

Drop this into the merchant's page. Use the api_key from step 2 and the product id from step 3:

<div id="paymenow-form"
  data-api-key="pmn_live_XXXXXXXXXXXXXXXXXXXXXXXX"
  data-product-id="550e8400-e29b-41d4-a716-446655440000">
</div>
<script src="https://paymenow.dev/embed/paymenow.js"></script>

Done. The merchant can take card payments. Payment records appear in their dashboard; a payment remains pending until PayMeNow receives Stripe's success event.

What happens next

  • Buyers see an inline card form, enter card details, pay. No redirect.
  • Payments initially use the PayMeNow platform account. Once the connected account's card_payments capability is active, PayMeNow attempts direct charges. If Stripe reports that direct card payments are unavailable, checkout falls back to a platform charge.
  • The merchant logs into /dashboard/ using their email + a one-time code to see payments and balance.
  • When the merchant wants to receive funds, they complete Stripe Connect setup in the dashboard. Direct charges begin only when Stripe enables card_payments; successful platform-held payments are transferred when transfers is active and PayMeNow has sufficient available balance.
  • Your platform never handles card data. PayMeNow handles Stripe account creation and charge routing.

Full embed variants

The embed has five modes: product-based (above), raw amount, tip jar, backend-driven, and cart. See Getting started for the full list.