Skip to main content
Every failed intent stores an error with a Fire spark code and, when the provider sent one, the provider code. Codes are the same for every provider, so your channel handles errors once.
Show both codes so support can find the attempt, for example Card declined (Transbank 05). formatPaymentError(error, providerName) from @fire-spark/payments builds that text.

How retries work

  • Retryable errors are retried automatically with the same attempt reference, up to runtime.max_attempts. The provider sees one payment, not several.
  • If the provider doesn’t answer in time, the result is unknown. Fire spark asks the provider for the attempt’s status up to three times, then tries to void it. If it still can’t tell, the intent fails with AMBIGUOUS and is flagged for review.
  • A terminal that asks for a batch close gets one automatically, then the charge is retried once.
  • QR and wallet payments are checked until runtime.qr_ttl_ms passes. After that they are cancelled with WALLET_EXPIRED.

Codes

Declined by the provider or the customer’s bank

None of these are retried. Ask the customer for another method.

Customer

Terminal, provider, and network

Each method’s page lists the provider codes it maps to these codes.

Alerts

Payment failures and terminal failures can trigger monitoring alerts. Intents that end in AMBIGUOUS or MANUAL_REVERSAL_REQUIRED need someone to check the provider’s portal.