Create a payment link
Create a Stripe checkout link for the quote total on the sub-account's connected Stripe account. Every call also creates a new pending invoice. The link is saved on the quote and included when you email it.
POST
https://api.centerfy.ai/webhooks/inbound/quotes/:id/payment-link Headers
| Header | Required | Value | Description |
|---|---|---|---|
x-api-key | Yes | your sub-account API key (cfy_…) | Authenticates the request; or use Authorization: Bearer <key>. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | The quote or estimate id. |
Example
curl -X POST "https://api.centerfy.ai/webhooks/inbound/quotes/{id}/payment-link" \
-H "x-api-key: $CENTERFY_API_KEY" import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.quotes.createPaymentLink("<quoteId>");
console.log(result); centerfy quotes payment-link <quoteId> MCP tool: centerfy_quotes_create_payment_link (see MCP server)
Response
{
"status": "success",
"quote_id": "f2a3b4c5-d6e7-4f8a-9b0c-1d2e3f4a5b6c",
"payment_url": "https://checkout.example.com/pay/cs_test_example",
"invoice_id": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
"invoice_number": "INV-2026-0013"
}Errors
400— if the quote total isn’t greater than zero, no payment account is connected, or the connection has expired.502— if the link could not be created.404— if the quote is not in this sub-account.
Notes
Call it once per quote — repeated calls create extra invoices.