Sometimes merchants observe that charge and refund invoices intermittently remain in a "Processing" or "Scheduled" status for extended periods. This typically occurs when Recurly is awaiting a definitive response from a payment gateway (such as Adyen, Worldpay, or Check Commerce) to confirm the final state of a transaction.
Note: While an invoice is in this state, manual actions like canceling the invoice or initiating a secondary refund may be restricted to prevent duplicate processing.
Identified Root Causes
- Webhook Communication Gaps: Webhooks sent from the gateway to Recurly may fail to trigger a status change, even if the transaction was successful at the gateway level.
- Gateway Incidents: Service interruptions at the provider level can lead to Recurly receiving "Communication Errors," triggering retries while the gateway may have already successfully charged the customer.
- Asynchronous Processing: Some payment methods, like ACH or Direct Debit, have multi-day settlement cycles (e.g., ~7 days) during which the invoice correctly remains "Processing" until final confirmation.
Best Practices
- Implement Idempotency Keys: Ensure your API calls use idempotency keys to prevent duplicate charges during gateway timeout incidents.
- Monitor Webhook Health: Frequently check your Webhook Logs under Integrations > Webhooks to ensure your endpoint is returning 200 OK responses.
Comments
0 comments
Please sign in to leave a comment.