PaymentLink
A payment link is a shareable URL that will take your customers to a hosted payment page. A payment link can be shared and used multiple times. When a customer opens a payment link it will open a new [checkout session](https://stripe.com/docs/api/checkout/sessions) to render the payment page. You can use [checkout session events](https://stripe.com/docs/api/events/types#event_types-checkout.session.completed) to track payments through payment links. Related guide: [Payment Links API](https://stripe.com/docs/payment-links)
Properties
| Name | Type | Description |
|---|---|---|
| active | boolean | Whether the payment link's `url` is active. If `false`, customers visiting the URL will be shown a page saying that the link has been deactivated. |
| after_completion | object | |
| allow_promotion_codes | boolean | Whether user redeemable promotion codes are enabled. |
| application | object | The ID of the Connect application that created the Payment Link. |
| application_fee_amount | integernull | The amount of the application fee (if any) that will be requested to be applied to the payment and transferred to the application owner's Stripe account. |
| application_fee_percent | numbernull | This represents the percentage of the subscription invoice total that will be transferred to the application owner's Stripe account. |
| automatic_tax | object | |
| billing_address_collection | string | Configuration for collecting the customer's billing address. |
| consent_collection | object | When set, provides configuration to gather active consent from customers. |
| currency | string | Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies). |
| custom_fields | array | Collect additional information from your customer using custom fields. Up to 2 fields are supported. |
| custom_text | object | |
| customer_creation | string | Configuration for Customer creation during checkout. |
| id | string | Unique identifier for the object. |
| inactive_message | stringnull | The custom message to be displayed to a customer when a payment link is no longer active. |
| invoice_creation | object | Configuration for creating invoice for payment mode payment links. |
| line_items | object | The line items representing what is being sold. |
| livemode | boolean | Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode. |
| metadata | object | Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. |
| object | string | String representing the object's type. Objects of the same type share the same value. |
| on_behalf_of | object | The account on behalf of which to charge. See the [Connect documentation](https://support.stripe.com/questions/sending-invoices-on-behalf-of-connected-accounts) for details. |
| payment_intent_data | object | Indicates the parameters to be passed to PaymentIntent creation during checkout. |
| payment_method_collection | string | Configuration for collecting a payment method during checkout. |
| payment_method_types | arraynull | The list of payment method types that customers can use. When `null`, Stripe will dynamically show relevant payment methods you've enabled in your [payment method settings](https://dashboard.stripe.co |
| phone_number_collection | object | |
| restrictions | object | Settings that restrict the usage of a payment link. |
| shipping_address_collection | object | Configuration for collecting the customer's shipping address. |
| shipping_options | array | The shipping rate options applied to the session. |
| submit_type | string | Indicates the type of transaction being performed which customizes relevant text on the page, such as the submit button. |
| subscription_data | object | When creating a subscription, the specified configuration data will be used. There must be at least one line item with a recurring price to use `subscription_data`. |
| tax_id_collection | object | |
| transfer_data | object | The account (if any) the payments will be attributed to for tax reporting, and where funds from each payment will be transferred to. |
| url | string | The public URL that can be shared with customers. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/stripe/main/json-schema/stripe-payment-link-schema.json",
"title": "PaymentLink",
"description": "A payment link is a shareable URL that will take your customers to a hosted payment page. A payment link can be shared and used multiple times.\n\nWhen a customer opens a payment link it will open a new [checkout session](https://stripe.com/docs/api/checkout/sessions) to render the payment page. You can use [checkout session events](https://stripe.com/docs/api/events/types#event_types-checkout.session.completed) to track payments through payment links.\n\nRelated guide: [Payment Links API](https://stripe.com/docs/payment-links)",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/stripe-payment-links-api-openapi.yml#/components/schemas/payment_link",
"properties": {
"active": {
"description": "Whether the payment link's `url` is active. If `false`, customers visiting the URL will be shown a page saying that the link has been deactivated.",
"type": "boolean"
},
"after_completion": {
"$ref": "#/$defs/payment_links_resource_after_completion"
},
"allow_promotion_codes": {
"description": "Whether user redeemable promotion codes are enabled.",
"type": "boolean"
},
"application": {
"anyOf": [
{
"maxLength": 5000,
"type": "string"
},
{
"$ref": "#/$defs/application"
},
{
"$ref": "#/$defs/deleted_application"
}
],
"description": "The ID of the Connect application that created the Payment Link.",
"x-expansionResources": {
"oneOf": [
{
"$ref": "#/$defs/application"
},
{
"$ref": "#/$defs/deleted_application"
}
]
}
},
"application_fee_amount": {
"description": "The amount of the application fee (if any) that will be requested to be applied to the payment and transferred to the application owner's Stripe account.",
"type": [
"integer",
"null"
]
},
"application_fee_percent": {
"description": "This represents the percentage of the subscription invoice total that will be transferred to the application owner's Stripe account.",
"type": [
"number",
"null"
]
},
"automatic_tax": {
"$ref": "#/$defs/payment_links_resource_automatic_tax"
},
"billing_address_collection": {
"description": "Configuration for collecting the customer's billing address.",
"enum": [
"auto",
"required"
],
"type": "string"
},
"consent_collection": {
"anyOf": [
{
"$ref": "#/$defs/payment_links_resource_consent_collection"
}
],
"description": "When set, provides configuration to gather active consent from customers."
},
"currency": {
"description": "Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).",
"type": "string"
},
"custom_fields": {
"description": "Collect additional information from your customer using custom fields. Up to 2 fields are supported.",
"items": {
"$ref": "#/$defs/payment_links_resource_custom_fields"
},
"type": "array"
},
"custom_text": {
"$ref": "#/$defs/payment_links_resource_custom_text"
},
"customer_creation": {
"description": "Configuration for Customer creation during checkout.",
"enum": [
"always",
"if_required"
],
"type": "string"
},
"id": {
"description": "Unique identifier for the object.",
"maxLength": 5000,
"type": "string"
},
"inactive_message": {
"description": "The custom message to be displayed to a customer when a payment link is no longer active.",
"maxLength": 5000,
"type": [
"string",
"null"
]
},
"invoice_creation": {
"anyOf": [
{
"$ref": "#/$defs/payment_links_resource_invoice_creation"
}
],
"description": "Configuration for creating invoice for payment mode payment links."
},
"line_items": {
"description": "The line items representing what is being sold.",
"properties": {
"data": {
"description": "Details about each object.",
"items": {
"$ref": "#/$defs/item"
},
"type": "array"
},
"has_more": {
"description": "True if this list has another page of items after this one that can be fetched.",
"type": "boolean"
},
"object": {
"description": "String representing the object's type. Objects of the same type share the same value. Always has the value `list`.",
"enum": [
"list"
],
"type": "string"
},
"url": {
"description": "The URL where this list can be accessed.",
"maxLength": 5000,
"type": "string"
}
},
"required": [
"data",
"has_more",
"object",
"url"
],
"title": "PaymentLinksResourceListLineItems",
"type": "object",
"x-expandableFields": [
"data"
]
},
"livemode": {
"description": "Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.",
"type": "boolean"
},
"metadata": {
"additionalProperties": {
"maxLength": 500,
"type": "string"
},
"description": "Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.",
"type": "object"
},
"object": {
"description": "String representing the object's type. Objects of the same type share the same value.",
"enum": [
"payment_link"
],
"type": "string"
},
"on_behalf_of": {
"anyOf": [
{
"maxLength": 5000,
"type": "string"
},
{
"$ref": "#/$defs/account"
}
],
"description": "The account on behalf of which to charge. See the [Connect documentation](https://support.stripe.com/questions/sending-invoices-on-behalf-of-connected-accounts) for details.",
"x-expansionResources": {
"oneOf": [
{
"$ref": "#/$defs/account"
}
]
}
},
"payment_intent_data": {
"anyOf": [
{
"$ref": "#/$defs/payment_links_resource_payment_intent_data"
}
],
"description": "Indicates the parameters to be passed to PaymentIntent creation during checkout."
},
"payment_method_collection": {
"description": "Configuration for collecting a payment method during checkout.",
"enum": [
"always",
"if_required"
],
"type": "string"
},
"payment_method_types": {
"description": "The list of payment method types that customers can use. When `null`, Stripe will dynamically show relevant payment methods you've enabled in your [payment method settings](https://dashboard.stripe.com/settings/payment_methods).",
"items": {
"enum": [
"affirm",
"afterpay_clearpay",
"alipay",
"au_becs_debit",
"bacs_debit",
"bancontact",
"blik",
"boleto",
"card",
"cashapp",
"eps",
"fpx",
"giropay",
"grabpay",
"ideal",
"klarna",
"konbini",
"link",
"oxxo",
"p24",
"paynow",
"paypal",
"pix",
"promptpay",
"sepa_debit",
"sofort",
"us_bank_account",
"wechat_pay"
],
"type": "string",
"x-stripeBypassValidation": true
},
"type": [
"array",
"null"
]
},
"phone_number_collection": {
"$ref": "#/$defs/payment_links_resource_phone_number_collection"
},
"restrictions": {
"anyOf": [
{
"$ref": "#/$defs/payment_links_resource_restrictions"
}
],
"description": "Settings that restrict the usage of a payment link."
},
"shipping_address_collection": {
"anyOf": [
{
"$ref": "#/$defs/payment_links_resource_shipping_address_collection"
}
],
"description": "Configuration for collecting the customer's shipping address."
},
"shipping_options": {
"description": "The shipping rate options applied to the session.",
"items": {
"$ref": "#/$defs/payment_links_resource_shipping_option"
},
"type": "array"
},
"submit_type": {
"description": "Indicates the type of transaction being performed which customizes relevant text on the page, such as the submit button.",
"enum": [
"auto",
"book",
"donate",
"pay"
],
"type": "string"
},
"subscription_data": {
"anyOf": [
{
"$ref": "#/$defs/payment_links_resource_subscription_data"
}
],
"description": "When creating a subscription, the specified configuration data will be used. There must be at least one line item with a recurring price to use `subscription_data`."
},
"tax_id_collection": {
"$ref": "#/$defs/payment_links_resource_tax_id_collection"
},
"transfer_data": {
"anyOf": [
{
"$ref": "#/$defs/payment_links_resource_transfer_data"
}
],
"description": "The account (if any) the payments will be attributed to for tax reporting, and where funds from each payment will be transferred to."
},
"url": {
"description": "The public URL that can be shared with customers.",
"maxLength": 5000,
"type": "string"
}
},
"required": [
"active",
"after_completion",
"allow_promotion_codes",
"automatic_tax",
"billing_address_collection",
"currency",
"custom_fields",
"custom_text",
"customer_creation",
"id",
"livemode",
"metadata",
"object",
"payment_method_collection",
"phone_number_collection",
"shipping_options",
"submit_type",
"tax_id_collection",
"url"
],
"type": "object",
"x-expandableFields": [
"after_completion",
"application",
"automatic_tax",
"consent_collection",
"custom_fields",
"custom_text",
"invoice_creation",
"line_items",
"on_behalf_of",
"payment_intent_data",
"phone_number_collection",
"restrictions",
"shipping_address_collection",
"shipping_options",
"subscription_data",
"tax_id_collection",
"transfer_data"
],
"x-resourceId": "payment_link",
"$defs": {
"account": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"application": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"deleted_application": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"item": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_after_completion": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_automatic_tax": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_consent_collection": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_custom_fields": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_custom_text": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_invoice_creation": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_payment_intent_data": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_phone_number_collection": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_restrictions": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_shipping_address_collection": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_shipping_option": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_subscription_data": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_tax_id_collection": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
},
"payment_links_resource_transfer_data": {
"type": "object",
"description": "Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.",
"x-ae-placeholder": true
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/stripe-payment-link"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.