{
  "$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
    }
  }
}