# razorpay payment link expired before the customer paid

## TL;DR
The link's expiry passed before the customer paid, so Razorpay retired it. Create a fresh payment link for the same invoice and send it with a longer expiry window this time. If links keep expiring, your expiry default is shorter than your customers' payment behavior.

```text
razorpay payment link expired before the customer paid
```

## Steps

1. Check the link status in the Razorpay dashboard to confirm it is expired, not cancelled or paid. Success check: you see the expired state with its original expiry timestamp.
2. Create a new payment link for the same amount and invoice reference. Success check: the new link opens and shows the correct amount.
3. Set an expiry window that matches reality: longer for B2B invoices, and send reminders before expiry. Success check: the expiry date is after your next reminder.
4. Notify the customer with the new link and note the old one is dead so they do not keep retrying it. Success check: the customer confirms the new link works.
5. If this recurs, raise the default expiry in your link-creation code and add an agent job that flags links expiring within 24 hours. Success check: expired-before-payment stops appearing in support.

## When this applies

- A Razorpay payment link shows as expired when the customer opens it.
- The invoice is still open and the amount unchanged.
- Expiry windows are short relative to how long customers take to pay.

## When it doesn't

- Payment link creation failing; that is an API error, not expiry.
- The customer paid but the invoice still shows open; check settlement instead.
- Links disabled by fraud holds; those show a different status.

## Tool + version compatibility

Razorpay payment links, dashboard and API creation (all current versions).

### "razorpay payment link expire"
Create a fresh link with a realistic expiry window.

### "razorpay link expired customer cannot pay"
The old link is dead; a new one is the only fix.

### "razorpay payment link expiry time"
Set expiry to match your reminder cadence, not the API default.

## Why it happens

Payment links carry an expiry timestamp. When it passes, Razorpay retires the link and there is nothing to revive; the customer just sees a dead page. Defaults are often much shorter than real B2B payment cycles, and agent-built flows that create links on invoice issue rarely adjust them. Expired links are silent revenue leaks: the invoice stays open and nobody follows up.

## Edge cases / pitfalls

- Creating a second link does not cancel the first; track link ids per invoice so you know which one was paid.
- If the amount changed since the link was created, cancel the old link explicitly and reference the new one.
- Do not reuse the same short expiry after a complaint; match the window to your actual reminder schedule.
- Log link creation and expiry events so an agent can chase unpaid links before they die.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_7XSntl7EI_KAus0KupumIg
