How to Resolve Payments Made to an Expired Account

Dynamic virtual accounts and one-time invoices are designed for speed and security. Due to this, they come with a strict validity window.

But what happens if a customer makes payment after expiry?

Here is how Monnify handles late payments, and how you can resolve them without losing the sale.



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 an invalid transaction.

  1. Not successful: The system will not recognize the payment as successful. It is treated as a failed or invalid transaction because the account number is no longer active.
  2. No Value Delivered: Because the invoice is closed, your automated system will not confirm the order, and the customer will not receive their goods or services.
  3. Funds are Reversed: In most cases, the banking network will instantly reject the transfer, and the funds will automatically reverse back to the customer's source account.

To actually complete the order, your customer has to generate a new invoice or payment link. Never ask the customer to try paying into the expired account again.



Best Practices to Prevent Expired Payments

Stop late payments before they happen by optimizing your checkout flow:

  1. Communicate the Urgency: Add a simple warning: "This account number expires in 30 minutes. Do not save for later use."
  2. Upgrade to Reserved Accounts: If you have repeat customers who pay you frequently, stop using one-off dynamic accounts. Assign them a Reserved Account. Read more about Reserved Accounts.
  3. Connect with Your Webhooks: Ensure your backend is actively listening for the EXPIRED webhook status. If you receive this status, your frontend should immediately hide the account number and prompt the user to "Generate a New Payment Method."