Sign in
An image of the Stripe logo
Create account
Sign in
Home
Payments
Business operations
Financial services
Developer tools
No-code
All products
Home
Payments
Business operations
Home
Payments
Business operations
Financial services
Developer tools
Overview
Online payments
Products and prices
Invoicing
Subscriptions
Quotes
In-person payments
Multiparty payments
    Overview
    Get started
    Collect payments then pay out
    Enable other businesses to accept payments directly
    Pay out money
    Explore Connect
    Onboard your accounts
    Choose your account type
    Standard
    Express
    Custom
    Service agreement types
    Payment methods
    Account capabilities
    Additional verifications
    Update verified info
    Connect embedded UIs
    Quickstart
    Get started with Connect embedded UIs
    Accept payments
    Create a charge
    Create a payments page
    Create payment links with Connect
    Connect integration guide
    Automatic payment methods
    Set statement descriptors
    Connect platforms using the Payment Methods API
    Create subscriptions
    Create invoices
    Debit Express and Custom connected accounts
    Pay out
    Set bank and debit card payouts
    Bank accounts
    Manage payout schedule
    Manual payouts
    Payout reversals
    Instant Payouts
    Cross-border payouts
    Crypto payouts
    Manage funds
    Add money to your platform balance
    Account balance
    Handle multiple currencies
    Manage accounts
    Best practices
    Listen for updates
    Dashboard account management
    Understanding risk offerings
    Platform controls for Standard accounts
    Make API calls for connected accounts
    Set MCCs
    Testing
    Manage tax forms
    Overview
    Get started with tax reporting
    1099 Tax Support and Communication Guide
    Tax form settings
    Calculation methods
    File tax forms
    File tax forms with states
    Identify forms with missing information
    Update tax forms
    Deliver tax forms
    E-delivery for 1099 tax forms
    Correct tax forms
    Split tax forms
    Tax year changeover
    What's new for tax year 2022
After the payment
Add payment methods
Payment Links
Stripe Checkout
Stripe Elements
About the APIs
Regulation support
Implementation guides
Testing
Connect
·
HomePaymentsMultiparty payments

Create payment links with Connect

With Connect, you can create payment links for connected accounts, optionally taking fees in the process.

Learn more about Connect

Don’t know much about Connect? Check out our Overview article.

You can create payment links for connected accounts, which support several approaches for collecting payments. You can use direct charges to create them directly on the connected account. Alternatively, you can create payment links on the platform with transfers to the connected account by using destination charges. You can also take an application fee on these payment links.

Create a payment link using direct charges

To create an payment link that directly charges on a connected account, create a payment link while authenticated as the connected account. For this to work, you must also create the product and the price on the connected account.

Command Line
curl https://api.stripe.com/v1/payment_links \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d line_items[0][price]=
{{PRICE_ID}}
\ -d line_items[0][quantity]=1 \ -H "Stripe-Account:
{{CONNECTED_ACCOUNT_ID}}
"

When you use direct charges, the connected account is responsible for the cost of the Stripe fees, refunds, and chargebacks.

Create a payment link using destination charges

To create a payment link that charges on the platform and creates automatic transfers to a connected account, create a payment link while providing the connected account ID as the transfer_data[destination] value.

Command Line
curl https://api.stripe.com/v1/payment_links \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d line_items[0][price]=
{{PRICE_ID}}
\ -d line_items[0][quantity]=1 \ -d "transfer_data[destination]"=
{{CONNECTED_ACCOUNT_ID}}

For this to work, you must also create the product and the price on the platform account. When using automatic transfers, the platform is the business of record.

When performing destination charges, Payment Links uses the brand settings of your platform account for the payment page. See the Customize branding section for more information.

Create a payment link using destination charges and on_behalf_of

You can also create a destination charge with the on_behalf_of parameter set to the connected account ID (by default, it is the platform). The on_behalf_of parameter determines the settlement merchant, which affects:

  • Whose statement descriptor the end user sees
  • Whose address and phone number the end user sees
  • The settlement currency of the charge
  • The payment page branding the customer sees
Command Line
curl https://api.stripe.com/v1/payment_links \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d line_items[0][price]=
{{PRICE_ID}}
\ -d line_items[0][quantity]=1 \ -d on_behalf_of=
{{CONNECTED_ACCOUNT_ID}}
\ -d "transfer_data[destination]"=
{{CONNECTED_ACCOUNT_ID}}

Fulfill orders placed through payment links

After an end user pays through a payment link you need to enable your connected accounts to handle any fulfillment necessary.

Configure a webhook endpoint in your dashboard.

Then create an HTTP endpoint on your server to monitor for completed payments. Make sure to replace the endpoint secret key (whsec_...) in the example with your key.

server.rb
# Using Sinatra. require 'sinatra' require 'stripe' set :port, 4242 # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
# If you are testing your webhook locally with the Stripe CLI you # can find the endpoint's secret by running `stripe listen` # Otherwise, find your endpoint's secret in your webhook settings in # the Developer Dashboard endpoint_secret = 'whsec_...' post '/webhook' do payload = request.body.read sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil # Verify webhook signature and extract the event. # See https://stripe.com/docs/webhooks/signatures for more information. begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload. status 400 return rescue Stripe::SignatureVerificationError => e # Invalid Signature. status 400 return end if event['type'] == 'checkout.session.completed' session = event['data']['object'] connected_account_id = event['account'] handle_completed_checkout_session(connected_account_id, session) end status 200 end def handle_completed_checkout_session(connected_account_id, session) # Fulfill the purchase. puts 'Connected account ID: ' + connected_account_id puts session.to_s end

Learn more in our fulfillment guide.

OptionalCollect application fees

OptionalCustomize branding

Was this page helpful?
Need help? Contact Support.
Watch our developer tutorials.
Check out our product changelog.
Questions? Contact Sales.
Powered by Markdoc
You can unsubscribe at any time. Read our privacy policy.
On this page
Create a payment link using direct charges
Create a payment link using destination charges
Create a payment link using destination charges and
Fulfill orders placed through payment links
Collect application fees
Customize branding
Stripe Shell
Test mode
Welcome to the Stripe Shell! Stripe Shell is a browser-based shell with the Stripe CLI pre-installed. Login to your Stripe account and press Control + Backtick on your keyboard to start managing your Stripe resources in test mode. - View supported Stripe commands: - Find webhook events: - Listen for webhook events: - Call Stripe APIs: stripe [api resource] [operation] (e.g. )
The Stripe Shell is best experienced on desktop.
$