Skip to main content

Payment Links

Payment links are shareable URLs that open a hosted checkout page. Create a link, share it via email, social media, or embed it in a button — and customers can pay without you building any checkout UI.
amount
number
required
Payment amount.
currency
string
default:"USD"
Currency code: USD, EUR, GBP.
token
string
default:"USDC"
Token to accept: USDC, USDT, SOL.
description
string
Description shown on the checkout page.
max_uses
integer
Maximum number of times this link can be used. Omit for unlimited.
expires_at
string
ISO 8601 expiration date for the link itself.
metadata
object
Arbitrary key-value pairs.
onramp
boolean
default:"false"
Enable fiat onramp (NGN to USDC) for this link. The checkout page will present a Pay with Bank option powered by the PAJ Ramp flow.
amount_ngn
number
Original NGN amount for exact PAJ conversion. Bypasses a live FX re-quote at checkout time. Only relevant when onramp is true.
payer_service_charge
boolean
default:"false"
When true (and onramp is true), a transparent service charge — max(₦30, ceil(amount_ngn × 2.5%)) — is added on top and billed to the payer rather than absorbed by the merchant.
collect_customer_info
boolean
default:"false"
When true, the checkout shows an expanded form to collect customer details (name, phone, company, billing address) before the payment step.
customer
CustomerObject
Optional pre-filled customer object. When present:
  • The checkout page skips the email / customer-info collection step entirely and shows a single “Continue to Pay” button instead.
  • The customer data is passed directly into the payment / onramp flow (no manual input required from the payer).
  • max_uses is automatically forced to 1 — customer-scoped links are always single-use, regardless of any max_uses value supplied in the request.

Examples

Response


Returns all payment links for the authenticated merchant.

Retrieves a specific payment link by its code. This endpoint is public — it does not require authentication. This is how the checkout page loads link data.
The unique link code (e.g., abc123xyz).

Creates a new payment from a payment link. This is called by the checkout page when a customer opens the link. It is public — no authentication required. When this endpoint is called, it:
  1. Validates the link is active, not expired, and has remaining uses.
  2. Creates a new payment with the link’s parameters.
  3. Returns the payment details including wallet address and QR code.

Use Cases

Invoicing

Create a link and email it to your client. They click, pay, done.

Social Commerce

Share payment links on Twitter, Discord, or Telegram. Accept payments from anywhere.

Event Registration

Set max_uses to your event capacity. Each registration creates a tracked payment.

Donations / Tips

Create an open-ended link for recurring or variable-amount contributions.
When onramp is set to true, the checkout page shows a Pay with Bank option. The customer transfers NGN via bank transfer, which is converted to USDC and settled directly to your wallet.
See the Fiat Onramp guide for details on the full flow.
Pass a customer object when you already know who is paying — for example, when generating a link programmatically from an order management system or a checkout flow on your backend.
Checkout behaviour when customer is present:
  1. The hosted checkout page loads normally.
  2. Instead of showing the email / customer-info form it shows the customer’s name and a “Continue to Pay” button.
  3. Clicking the button proceeds directly to the payment step (crypto wallet or PAJ onramp virtual account screen), with the customer details pre-populated.

Trust and Safety on Hosted Checkout

Hosted checkout includes security controls designed to protect both merchants and customers:
  1. Risk-based payment checks are applied during payment creation, transaction build, and submission.
  2. Sanctions screening is applied during create-payment and transaction-build checkpoints.
  3. Submission-time fraud gates prevent stale-risk bypasses after initial checkout steps.

What customers may see

Depending on risk outcomes, customers may experience:
  • normal payment flow
  • temporary hold / additional review requirement
  • blocked payment attempt
If a payment is blocked or held for review, show neutral language:
“Your payment requires additional security review. Please contact support with your payment ID.”
Avoid showing internal fraud rule details or threshold values in customer-facing UI. For full policy and operations guidance, see Fraud and Compliance.
Because max_uses is locked to 1, customer-scoped links are ideal for invoice payment links, programmatic order links, and any scenario where you need a one-time, identity-bound checkout URL.