Skip to main content
When a payment or refund fails after Flowlix created the object, the object carries a machine-readable failure_code and a human-readable failure_message. Use failure_code to decide what to do next; use failure_message (or your own localized copy) to tell the customer.

Retry guidance legend

ActionMeaning
RetryTransient — the same card may succeed in a new attempt after a short delay.
New methodAsk the customer for another card or payment method.
Fix entryThe customer likely mistyped a field — let them correct it and try again.
Check the requestYour integration sent something invalid — fix the request on your side.
A payment that reached FAILED is final — statuses never move backward. “Retrying” always means creating a new payment with a new Idempotency-Key, never re-submitting the failed one.

Card declines

failure_codeDefault messageSuggested action
generic_declineThe payment method was declined for an unknown reason.New method
do_not_honorThe payment method was declined by the issuer.New method
issuer_declinedThe payment method was declined by the issuer.New method
insufficient_fundsThe card has insufficient funds to complete the purchase.New method
invalid_numberThe card number is invalid.Fix entry / new method
invalid_expiryThe card expiration date is invalid.Fix entry / new method
expired_cardThe card has expired.New method
invalid_amountThe payment amount is invalid for this payment method.Check the request
invalid_currencyThe currency is not supported for this payment method.Check the request
not_permittedThis payment method is not permitted for this transaction.New method
cardholder_limitThe cardholder limit has been exceeded.New method
card_velocity_exceededThe card activity limit has been exceeded.New method
lost_cardThe card was reported lost.New method
stolen_cardThe card was reported stolen.New method
suspect_fraudThe payment was declined because fraud was suspected.New method
fraud_filterThe payment was declined by fraud controls.New method
payment_canceledThe customer canceled the payment.New attempt if the customer wishes

3D Secure failures

failure_codeDefault messageSuggested action
three_d_secure_failed3D Secure authentication failed.Retry
three_d_secure_timeout3D Secure authentication timed out.Retry
three_d_secure_not_supported3D Secure authentication is not supported for this card.New method
three_d_secure_error3D Secure authentication could not be completed.Retry

Processing errors

failure_codeDefault messageSuggested action
processor_errorA processing error occurred. Please retry.Retry
processor_unavailableThe payment processor is temporarily unavailable. Please retry later.Retry
invalid_requestFlowlix could not complete the operation because the payment or refund data was invalid.Check the request
not_foundThe payment operation could not be found.Contact support
New failure codes may be added over time. Treat an unrecognized failure_code like generic_decline: show a neutral failure message and offer another payment method.

Showing failures to customers

  • Map failure codes to your own short, friendly copy; the default failure_message is written for developers and support staff.
  • Never echo raw processor details to customers — they confuse more than they help and can aid card testing.
  • For lost_card, stolen_card, suspect_fraud, and fraud_filter, show only a generic “card declined” message. Revealing the real reason tips off fraudsters.