Pay
Connect Payout Methods
Enrollment Link

Collect Payout Information via Enrollment Link

Learn when and how to collect payout information using enrollment links


Payouts enrollment links provide a secure, hosted experience for collecting bank account information from recipients. By generating a link, you can share a complete enrollment flow with sellers, contractors, affiliates, or any individuals who need to receive payments without building custom onboarding UI. This guide covers when to use payouts enrollment links, how to generate them, and how to track enrollment progress.

Prerequisites

Before writing any code, it's helpful to learn about the following topics.


When to Use Payouts Enrollment Links


Use payouts enrollment links when you need a simple way to collect bank account information from recipients without building custom enrollment UI in your application. Payouts enrollment links are ideal when you want to share an enrollment URL via email, text, or other channels, allowing recipients to provide their payout details on a Payload-hosted page.

By using enrollment links, compliance requirements and sensitive data handling are managed automatically. The link ensures recipients are shown and agree to all required terms, captures necessary attestations, and collects banking information directly within a hosted, secure environment—removing that responsibility from your application.

Common use cases

  • Email or SMS Distribution: Send enrollment links directly to recipients through email campaigns, text messages, or messaging platforms
  • Minimal Development Requirements: Provide a complete enrollment experience without building custom UI or handling sensitive data in your application
  • Multi-Channel Enrollment: Share a single enrollment URL across multiple channels and platforms for flexible recipient onboarding

Generating a Payouts Enrollment Link

Creating a payouts enrollment link is a two-step process: create an intent with the payouts_enrollment_link type, then share the returned URL with the recipient.

Generate a link for a new recipient

Create a payouts enrollment link that will create a new account and payment method when completed.

import payload
pl = payload.Session('secret_key_3bW9...', api_version='v2')
 
# Generate a payouts enrollment link
 
 
 
intent = pl.Intent.create(
    type='payouts_enrollment_link'
)
 
print('Payouts enrollment link:', intent.url)
# Share this URL with recipients via email, SMS, or other channels

This example creates an intent with:

  1. type='payouts_enrollment_link' tells Payload to generate a hosted payouts enrollment page
  2. The response includes a url field containing the secure enrollment link

The response includes a url field that contains the secure enrollment link. Share this URL with the recipient via email, SMS, or any other communication channel.

Generate a link for an existing account

If you've already created an account record and want to collect payout information via a link, you can pre-fill the account ID.

import payload
 
pl = payload.Session('secret_key_3bW9...', api_version='v2')
account = pl.Account.create(
    # Create an account first
    name='John Doe',
    type='customer',
)
 
# Generate a payouts enrollment link for the existing account
intent = pl.Intent.create(
    type='payouts_enrollment_link',
    payouts_enrollment_link={
        'payment_method_template': {'account_id': account.id},
    },
)
 
print('Payouts enrollment link:', intent.url)
# When completed, the payment method will be associated with this account

This example:

  1. Creates an account first with just a name
  2. Creates a payouts enrollment link with payment_method_template.account_id set to the account ID
  3. When the recipient completes enrollment, the payment method will be associated with the existing account

Use this pattern when you want to create account records ahead of time for tracking purposes, or when you need to associate the enrollment with an existing record in your system before sending the link.


Sending Enrollment Links

You can automatically send payouts enrollment links to recipients via email or SMS by including a send_to object when creating the intent. The send_to object requires a name field and either an email or phone field.

Send enrollment link via email

Create an intent and automatically send the payouts enrollment link to the recipient's email address.

import payload
pl = payload.Session('secret_key_3bW9...', api_version='v2')
 
# Send a payouts enrollment link via email
 
 
 
intent = pl.Intent.create(
    type='payouts_enrollment_link',
    send_to=[
        {
            'name': 'Jane Smith',
            'email': '[email protected]'
        }
    ]
)
 
print('Payouts enrollment link sent to:', intent.send_to[0]['email'])

This example creates an intent with:

  1. type='payouts_enrollment_link' to generate a hosted payouts enrollment page
  2. send_to object with name and email fields
  3. Payload automatically sends an email with the enrollment link to the specified address

The recipient will receive an email with a secure link to complete their enrollment.

Send enrollment link via SMS

Create an intent and automatically send the payouts enrollment link to the recipient's phone via SMS.

import payload
pl = payload.Session('secret_key_3bW9...', api_version='v2')
 
# Send a payouts enrollment link via SMS
 
 
 
intent = pl.Intent.create(
    type='payouts_enrollment_link',
    send_to=[
        {
            'name': 'Jane Smith',
            'phone': '+15555551234'
        }
    ]
)
 
print('Payouts enrollment link sent to:', intent.send_to[0]['phone'])

This example creates an intent with:

  1. type='payouts_enrollment_link' to generate a hosted payouts enrollment page
  2. send_to object with name and phone fields
  3. Payload automatically sends an SMS with the enrollment link to the specified phone number

The recipient will receive a text message with a secure link to complete their enrollment.

Tracking Enrollment Status

After sharing a payouts enrollment link, you can monitor its status and completion through webhooks and API queries.

Webhook Events

Subscribe to webhook events to track enrollment progress. Configure a webhook to receive notifications when recipients complete enrollment.

Query Intent Status

You can retrieve the intent to check its status and access the results after completion:

import payload
pl = payload.Session('secret_key_3bW9...', api_version='v2')
 
# Query the status of a payouts enrollment intent
 
 
 
intent_id = 'int_abc123def456'
 
