Creates a payment link.
Parameters
- line_
itemsarray of hashesRequired The line items representing what is being sold. Each line item represents an item being sold. Up to 20 line items are supported.
- line_items.
quantityintegerRequired The quantity of the line item being purchased.
- line_items.
adjustable_ quantityhash When set, provides configuration for this item’s quantity to be adjusted by the customer during checkout.
- line_items.
adjustable_quantity. enabledbooleanRequired Set to true if the quantity can be adjusted to any non-negative Integer.
- line_items.
adjustable_quantity. maximuminteger The maximum quantity the customer can purchase. By default this value is 99. You can specify a value up to 999999.
- line_items.
adjustable_quantity. minimuminteger The minimum quantity the customer can purchase. By default this value is 0. If there is only one item in the cart then that item’s quantity cannot go down to 0.
- line_items.
pricestringRequired conditionally - line_items.
price_ datahashRequired conditionally Data used to generate a new Price object inline. One of
price
orprice_
is required.data - line_items.
price_data. currencyenumRequired Three-letter ISO currency code, in lowercase. Must be a supported currency.
- line_items.
price_data. productstringRequired conditionally - line_items.
price_data. product_ datahashRequired conditionally Data used to generate a new Product object inline. One of
product
orproduct_
is required.data - line_items.
price_data. product_data. namestringRequired The product’s name, meant to be displayable to the customer.
- line_items.
price_data. product_data. descriptionstring The product’s description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.
- line_items.
price_data. product_data. imagesarray of strings A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
- line_items.
price_data. product_data. metadatahash Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to
metadata
. - line_items.
price_data. product_data. tax_ codestringRecommended if calculating taxes A tax code ID.
- line_items.
price_data. recurringhash The recurring components of a price such as
interval
andinterval_
.count - line_items.
price_data. recurring. intervalenumRequired Specifies billing frequency. Either
day
,week
,month
oryear
.Possible enum valuesday
month
week
year
- line_items.
price_data. recurring. interval_ countinteger The number of intervals between subscription billings. For example,
interval=month
andinterval_
bills every 3 months. Maximum of three years interval allowed (3 years, 36 months, or 156 weeks).count=3
- line_items.
price_data. tax_ behaviorenumRecommended if calculating taxes Only required if a default tax behavior was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of
inclusive
,exclusive
, orunspecified
. Once specified as eitherinclusive
orexclusive
, it cannot be changed.Possible enum valuesexclusive
inclusive
unspecified
- line_items.
price_data. unit_ amountintegerRequired conditionally A non-negative integer in cents representing how much to charge. One of
unit_
oramount unit_
is required.amount_ decimal - line_items.
price_data. unit_ amount_ decimalstringRequired conditionally Same as
unit_
, but accepts a decimal value in cents with at most 12 decimal places. Only one ofamount unit_
andamount unit_
can be set.amount_ decimal
- metadatahash
Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to
metadata
. Metadata associated with this Payment Link will automatically be copied to checkout sessions created by this payment link.
More parameters
- after_
completionhash Behavior after the purchase is complete.
- after_completion.
typeenumRequired The specified behavior after the purchase is complete. Either
redirect
orhosted_
.confirmation Possible enum valueshosted_
confirmation Displays a message on the hosted surface after the purchase is complete.
redirect
Redirects the customer to the specified
url
after the purchase is complete. - after_completion.
hosted_ confirmationhash Configuration when
type=hosted_
.confirmation - after_completion.
hosted_confirmation. custom_ messagestring A custom message to display to the customer after the purchase is complete.
- after_completion.
redirecthash Configuration when
type=redirect
.- after_completion.
redirect. urlstringRequired The URL the customer will be redirected to after the purchase is complete. You can embed
{CHECKOUT_
into the URL to have theSESSION_ ID} id
of the completed checkout session included.
- allow_
promotion_ codesboolean Enables user redeemable promotion codes.
- application_
fee_ amountintegerConnect only 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. Can only be applied when there are no line items with recurring prices.
- application_
fee_ percentfloatConnect only A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice total that will be transferred to the application owner’s Stripe account. There must be at least 1 line item with a recurring price to use this field.
- automatic_
taxhash Configuration for automatic tax collection.
- automatic_tax.
enabledbooleanRequired Set to
true
to calculate tax automatically using the customer’s location.Enabling this parameter causes the payment link to collect any billing address information necessary for tax calculation.
- automatic_tax.
liabilityhashConnect only The account that’s liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
- automatic_tax.
liability. typeenumRequired Type of the account referenced in the request.
Possible enum valuesaccount
Indicates that the account being referenced is a connected account which is different from the account making the API request but related to it.
self
Indicates that the account being referenced is the account making the API request.
- automatic_tax.
liability. accountstringRequired only if type is account The connected account being referenced when
type
isaccount
.
- billing_
address_ collectionenum Configuration for collecting the customer’s billing address. Defaults to
auto
.Possible enum valuesauto
Checkout will only collect the billing address when necessary. When using automatic_tax, Checkout will collect the minimum number of fields required for tax calculation.
required
Checkout will always collect the customer’s billing address.
- consent_
collectionhash Configure fields to gather active consent from customers.
- consent_collection.
payment_ method_ reuse_ agreementhash Determines the display of payment method reuse agreement text in the UI. If set to
hidden
, it will hide legal text related to the reuse of a payment method.- consent_collection.
payment_method_reuse_agreement. positionenumRequired Determines the position and visibility of the payment method reuse agreement in the UI. When set to
auto
, Stripe’s defaults will be used. When set tohidden
, the payment method reuse agreement text will always be hidden in the UI.Possible enum valuesauto
Uses Stripe defaults to determine the visibility and position of the payment method reuse agreement.
hidden
Hides the payment method reuse agreement.
- consent_collection.
promotionsenum If set to
auto
, enables the collection of customer consent for promotional communications. The Checkout Session will determine whether to display an option to opt into promotional communication from the merchant depending on the customer’s locale. Only available to US merchants.Possible enum valuesauto
Enable the collection of customer consent for promotional communications. The Checkout Session will determine whether to display an option to opt into promotional communication from the merchant depending on if a customer is provided, and if that customer has consented to receiving promotional communications from the merchant in the past.
none
Checkout will not collect customer consent for promotional communications.
- consent_collection.
terms_ of_ serviceenum If set to
required
, it requires customers to check a terms of service checkbox before being able to pay. There must be a valid terms of service URL set in your Dashboard settings.Possible enum valuesnone
Does not display checkbox for the terms of service agreement.
required
Displays a checkbox for the terms of service agreement which requires customer to check before being able to pay.
- currencyenum
Three-letter ISO currency code, in lowercase. Must be a supported currency and supported by each line item’s price.
- custom_
fieldsarray of hashes Collect additional information from your customer using custom fields. Up to 3 fields are supported.
- custom_fields.
keystringRequired String of your choice that your integration can use to reconcile this field. Must be unique to this field, alphanumeric, and up to 200 characters.
- custom_fields.
labelhashRequired The label for the field, displayed to the customer.
- custom_fields.
label. customstringRequired Custom text for the label, displayed to the customer. Up to 50 characters.
- custom_fields.
label. typeenumRequired The type of the label.
Possible enum valuescustom
Set a custom label for the field.
- custom_fields.
typeenumRequired The type of the field.
Possible enum valuesdropdown
Provide a list of options for your customer to select.
numeric
Collect a numbers-only field from your customer.
text
Collect a string field from your customer.
- custom_fields.
dropdownhash Configuration for
type=dropdown
fields.- custom_fields.
dropdown. optionsarray of hashesRequired The options available for the customer to select. Up to 200 options allowed.
- custom_fields.
dropdown. options. labelstringRequired The label for the option, displayed to the customer. Up to 100 characters.
- custom_fields.
dropdown. options. valuestringRequired The value for this option, not displayed to the customer, used by your integration to reconcile the option selected by the customer. Must be unique to this option, alphanumeric, and up to 100 characters.
- custom_fields.
dropdown. default_ valuestring The value that will pre-fill the field on the payment page.Must match a
value
in theoptions
array.
- custom_fields.
numerichash Configuration for
type=numeric
fields.- custom_fields.
numeric. default_ valuestring The value that will pre-fill the field on the payment page.
- custom_fields.
numeric. maximum_ lengthinteger The maximum character length constraint for the customer’s input.
- custom_fields.
numeric. minimum_ lengthinteger The minimum character length requirement for the customer’s input.
- custom_fields.
optionalboolean Whether the customer is required to complete the field before completing the Checkout Session. Defaults to
false
. - custom_fields.
texthash Configuration for
type=text
fields.- custom_fields.
text. default_ valuestring The value that will pre-fill the field on the payment page.
- custom_fields.
text. maximum_ lengthinteger The maximum character length constraint for the customer’s input.
- custom_fields.
text. minimum_ lengthinteger The minimum character length requirement for the customer’s input.
- custom_
texthash Display additional text for your customers using custom text.
- custom_text.
after_ submithash Custom text that should be displayed after the payment confirmation button.
- custom_text.
after_submit. messagestringRequired Text may be up to 1200 characters in length.
- custom_text.
shipping_ addresshash Custom text that should be displayed alongside shipping address collection.
- custom_text.
shipping_address. messagestringRequired Text may be up to 1200 characters in length.
- custom_text.
submithash Custom text that should be displayed alongside the payment confirmation button.
- custom_text.
submit. messagestringRequired Text may be up to 1200 characters in length.
- custom_text.
terms_ of_ service_ acceptancehash Custom text that should be displayed in place of the default terms of service agreement text.
- custom_text.
terms_of_service_acceptance. messagestringRequired Text may be up to 1200 characters in length.
- customer_
creationenum Configures whether checkout sessions created by this payment link create a Customer.
Possible enum valuesalways
The Checkout Session will always create a Customer when a Session confirmation is attempted.
if_
required The Checkout Session will only create a Customer if it is required for Session confirmation. Currently, only
subscription
mode Sessions andpayment
mode Sessions with post-purchase invoices enabled require a Customer. - inactive_
messagestring The custom message to be displayed to a customer when a payment link is no longer active.
- invoice_
creationhash Generate a post-purchase Invoice for one-time payments.
- invoice_creation.
enabledbooleanRequired Whether the feature is enabled
- invoice_creation.
invoice_ datahash Invoice PDF configuration.
- invoice_creation.
invoice_data. account_ tax_ idsarray of strings The account tax IDs associated with the invoice.
- invoice_creation.
invoice_data. custom_ fieldsarray of hashes Default custom fields to be displayed on invoices for this customer.
- invoice_creation.
invoice_data. custom_fields. namestringRequired The name of the custom field. This may be up to 40 characters.
- invoice_creation.
invoice_data. custom_fields. valuestringRequired The value of the custom field. This may be up to 140 characters.
- invoice_creation.
invoice_data. descriptionstring An arbitrary string attached to the object. Often useful for displaying to users.
- invoice_creation.
invoice_data. string Default footer to be displayed on invoices for this customer.
- invoice_creation.
invoice_data. issuerhashConnect only The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
- invoice_creation.
invoice_data. issuer. typeenumRequired Type of the account referenced in the request.
Possible enum valuesaccount
Indicates that the account being referenced is a connected account which is different from the account making the API request but related to it.
self
Indicates that the account being referenced is the account making the API request.
- invoice_creation.
invoice_data. issuer. accountstringRequired only if type is account The connected account being referenced when
type
isaccount
.
- invoice_creation.
invoice_data. metadatahash Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to
metadata
. - invoice_creation.
invoice_data. rendering_ optionshash Default options for invoice PDF rendering for this customer.
- invoice_creation.
invoice_data. rendering_options. amount_ tax_ displayenum How line-item prices and amounts will be displayed with respect to tax on invoice PDFs. One of
exclude_
ortax include_
.inclusive_ tax include_
will include inclusive tax (and exclude exclusive tax) in invoice PDF amounts.inclusive_ tax exclude_
will exclude all tax (inclusive and exclusive alike) from invoice PDF amounts.tax Possible enum valuesexclude_
tax include_
inclusive_ tax - invoice_creation.
invoice_data. rendering_options. templatestring ID of the invoice rendering template to use for this invoice.
- on_
behalf_ ofstringConnect only The account on behalf of which to charge.
- optional_
itemsarray of hashes A list of optional items the customer can add to their order at checkout. Use this parameter to pass one-time or recurring Prices. There is a maximum of 10 optional items allowed on a payment link, and the existing limits on the number of line items allowed on a payment link apply to the combined number of line items and optional items. There is a maximum of 20 combined line items and optional items.
- optional_items.
pricestringRequired - optional_items.
quantityintegerRequired The initial quantity of the line item created when a customer chooses to add this optional item to their order.
- optional_items.
adjustable_ quantityhash When set, provides configuration for the customer to adjust the quantity of the line item created when a customer chooses to add this optional item to their order.
- optional_items.
adjustable_quantity. enabledbooleanRequired Set to true if the quantity can be adjusted to any non-negative integer.
- optional_items.
adjustable_quantity. maximuminteger The maximum quantity of this item the customer can purchase. By default this value is 99.
- optional_items.
adjustable_quantity. minimuminteger The minimum quantity of this item the customer must purchase, if they choose to purchase it. Because this item is optional, the customer will always be able to remove it from their order, even if the
minimum
configured here is greater than 0. By default this value is 0.
- payment_
intent_ datahash A subset of parameters to be passed to PaymentIntent creation for Checkout Sessions in
payment
mode.- payment_intent_data.
capture_ methodenum Controls when the funds will be captured from the customer’s account.
Possible enum valuesautomatic
Stripe automatically captures funds when the customer authorizes the payment.
automatic_
async (Default) Stripe asynchronously captures funds when the customer authorizes the payment. Recommended over
capture_
due to improved latency. Read the integration guide for more information.method=automatic manual
Place a hold on the funds when the customer authorizes the payment, but don’t capture the funds until later. (Not all payment methods support this.)
- payment_intent_data.
descriptionstring An arbitrary string attached to the object. Often useful for displaying to users.
- payment_intent_data.
metadatahash Set of key-value pairs that will declaratively set metadata on Payment Intents generated from this payment link. Unlike object-level metadata, this field is declarative. Updates will clear prior values.
- payment_intent_data.
setup_ future_ usageenum Indicates that you intend to make future payments with the payment method collected by this Checkout Session.
When setting this to
on_
, Checkout will show a notice to the customer that their payment details will be saved.session When setting this to
off_
, Checkout will show a notice to the customer that their payment details will be saved and used for future payments.session If a Customer has been provided or Checkout creates a new Customer,Checkout will attach the payment method to the Customer.
If Checkout does not create a Customer, the payment method is not attached to a Customer. To reuse the payment method, you can retrieve it from the Checkout Session’s PaymentIntent.
When processing card payments, Checkout also uses
setup_
to dynamically optimize your payment flow and comply with regional legislation and network rules, such as SCA.future_ usage Possible enum valuesoff_
session Use
off_
if your customer may or may not be present in your checkout flow.session on_
session Use
on_
if you intend to only reuse the payment method when your customer is present in your checkout flow.session - payment_intent_data.
statement_ descriptorstring Text that appears on the customer’s statement as the statement descriptor for a non-card charge. This value overrides the account’s default statement descriptor. For information about requirements, including the 22-character limit, see the Statement Descriptor docs.
Setting this value for a card charge returns an error. For card charges, set the statement_descriptor_suffix instead.
- payment_intent_data.
statement_ descriptor_ suffixstring Provides information about a card charge. Concatenated to the account’s statement descriptor prefix to form the complete statement descriptor that appears on the customer’s statement.
- payment_intent_data.
transfer_ groupstringConnect only A string that identifies the resulting payment as part of a group. See the PaymentIntents use case for connected accounts for details.
- payment_
method_ collectionenum Specify whether Checkout should collect a payment method. When set to
if_
, Checkout will not collect a payment method when the total due for the session is 0.This may occur if the Checkout Session includes a free trial or a discount.required Can only be set in
subscription
mode. Defaults toalways
.If you’d like information on how to collect a payment method outside of Checkout, read the guide on configuring subscriptions with a free trial.
Possible enum valuesalways
The Checkout Session will always collect a PaymentMethod.
if_
required The Checkout Session will only collect a PaymentMethod if there is an amount due.
- payment_
method_ typesarray of enums The list of payment method types that customers can use. If no value is passed, Stripe will dynamically show relevant payment methods from your payment method settings (20+ payment methods supported).
- phone_
number_ collectionhash Controls phone number collection settings during checkout.
We recommend that you review your privacy policy and check with your legal contacts.
- phone_number_collection.
enabledbooleanRequired Set to
true
to enable phone number collection.
- restrictionshash
Settings that restrict the usage of a payment link.
- restrictions.
completed_ sessionshashRequired Configuration for the
completed_
restriction type.sessions - restrictions.
completed_sessions. limitintegerRequired The maximum number of checkout sessions that can be completed for the
completed_
restriction to be met.sessions
- shipping_
address_ collectionhash Configuration for collecting the customer’s shipping address.
- shipping_address_collection.
allowed_ countriesarray of enumsRequired An array of two-letter ISO country codes representing which countries Checkout should provide as options for shipping locations.
Possible enum valuesAC
AD
AE
AF
AG
AI
AL
AM
AO
AQ
Show 228 more
- shipping_
optionsarray of hashes The shipping rate options to apply to checkout sessions created by this payment link.
- shipping_options.
shipping_ ratestring The ID of the Shipping Rate to use for this shipping option.
- submit_
typeenum Describes the type of transaction being performed in order to customize relevant text on the page, such as the submit button. Changing this value will also affect the hostname in the url property (example:
donate.
).stripe. com Possible enum valuesauto
Default value.
pay
will used in all scenariosbook
Recommended when offering bookings. Submit button includes a ‘Book’ label and URLs use the
book.
hostnamestripe. com donate
Recommended when accepting donations. Submit button includes a ‘Donate’ label and URLs use the
donate.
hostnamestripe. com pay
Submit button includes a ‘Buy’ label and URLs use the
buy.
hostnamestripe. com subscribe
Submit button includes a ‘Subscribe’ label and URLs use the
buy.
hostnamestripe. com - subscription_
datahash 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 - subscription_data.
descriptionstring The subscription’s description, meant to be displayable to the customer. Use this field to optionally store an explanation of the subscription for rendering in Stripe surfaces and certain local payment methods UIs.
- subscription_data.
invoice_ settingshash All invoices will be billed using the specified settings.
- subscription_data.
invoice_settings. issuerhashConnect only The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
- subscription_data.
invoice_settings. issuer. typeenumRequired Type of the account referenced in the request.
Possible enum valuesaccount
Indicates that the account being referenced is a connected account which is different from the account making the API request but related to it.
self
Indicates that the account being referenced is the account making the API request.
- subscription_data.
invoice_settings. issuer. accountstringRequired only if type is account The connected account being referenced when
type
isaccount
.
- subscription_data.
metadatahash Set of key-value pairs that will declaratively set metadata on Subscriptions generated from this payment link. Unlike object-level metadata, this field is declarative. Updates will clear prior values.
- subscription_data.
trial_ period_ daysinteger Integer representing the number of trial period days before the customer is charged for the first time. Has to be at least 1.
- subscription_data.
trial_ settingshash Settings related to subscription trials.
- subscription_data.
trial_settings. end_ behaviorhashRequired Defines how the subscription should behave when the user’s free trial ends.
- subscription_data.
trial_settings. end_behavior. missing_ payment_ methodenumRequired Indicates how the subscription should change when the trial ends if the user did not provide a payment method.
Possible enum valuescancel
Cancel the subscription if a payment method is not attached when the trial ends.
create_
invoice Create an invoice when the trial ends, even if the user did not set up a payment method.
pause
Pause the subscription if a payment method is not attached when the trial ends.
- tax_
id_ collectionhash Controls tax ID collection during checkout.
- tax_id_collection.
enabledbooleanRequired Enable tax ID collection during checkout. Defaults to
false
. - tax_id_collection.
requiredenum Describes whether a tax ID is required during checkout. Defaults to
never
.Possible enum valuesif_
supported A tax ID will be required if collection is supported for the selected billing address country.
never
Tax ID collection is never required.
- transfer_
datahashConnect only The account (if any) the payments will be attributed to for tax reporting, and where funds from each payment will be transferred to.
- transfer_data.
destinationstringRequired If specified, successful charges will be attributed to the destination account for tax reporting, and the funds from charges will be transferred to the destination account. The ID of the resulting transfer will be returned on the successful charge’s
transfer
field. - transfer_data.
amountinteger The amount that will be transferred automatically when a charge succeeds.
Returns
Returns the payment link.
{ "id": "plink_1MoC3ULkdIwHu7ixZjtGpVl2", "object": "payment_link", "active": true, "after_completion": { "hosted_confirmation": { "custom_message": null }, "type": "hosted_confirmation" }, "allow_promotion_codes": false, "application_fee_amount": null, "application_fee_percent": null, "automatic_tax": { "enabled": false, "liability": null }, "billing_address_collection": "auto", "consent_collection": null, "currency": "usd", "custom_fields": [], "custom_text": { "shipping_address": null, "submit": null }, "customer_creation": "if_required", "invoice_creation": { "enabled": false, "invoice_data": { "account_tax_ids": null, "custom_fields": null, "description": null, "footer": null, "issuer": null, "metadata": {}, "rendering_options": null } }, "livemode": false, "metadata": {}, "on_behalf_of": null, "payment_intent_data": null, "payment_method_collection": "always", "payment_method_types": null, "phone_number_collection": { "enabled": false }, "shipping_address_collection": null, "shipping_options": [], "submit_type": "auto", "subscription_data": { "description": null, "invoice_settings": { "issuer": { "type": "self" } }, "trial_period_days": null }, "tax_id_collection": { "enabled": false }, "transfer_data": null, "url": "https://buy.stripe.com/test_cN25nr0iZ7bUa7meUY"}