Personalised Links
Personalised payment links are unique URLs for a customer to complete a specific payment. This is ideal for:
- Staff initiated customer payments: eg a customer service agent creates a payment link for a customer to complete without needing to share sensitive payment information with the agent
- Workflow automation: eg as part of a Zapier or Make.com workflow eg on invoice creation send a payment link
- Programmatic creation: via API, either sent to the customer to linked to from a button
Personalised payment links offer the features of multi-use links, with several additions:
- AI Auto-fill: Use the power of AI to automatically fill payment link fields using natural language when interacting over a chat interface
- Customer Information: Attach customer data to the payment link to streamline checkout.
- Custom State: Attach up to 10kb of custom data to the payment link to facilitate workflow automation.
- Personalised Completion Messages: Share a user specific message after a successful payment, for example an access code.
- Personalised Completion Redirects: Send the user to a URL after a successful payment, for example a resource behind a paywall
- Receipt Skip: Use your own bespoke receipt page after payment
- Payment Action: You can specify various types of payment actions like payment, auth only, or tokenise
- Link Expiry: Control how long the payment link is available for.
AI Auto Fill
To use AI auto fill, you can include a auto_fill_text parameter in the payment link creation request. This will extract payment link fields using natural language (eg "create a payment link for John Doe (customer ABC123) for $10 for booking 178836"). This will only fill fields passed with the text string auto, allowing you to control what fields are auto-filled. For example you might want the name and page_intro to be static, while the amount and alt_key to be auto-filled.
Customer Information
You can include the following information about a customer:
crm_key: Customer's identifier - this must be passed if you want to display saved cards from previous payment sessions. A singleaccountwill exist in Shuttle for eachcrm_key, meaning updates in email / phone will apply to previous payment sessions, and known data from previous payment sessions will auto populate if not passed.email: Customer's email addressphone: Customer's phone number (international format preferred) eg441234567890for+44 12345 56789first_name: Customer's first namelast_name: Customer's last namecompany: Customer's company nameaddress: Customer's address, used to prepopulate card AVS fields where requiredline1: Street addressline2: Address line 2line3: Address line 3line4: City/Townline5: Post code/ZIP codeline6: State/Province (using ISO 3166-2 subdivision codes, e.g., 'CA' for California)country: Country ISO code (e.g., 'US' for United States)
All fields are optional, however:
crm_key: is highly recommended if you have a customer identifier to ensure data is linked together - this can be any string, such as a database IDemail: is recommended if you are using Shuttle's receipting- Some cards require 3D secure, which requires
phoneoremailbe available - If your payment processor uses AVS (address verification), passing
addresswill pre-populate the address fields, making checkout much quicker first_name,last_name,phoneandemailare passed to the payment processor where available to assist viewing payment data in the processor's dashboard / reporting
Custom State
You can attach up to 10kb of custom data to the payment link to facilitate workflow automation. For example you could include order / contact information for how the payment link was generated, so once its paid (or expired) you can automate order fulfillment / customer notification.
Programatically, its a single field state which is a JSON object, when using Workflow automation this is presented as 9x text fields (state1 - state9) to eliminate the need for field composition / decomposition steps.
We recommend you use these as such:
state1: Workflow identifier, egINVOICE_PAYMENT,INVOICE_CHASER,EVENT_PAYMENT- this allows you to filter payment link webhooks to just those for a specific workflow.state2-state9: Workflow-specific data, eg incoming slack channel / message id, or order / contact information.
Personalised Completion Messages
You can attach a personalised completion message to the payment link to display after a successful payment. This can include sensitive information, as it is securely held on the server side until payment success or payment pending.
A payment can complete in two statuses:
- Success: The payment was successful and the transaction was completed -
page_success_messagewill be displayed - Pending: The payment is still pending and the transaction has not been completed -
page_pending_messagewill be displayed.
Completion messages are showing on teh receipt page and on the payment receipt. Please note, using skip_receipt and disabling customer email receipts will prevent the customer from seeing the message.
Personalised Completion Redirects
You can attach a personalised completion redirect to the payment link to redirect to after a successful payment. This can include sensitive information, as it is securely held on the server side until payment success or payment pending.
A payment can complete in two statuses:
- Success: The payment was successful and the transaction was completed -
success_urlwill be displayed - Pending: The payment is still pending and the transaction has not been completed -
pending_urlwill be displayed.
Completion redirects are shown as a "Next" button on the receipt page, unless skip_receipt is set to true in which case the redirect will be shown after payment processing.
Receipt Skip
A payment link will show a receipt page on successful submission, unless skip_receipt is set to true in which case the receipt will be skipped allowing you to customise the page after payment. This is only applicable where a success_url or pending_url is set.
Payment Action: PAYMENT / AUTH / TOKENISE
Shuttle Payment Links allow tyhe following actions:
- PAYMENT: Process payment immediately
- AUTH: Reserve funds without immediate capture, you can capture funds later via the "Activity" view or via API
- TOKENISE: Capture card details, without taking payment
In addition, you can store payment details while performing PAYMENT / AUTH, but setting save_card: true
Please note: Only payment methods that can perform the requested option will be displayed. For example, ACH doesn't support AUTH only, Apple Pay doesn't support TOKENISE / save_card: true.
Link Expiry
You can attach a lifecycle management to the payment link to set an expiry date for the payment link via expires parameter or expires_in parameter (in seconds). After the expiry has been reached, the payment link will not render, and payment submissions will fail.
Typical use cases include:
- Syncing with your session expiry, eg if you are only holding goods in a basket for 15 minutes, set
expires_in: 900(15 minutes) - Times sensitive events, eg a ticket sale, set
expires: "2025-06-20T12:00:00Z"(the time you want ticket sales to stop)
Updated 11 days ago