A payment link is a convenient way to bring a customer into a payment flow. It does not by itself remember what is due next month or decide what happens after a failed payment.
The link should point to a known obligation
Generate the link from an invoice or account context so the merchant already knows the amount, customer and billing period.
Avoid generic links that force staff to work out what the payment was for after the fact.
A recurring payment link should be safe to reopen
If the invoice is already paid, opening the old link should show that state rather than start another collection attempt.
If an earlier attempt is unresolved, the page should show a checking state rather than encourage a second payment.
Where payment links work well
- pre-due and due-date reminders;
- customer-initiated retry after a final failed or expired attempt;
- wallet selection when several methods are enabled;
- small businesses not ready for a deeply embedded checkout.
Where they are not enough
The business still needs invoice state, payment-attempt history, reminder suppression, recovery policy and reconciliation.
Use the checkout-states guide for the customer experience after the link opens.
A payment link should be stateful even if the URL is static
The safest pattern is for the URL to resolve the current invoice state on every open. The page can then decide whether to show payment methods, a checking message, a receipt or an expired/cancelled notice.
That means forwarding an old link or opening it twice does not automatically create a second charge.
Protect links from becoming customer identifiers
Do not put predictable personal information or raw account numbers in a URL if the link grants access to invoice details. Use an opaque token or authenticated session according to the merchant's risk model, and expire or revoke links where appropriate.
Links are especially useful in recovery
After a final failed or expired attempt, the recovery system can send a link that reopens the same invoice and offers the payment methods currently enabled for that customer and merchant.
The link should not carry a stale assumption that M-PESA, Airtel Money or another route is still valid. Method availability should be checked when the page loads.
Measure link performance as part of billing
- link opened;
- payment method selected;
- attempt created;
- payment completed;
- invoice already paid when link opened;
- support contact after opening.
Those events help the merchant distinguish a messaging problem from a payment-method problem.



