public
POST /v1/pay/partner/{token}
Pay a partner's domain order on our checkout. Unauthenticated.
Authentication
This endpoint is public. It takes no credential and no organisation — it is what our own marketing site and AI answer engines read.
This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.
Try it
Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.
curl -X POST https://api.zinndigital.com/v1/pay/partner/{token} \
-H "Content-Type: application/json" \
-d '{ }'Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console
Details
With an empty body or {"rail": …}: the chosen rail is opened. Card gives a card-setup client_token (status: setup_required, nothing charged); PayPal gives a paypal_order_id for the wallet overlay (status: paypal_approval_required, nothing charged); crypto gives a redirect_url to the vendor invoice. With setup_intent_id, after the card form is confirmed: the card is re-read from the gateway, refused unless it belongs to this order's organization, recorded, and charged. With paypal_order_id, after the buyer approved: PayPal is asked to capture — the browser is never believed. When the order is paid, return_url is the partner's URL to send the browser to. ⛔ Nothing here decides an order is paid — the capture and the gateway webhook do, as for every order. A refusal the payer can act on is a 409 carrying its sentence.
Parameters
| Name | Type | Required | What it is |
|---|---|---|---|
token (path) | string | Yes | — |
Request body
| Name | Type | Required | What it is |
|---|---|---|---|
rail | string | No | The rail the payer chose, from the rails the GET offered. Omitted means the default. A rail this order cannot settle on is refused with a sentence — it is never silently… |
setup_intent_id | string | No | — |
paypal_order_id | string | No | — |
Response
| Name | Type | Required | What it is |
|---|---|---|---|
status | string | Yes | — |
settled | boolean | Yes | — |
client_token | string | Yes | A card-form client secret for the browser SDK, when one is needed. |
setup_intent_id | string | Yes | — |
redirect_url | string | Yes | Where to send the browser to approve the payment on a rail that finishes off-site — a crypto invoice today. Empty on the card and PayPal rails, both of which finish on this page. |
action_kind | string | Yes | — |
paypal_order_id | string | Yes | The PayPal order the browser's SDK attaches to, on the PayPal rail. Minted by us — an id a client invents is refused by the gateway, not honoured. |
rail | string | Yes | Which rail this step belongs to (stripe, paypal, nowpayments). |
return_url | string | Yes | The partner URL to send the browser to |
Errors this endpoint can return
404 · 409 · 422 · 429