Send a payment link

Collect a payment without writing an integration at all.

A payment link is a URL that collects money. No client, no callback handling — send it to somebody and they pay.

Create one

curl -X POST https://sandbox.inversepay.app/api/b/v1/payment-links \
  -H "Authorization: Bearer $INVERSEPAY_TEST_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Invoice 1042",
    "currency": "RWF",
    "amount_minor": 2500000,
    "usage": "single_use"
  }'

amount_minor is 25,000 RWF. Only title and currency are required — leave the amount out and set "amount_type": "open" to let the payer choose, with min_amount_minor and max_amount_minor to bound it.

Field
usagesingle_use or reusable
amount_typefixed or open
expires_atISO 8601. After this the link stops accepting payments
redirect_urlwhere the payer lands after paying

What you get back

The response carries the link's URL and its id. Send the URL; keep the id.

Then what

A paid link produces a charge, the same object a direct charge produces — so whatever you already do with charges works here without a second code path. Watch for it with the charge.succeeded webhook, or poll GET /charges.

Disable a link without deleting it:

curl -X POST https://sandbox.inversepay.app/api/b/v1/payment-links/$LINK_ID/disable \
  -H "Authorization: Bearer $INVERSEPAY_TEST_KEY"

Creating and disabling links needs a dashboard session, not an API key: a link publishes a request for payment under your brand, so it is held to the seats accountable for that. An API key can read links with payments:read. See Authentication.

On this page