# Every error code says whether anything happened, and what to read to find out

- Date: 2026-11-01
- Type: New
- Surface: Developer portal and CLI
- What you need to do: Nothing.
- Address: https://developers.rivr.io/changelog/2026-11-01-error-outcome

Every error code in the catalog now has `outcome`: what the answer means for what you asked for. `none`: this call did not do what you asked for and changed nothing else that you can see or that concerns money, and where the code has an `outcomeNote`, the note takes precedence. `partial`: it did not happen, but something else had already happened. `unknown`: the answer doesn't say whether what you asked for has happened, through this call or an earlier one, so read the state first. `done`: it has already happened. `not_applicable`: the call is a read. `outcomeNote` says, in Swedish and English, what else may have happened, and `resolveWith` gives, per operation, the read that shows the state (`METHOD /path` in the spec) and what in its answer decides. The fields are on each code's page under Did anything happen?, in `/errors/<code>.md`, in `/errors.json` (with the five values explained at the top), in `/errors.md` per code and in the MCP tool `lookup_error`; the guide Errors and retries says how to use them. The texts of 18 codes are also corrected, most of them to say what may have happened: `credit_check_failed`, `idempotency_in_progress`, `installation_session_mismatch`, `internal_error`, `invalid_push_registration`, `merchant_mismatch`, `onboarding_link_not_issued`, `order_changed`, `order_locked_for_refund`, `order_modified_concurrently`, `order_not_payable`, `order_not_refundable`, `outcome_already_reported`, `payment_in_progress`, `payment_pending`, `payment_start_failed`, `phone_required` and `request_rejected`. `retryWhen` for `onboarding_link_not_issued` is now `after_fix` instead of `same_request`, since the same `POST` creates another draft: the code's page says what to send instead. The API's answers are unchanged.

