How to Resolve Payments Made to an Expired Account
Dynamic virtual accounts and one-time invoices are built for speed and security, and that comes with a strict validity window. When a customer misses that window and pays after expiry, it can feel like a lost sale.
Here is how Monnify handles late payments, and how to resolve them cleanly.
What Happens to the Transaction?
When a customer pays after the expiry of a Monnify virtual account or dynamic invoice, the payment is treated as invalid. Here's what that means:
- The payment is not recognised as successful. Since the account number is no longer active, the system treats the transaction as failed.
- No value is delivered. Because the invoice is already closed, your system will not fulfil the order; the customer will not receive their goods or services.
- The funds are reversed. In most cases, the banking network rejects the transfer outright and the funds are automatically returned to the customer's source account.
To complete the order, the customer needs to generate a new invoice or payment link. Do not ask them to retry the expired account, it will not work.
Best Practices to Prevent Expired Payments
Stop late payments before they happen by optimizing your checkout flow:
- Communicate the Urgency: Add a visible warning to your checkout flow: "This account number expires in 30 minutes. Do not save it for later use."
- Switch Repeat Customers to Reserved Accounts.: If you have customers who pay you regularly, assign them Reserved Accounts (a virtual account tied to a customer’s profile and doesn’t expire). For more information, read more about Reserved Accounts.
- Connect with Your Webhooks: Ensure your backend is actively listening for the EXPIRED webhook status. When this event comes in, your frontend should immediately hide the expired account number and prompt the user to generate a new payment method.