Creating Accounts via Enrollment Link
Learn when and how to create processing accounts using enrollment links
Payload enrollment links provide a secure, hosted onboarding experience for processing accounts. By generating a link, you can share a complete application flow with merchants, partners, or internal teams without building custom onboarding UI. This guide covers when to use enrollment links, how to generate them, and how to track enrollment progress.
Currently only processing accounts are supported for onboarding via enrollment links. If you're looking to onboard customer accounts, see our guide on Creating Accounts via the Accounts API. Support for other account types via enrollment links will be supported in a future update.
Prerequisites
Before writing any code, it's helpful to learn about the following topics.
How to use accounts and pick the right type
Learn the difference between customer, processing, and generic account types, and when to use each type.
Learn when to use entities to verify
Learn when to include entity information with an account for higher-risk payments, KYC and regulatory requirements.
When to use Enrollment Links
Use enrollment links when you need a simple way to onboard processing accounts without building custom onboarding UI in your application. Enrollment links are ideal when you want to share an application URL via email, text, or other channels, allowing merchants to complete onboarding on a Payload-hosted page.
By using enrollment links, compliance, consent, and other legal requirements are handled automatically and abstracted away. The link ensures the submitter is shown and agrees to all required terms, captures attestations, and collects sensitive information directly within a hosted, PCI-compliant environment—removing that responsibility from your application.
Common use cases
- You want to send an enrollment link via email, SMS, or messaging platforms
- You need to share an application with multiple parties who can collaboratively fill out information
- You don't want to embed onboarding UI directly in your application
- You want a turnkey, compliant, and low-code way to onboard processing accounts
- You're building an internal tool or back-office system that needs to onboard merchants
- You want to generate shareable links for sales teams, partners, or affiliates
Generating an Enrollment Link
Creating an enrollment link is a two-step process: create an intent with the
account_enrollment_link type, then share the returned URL with the merchant.
Generate a link for a new account
Create an enrollment link that will create a new processing account when completed.
This example creates an intent with:
-
type='account_enrollment_link'tells Payload to generate a hosted enrollment page -
account_enrollment_linkconfigures the link behavior (currently acceptsaccount_templateobject)
The response includes a url field that contains the secure enrollment link. Share this URL
with the merchant via email, SMS, or any other communication channel.
Link Expiration: Enrollment links are valid for 30 days by default. After expiration, you'll need to generate a new link. The link can only be used once successfully.
Generate a link for an existing account
If you've already created an account record and want to complete the enrollment via a link, you can pre-fill the account ID.
This example:
- Creates a processing account first with just a
name - Creates an enrollment link with
account_template.idset to the account ID - When the merchant completes enrollment, the existing account will be updated with their information
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 enrollment links to merchants 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 enrollment link to the merchant's email address.
This example creates an intent with:
-
type='account_enrollment_link'to generate a hosted enrollment page -
send_toobject withnameandemailfields - Payload automatically sends an email with the enrollment link to the specified address
The merchant will receive an email with a secure link to complete their enrollment.
Send enrollment link via SMS
Create an intent and automatically send the enrollment link to the merchant's phone via SMS.
This example creates an intent with:
-
type='account_enrollment_link'to generate a hosted enrollment page -
send_toobject withnameandphonefields - Payload automatically sends an SMS with the enrollment link to the specified phone number
The merchant will receive a text message with a secure link to complete their enrollment.
Phone Format: Phone numbers should be in E.164 format (e.g., +15555551234 for US numbers).
Tracking Enrollment Status
After sharing an enrollment link, you can monitor its status and completion through webhooks and API queries.
Webhook Events
Subscribe to the processing_status webhook trigger to track enrollment progress for processing
accounts. Configure a webhook with:
-
trigger:processing_status- Monitors status changes for processing accounts -
reference_object:account- Specifies the object type being monitored -
url: Your endpoint URL to receive webhook notifications
Example webhook handler:
from flask import Flask, request
app = Flask(__name__)
@app.route("/webhooks/payload", methods=["POST"])
def handle_webhook():
webhook = request.json
print("Account status changed:", webhook["triggered_on"]["id"])
# Fetch the account to check current status and handle accordingly
return "OK", 200Webhook Configuration: Create a webhook with trigger='processing_status' to receive
notifications when processing account status changes during enrollment and KYC verification.
See the Webhook Guide for details on setting up webhooks.
Query Intent Status
You can also retrieve the intent to check its status:
Security Note: Enrollment links are single-use and expire after completion or 30 days. Never share the same link with multiple merchants. Generate a unique link for each enrollment.
Enrollment Link Options
The Intent schema defines the structure and properties of intent objects in the Payload API. For enrollment links, you can configure various options.
Intent Options
Available fields when creating the intent object:
account_enrollment_linkaccount_templateentitycountryCA, USlegal_nametypebusiness, individualidpayment_methodstypeprocessingresultsaccount_idNext Steps
Configure payment routing, monitor KYC results, and build payment flows
Configure Processing Settings and Monitor Onboarding
Set up Processing Settings to configure payment routing and processing preferences, monitor identity verification with KYC Results, subscribe to Webhook Events for account and KYC status updates, and review Processing Accounts Overview to understand processing account capabilities.
Create Payment Flows for Merchants
Accept payments on behalf of processing accounts with Creating Payment Intents, store and manage customer payment methods using Payment Methods, and send payouts to processing accounts with Creating Transfers.
Build Reporting and Reconciliation
Track enrollment and payment metrics with Reporting Overview, create custom reports using Building Report Queries, and monitor payment activity with Transaction Reports for financial reconciliation.
Explore Alternative Onboarding Methods
Embed onboarding forms directly in your application with Enrollment Plugin for a more integrated experience, or use Accounts API for full programmatic control over account creation and onboarding workflows.
Related articles
- Enrollment Plugin - Embedded enrollment form alternative
- Accounts API - Create accounts directly via API
- Accounts API Reference
- Intent API Reference
- Accounts Overview
- Entity Overview