Accepting Payments via Payment Requests
Learn when and how to accept one-time payments using payment request links
Payment requests provide a simple way to collect one-time payments through secure, hosted payment pages. By generating a payment request link, you can accept payments without building custom checkout UI. Share links via email, SMS, or any communication channel—customers complete payment on a Payload-hosted page and you're notified when payment is received.
Payment requests are ideal for one-time payments, invoices, and ad-hoc payment collection. For recurring payments and reusable links, see Payment Pages. For embedded checkout experiences, see Checkout Plugin.
Prerequisites
Before creating payment requests, it's helpful to learn about the following topics.
Learn about processing accounts
Processing accounts enable you to receive payments and settle funds to your bank account.
Learn about customer accounts
Customer accounts enable saved payment methods and faster checkout for payment requests.
When to Use Payment Requests
Use payment requests when you need a simple way to collect one-time payments from existing customers without building custom checkout UI. Payment requests are single-use links that expire after 60 days or upon successful payment completion.
Payment requests require a customer account to link the payment to a specific customer. This enables saved payment methods and pre-populates customer information for faster checkout.
By using payment requests, PCI compliance and sensitive payment data handling are managed automatically. The hosted page ensures secure collection of card and bank account details in a compliant environment—removing that responsibility from your application.
Common use cases
- Invoice Payments: Generate payment links for invoices and billing statements
- Email Payment Requests: Send payment links via email for one-time purchases
- SMS Payment Collection: Share payment links via text message for mobile payments
- Ad-hoc Payments: Create instant payment links for services or products
- Payment Reminders: Send payment request links for overdue balances
Creating a Payment Request
Creating a payment request requires linking it to a customer account. Create a payment link with
the one_time type, then share the returned URL with your customer.
Generate a payment request
Create a payment request linked to a customer account.
This example creates a payment link with:
-
type='one_time'tells Payload to generate a single-use payment link -
descriptionprovides context about what the customer is paying for -
amountsets the payment amount -
biller.account_idspecifies the account that will receive the payment -
payer.account_idlinks the payment request to a customer account (required)
The customer account pre-populates customer information and enables saved payment methods for faster checkout.
Link Expiration: Payment requests expire after 60 days and can only be used once successfully. After expiration or completion, you'll need to generate a new link.
Generate a request for an invoice
Create a payment request linked to an existing invoice.
This example:
- Links the payment request to an existing invoice
- Automatically uses the invoice amount and description
- Associates the payment with the invoice biller
- Updates the invoice status when payment is received
When associated with an invoice, the payment amount and biller are automatically inherited from the invoice and cannot be overridden.
Configuring Payment Options
Payment requests support checkout configuration options, allowing you to control payment methods, fees, custom fields, and UI behavior.
Payment Methods
Control which payment types are available during checkout:
This configuration:
- Enables card payments (Visa, Mastercard, American Express, Discover)
- Disables bank account payments
- Enables Apple Pay and Google Pay for customers on compatible devices
Editable Amount
Allow customers to change the payment amount, useful for donations or variable payments:
This configuration:
- Displays the initial amount as $50
- Allows customers to change the amount to any value they choose
- Useful for donation forms, tips, or customer-determined payments
Custom Fields
Collect additional information from customers during checkout:
This configuration:
- Adds custom form fields grouped by section
- Collects service type and additional notes
- Field values are stored in the transaction
attrsobject - Supports text, email, phone, date, and other field types
Sending Payment Requests
You can automatically send payment requests to customers via email or SMS by including payer information when creating the link.
Send payment request via email
Create a payment link and automatically send it to the customer's email address.
This example creates a payment link with:
-
payer.nameandpayer.emailto identify the customer - Payload automatically sends an email with the payment link
- The customer receives a professional email with instructions
The customer will receive an email with a secure link to complete their payment.
Send payment request via SMS
Create a payment link and automatically send it to the customer's phone via SMS.
This example creates a payment link with:
-
payer.nameandpayer.phoneto identify the customer - Payload automatically sends an SMS with the payment link
- The customer receives a text message with the short URL
The customer will receive a text message with a secure link to complete their payment.
Phone Format: Phone numbers should be in E.164 format (e.g., +15555551234 for US numbers).
Tracking Payment Status
After creating a payment request, you can monitor its status and completion through webhooks and API queries.
Webhook Events
Subscribe to the processed webhook trigger to track successful payments. Configure a webhook
with:
-
trigger:processed- Monitors successful payment completion -
reference_object:transaction- 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
if webhook["trigger"] == "processed" and webhook["triggered_on"]["type"] == "payment":
transaction = webhook["triggered_on"]
print("Payment successful:", transaction["id"])
# Update order status in your database
# Send confirmation email
return "OK", 200Webhook Configuration: Create a webhook with trigger='processed' to receive
notifications when payments complete successfully. See the Webhook Guide for
details on setting up webhooks.
Query Link Status
You can also retrieve the payment link to check its status:
When the payment is completed, the transaction_id field will be populated with the ID of the
completed transaction, allowing you to retrieve full transaction details.
Payment link statuses:
-
active- Link is ready to use -
sent- Link has been sent to customer -
delivered- Link delivery confirmed -
completed- Payment has been received -
expired- Link has expired (60 days)
Security Note: Payment requests are single-use and expire after completion or 60 days and a unique link should be generated for each payment request.
Schema Reference
The following fields are available when configuring payment request links:
Payment Link Configuration
Configuration options passed when creating the payment link. For complete API reference, see Payment Links API Reference.
typeone_time, reusabledescriptionamountbilleraccountAccountaccount_id ID of Account^acct_[A-Za-z0-9]+$invoice_id=nullpayeraccountAccountaccount_id ID of Account^acct_[A-Za-z0-9]+$invoice_id ID of Invoice^inv_[A-Za-z0-9]+$checkout_optionsauto_billing_togglebank_account_paymentsbilling_addresscard_paymentsdefault_payment_optioncard, bank_accountenable_mobile_walletsenable_plaidkeep_active_togglepayment_method_previewshow_disclosurefield_optionsamount_fieldeditable, staticcustom_fieldspayer_fieldsrequired, optional, disabledNext Steps
Enhance your payment request implementation
Create Customer Accounts
Create customer accounts to enable saved payment methods and faster checkout for payment requests.
Link to Invoices
Create invoices and generate payment requests automatically linked to invoice details.
Monitor Payment Events
Subscribe to webhook notifications to track payment status and automate order fulfillment.
Related articles
- Payment Pages - Multi-use payment links
- Checkout Plugin - Embedded checkout form alternative
- Payment Links API Reference
- Transactions API Reference