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_paymentscapability 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 whentransfersis 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.