Payment Links
Status:
contracted_test./v1/payment_linkscreate / retrieve / update / list return the Stripepayment_linkenvelope under the active merchant, and the hosted page renders onpay.fluveo.com/p/{id}with signed explicit continuation. The suite is managed with a Fluveosk_test_*merchant secret key. Processor keys are not public API credentials. See API coverage.
A Payment Link is a hosted URL you share with a customer — in an email, an invoice, a chat — and they pay on a Fluveo-hosted page without any checkout UI on your side. Each Fluveo link is a reusable merchant-owned template; every explicit customer continuation creates a fresh Checkout Session or PaymentIntent correlated to that template. It is the no-code sibling of Checkout Sessions: a session is created per purchase by your server, whereas a link is created once and reused.
What works today
- The CRUD API is live in test mode.
POST /v1/payment_links(create),GET /v1/payment_links/:id(retrieve),POST /v1/payment_links/:id(update, includingactive=falseto deactivate), andGET /v1/payment_links(list, with cursor pagination) all return the Stripepayment_linkenvelope. - Line items are readable.
GET /v1/payment_links/:id/line_itemsreturns the link’s items. - The hosted page is live in test mode. A link renders the same Fluveo-hosted payment experience as Checkout — see the hosted page.
- Create and manage links in the dashboard.
The Stripe shape
Create a link with Stripe’s line_items: 1–20 items, each with its quantity
and either a catalog price ID or inline price_data (currency,
unit_amount, optional product_data with its required name). Every item uses
one currency, and Fluveo collapses the items into one authoritative total for
payment creation.
Public /v1 accepts and returns only Stripe’s names (ADR 0004 as amended). Flat
amount pricing, description, expires_at, customer-chosen amounts, a bound
customer, pricing edits and the expire operation are hidden because they do
not follow the Stripe parity ADR; the API answers them as Stripe answers an
unknown parameter or URL. The dashboard still offers
them. A link created through the API never expires, as on Stripe (links created
before this change keep their former 24-hour expiry): it stays
payable until it is deactivated or reaches its completed-sessions limit.
The create body is application/x-www-form-urlencoded and the mutating create
honors the Idempotency-Key header. An identical retry replays the original
answer with Idempotent-Replayed: true; reusing the key with different parameters
is a 400 idempotency_error, and a retry while the first request still runs is a
409 idempotency_error. Keys expire after 24 hours.
See /v1/payment_links in the API Reference for the full request
and object shape.
Hidden from the public API
Each item below is hidden because it does not follow the Stripe parity ADR (ADR 0004 as amended). The hidden public /v1 registry lists every
hidden item. Public /v1 answers a hidden operation as an unknown URL, refuses a hidden request
parameter or value with Stripe’s invalid_request_error, and omits a hidden response key.
- the request parameter
amountofPOST /v1/payment_links(HIDE0-021) - the request parameter
amountofPOST /v1/payment_links(HIDE0-022) - the request parameter
descriptionofPOST /v1/payment_links(HIDE0-023) - the request parameter
expires_atofPOST /v1/payment_links(HIDE0-024) - the response key
amountofPOST /v1/payment_links(HIDE0-025) - the response key
createdofPOST /v1/payment_links(HIDE0-026) - the response key
descriptionofPOST /v1/payment_links(HIDE0-027) - the response key
expires_atofPOST /v1/payment_links(HIDE0-028) - the operation
POST /v1/payment_links/{payment_link}/expire(HIDE0-039) - the query parameter
statusofGET /v1/payment_links(HIDE0-054) - the response key
amountofGET /v1/payment_links(HIDE0-055) - the response key
createdofGET /v1/payment_links(HIDE0-056) - the response key
descriptionofGET /v1/payment_links(HIDE0-057) - the response key
expires_atofGET /v1/payment_links(HIDE0-058) - the response key
amountofGET /v1/payment_links/{payment_link}(HIDE0-065) - the response key
createdofGET /v1/payment_links/{payment_link}(HIDE0-066) - the response key
descriptionofGET /v1/payment_links/{payment_link}(HIDE0-067) - the response key
expires_atofGET /v1/payment_links/{payment_link}(HIDE0-068) - the request parameter
descriptionofPOST /v1/payment_links/{payment_link}(HIDE0-076) - the request parameter
expires_atofPOST /v1/payment_links/{payment_link}(HIDE0-077) - the response key
amountofPOST /v1/payment_links/{payment_link}(HIDE0-078) - the response key
createdofPOST /v1/payment_links/{payment_link}(HIDE0-079) - the response key
descriptionofPOST /v1/payment_links/{payment_link}(HIDE0-080) - the response key
expires_atofPOST /v1/payment_links/{payment_link}(HIDE0-081)