Skip to main content

Late Payments

important

This type of payment is specific for Merchant Payment Services / Payment Links only.

Late payments occur when cryptocurrency arrives after a payment has already expired or been marked as COMPLETE or UNDERPAID. This situation can arise if:

  • The blockchain confirmation is delayed.
  • The user sends funds late.
  • They attempt to top up an already finalized payment.

Why and when do payments expire?

We don't want to leave payments in the PENDING state indefinitely if a user never sends any funds. Therefore, each payment has an expiry window:

  • If you specify expiryMinutes and the payment is still in a PENDING or PROCESSING state after that time, it will expire once that many minutes elapse without reaching a COMPLETE or UNDERPAID status.
  • If you don't specify expiryMinutesin the payment request, your default expiration period, as configured in your merchant settings, will be used.
  • The default expiry time of 60 minutes will be used for payments, meaning the currencies exchange quote is locked for this period. So if the customer pays later, we won't guarantee that the exchange rate will be the same as the one when the payment was created.
    • That require an FX conversion between the currency that is being paid and the currency of your MID wallet, and
    • With no expiryMinutes specified, and
    • No default expiration setting configured.

Example: the customer wants to pay 300 USDC from their ETH wallet. The current rate is 1 ETH = 1000 USDC, and it's locked for one hour. If the customer pays later, the rate might have changed, so the payment will be settled at the new rate. So the payment might be settled at 1 ETH = 1100 USDC, meaning the customer will receive 263.16 USDC instead of 300 USDC. And vice versa, if the rate is 1 ETH = 900 USDC, the customer will receive 333.33 USDC instead of 300 USDC.

For greater flexibility of when customers send their funds and how much, use cryptocurrency top-ups.

How do I know the payment has expired?

Once a payment expires, you receive a statusChanged webhook with the status field showing EXPIRED.

How do I know a payment is a late payment?

You will receive a transactionLate webhook, meaning funds have been received for a payment with the status of expired, complete, or underpaid. The walletCurrency.actual value is the credited amount in your wallet currency.

📘 Payment states

In most cases, the payment's status remains EXPIRED status after funds have been received. If an additional payment is received for a COMPLETE or UNDERPAID payment this is still categorized as 'late' and the payments will remain in those states.

Late payments exception flows

The summary of the flow for three different outcomes is given below:

ConfigurationBalance impactStatus
Settle Merchant WalletReceived amount is credited to your MID wallet in your wallet currency. No further action required.For more information on a MID wallet, refer to the merchant setup guide.EXPIRED
Handle ManuallyReceived amount is deposited into the merchant cryptocurrency wallet. This allows you to refund these funds to customers if you choose to do so.You can also convert this cryptocurrency amount into your MID wallet using a spot FX rate on the BVNK portal.EXPIRED
Auto RefundLate payment amount is attributed to a new refund payout that will be auto-created for your MID wallet.EXPIRED``PENDING (refund)

note

To change your configuration or learn more, contact your Account or Integration Manager.

Late payments webhooks

To get notified when the status of the transaction changes, listen to the following webhooks: