| Create HTTP call | Timeout 30–60s. If the request may have reached IMBA, retry with the same ext_id and body |
202 / in-flight | Poll GET /partner/documents/{ext_id} every few seconds; prefer webhooks for terminals |
429 | Exponential backoff + jitter. Catalog: wait at least 1s between list calls |
409 / insufficient_balance | Do not retry until you have funded |
503 / catalog_stale | Refresh catalog GET, then a new create if the old ext_id is already terminal |
Terminal failed / issue_timeout | New ext_id — replay of the old id returns the stored failure |
5xx on create with unknown outcome | Same ext_id (idempotent) |
card.otp webhook non-2xx | IMBA retries quickly (about 5s, up to 6 times); the code expires in ~2 minutes |