intent = pl.Intent.get(intent_id)
 
print('Intent status:', intent.status)
if intent.status == 'finished':
    print('Account ID:', intent.payouts_enrollment_link.results.account_id)
    print('Payment Method ID:', intent.payouts_enrollment_link.results.payment_method_id)

When the intent status is finished, the payouts_enrollment_link.results object will contain:

  • account_id - The ID of the account created or used during enrollment
  • payment_method_id - The ID of the bank account payment method that was created for receiving payouts

You can now use this payment_method_id to send payouts to the enrolled recipient.

Schema Reference


The following fields are available when creating payouts enrollment links. For complete API reference, see Intent API Reference.

Payouts Enrollment Link Configuration

Available fields when creating the payouts enrollment link:

payouts_enrollment_link
object
Configuration for the payouts enrollment link intent. Use this type to generate a hosted page URL for collecting payout information. The payouts enrollment link allows individuals or businesses to provide their bank account information for receiving payouts. Commonly used for marketplace sellers, contractors, or affiliates who need to receive payments. Returns a URL that can be shared with payees. Required when type is payouts_enrollment_link.
entity_template
object
Pre-filled legal entity information for the payouts enrollment. Allows you to specify defaults like the entity type (business/individual) and legal name. These values will populate the enrollment form to reduce friction.
country
enum[string]
The country that the enrolled legal entity is registered in. Valid countries to register are currently Canada ("CA") and the United States of America ("US").
Values: CA, US
legal_name
string
Pre-filled legal name for the entity being enrolled. For businesses, this is the registered legal business name. For individuals, this is the person's full legal name. When provided, this value will populate the legal name field in the enrollment form.
type
enum[string]
The type of legal entity being enrolled. Must be either "business" (for companies, organizations, or business entities) or "individual" (for individual persons). Determines which onboarding fields and verification requirements apply.
Values: business, individual
note
string
Optional note or message to display to the user during payouts enrollment. Use this to provide context about why payouts information is needed or what the funds will be used for. Helps improve completion rates by explaining the purpose of the enrollment.
payment_method_template
object
Pre-filled payment method information for the payouts enrollment. Allows you to specify defaults like account holder name, billing address, or transfer type. Used to populate the form where users provide their bank account for receiving payouts.
account_defaults
object
Default transaction types that this payment method will be used for. Controls whether the payment method is the default for paying or funding transactions, and which specific types of transactions it applies to.
funding
enum[string]
Controls which funding transaction types this payment method can be used for. Possible values: "all" (use for all funding transactions), "deposits" (use only for receiving deposits), or "withdraws" (use only for withdrawals). Determines the default usage for receiving funds.
Values: all, deposits, withdraws
paying
enum[string]
Controls which paying transaction type this payment method will be the default for. Possible values: "all" (use for all paying transactions), "payments" (use only for sending payments), or "payouts" (use only for receiving payouts). Determines the default usage for sending funds. If the account default is set for payments, that payment method will be used for any automatic invoice payments.
Values: all, payments, payouts
account_holder
string
Pre-filled name of the account holder for the payment method. For bank accounts, this is the name on the account. For cards, this is the cardholder name. When provided, this value will be used to populate the form.
account_id
string
The ID of the account that will own this payment method. Links the payment method to a specific customer or processing account. Used to associate the payment method with the correct account when it is created.
bank_account
object
Configuration specific to bank account payment methods. Contains bank account-specific settings such as the currency.
currency
enum[string]
The currency for bank account transactions. Must be either "USD" (US Dollars) or "CAD" (Canadian Dollars). Determines the currency for transactions using this bank account.
Values: USD, CAD
billing_address
object
Pre-filled billing address for the payment method. When provided, these values will be used to populate the address fields in the checkout form. Customers may be able to edit these values depending on checkout configuration.
address_line_1
string
Street address of the address
address_line_2
string
Unit number of the address
city
string
City of the company
country_code
string
Country code of the address
postal_code
string
Postal code of the address
state_province
string
State of the address
id
string
The unique identifier of an existing payment method to update. When provided, the form will be used to update the payment method, such as revalidating the CVV, updating the expiration date, or changing the billing address.
transfer_type
enum[string]
The transfer capabilities for this payment method. Possible values: "send_only" (can only send payments/fund payouts), "receive_only" (can only receive payouts/deposits), or "two_way" (can both send and receive). Controls how the payment method can be used for transactions.
Values: send_only, receive_only, two_way
results
object
Results from the payouts enrollment after successful completion. Contains the IDs of the created account and payment method. Read-only fields that are populated automatically when the enrollment is finished. Use these to reference the enrollment outputs.
account_id
stringRead-only
The ID of the account that was created or used during payouts enrollment. Read-only field that is populated after successful completion. Use this to identify which account the enrollment is associated with.
payment_method_id
stringRead-only
The ID of the payment method that was created for receiving payouts. Read-only field that is populated after successful completion. This is the bank account where payouts will be sent.

Next Steps

Enhance your payout recipient enrollment implementation


Send Payouts to Enrolled Recipients

Start sending payouts to enrolled recipients using the payment method IDs returned from completed enrollment links.

Monitor Enrollment Completion

Subscribe to webhook notifications to receive real-time updates when recipients complete enrollment via the link and payment methods are created.

Manage Payment Methods

Use the Payment Methods API to retrieve, update, and manage enrolled payout recipient bank accounts after they complete the enrollment link.


Related articles