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 single account will exist in Shuttle for each crm_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 address
  • phone: Customer's phone number (international format preferred) eg 441234567890 for +44 12345 56789
  • first_name: Customer's first name
  • last_name: Customer's last name
  • company: Customer's company name
  • address: Customer's address, used to prepopulate card AVS fields where required
    • line1: Street address
    • line2: Address line 2
    • line3: Address line 3
    • line4: City/Town
    • line5: Post code/ZIP code
    • line6: 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 ID
  • email: is recommended if you are using Shuttle's receipting
  • Some cards require 3D secure, which requires phone or email be available
  • If your payment processor uses AVS (address verification), passing address will pre-populate the address fields, making checkout much quicker
  • first_name, last_name, phone and email are 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, eg INVOICE_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_message will be displayed
  • Pending: The payment is still pending and the transaction has not been completed - page_pending_message will 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_url will be displayed
  • Pending: The payment is still pending and the transaction has not been completed - pending_url will 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)