Skip to main content
Every Yuno error follows a single envelope. Use this page to look up what each code means and how to act on it. For the full conceptual guide and retry strategy see Error handling.

Envelope

Top level. code is a stable SCREAMING_SNAKE_CASE identifier you can branch on. messages is always an array of strings. Validation failures put one entry per failed field. There is no error wrapper, no singular message, no type, no details field.

Framework codes (HTTP status defaults)

These are the default code values that Yuno’s shared Go and Kotlin libraries map to common HTTP statuses. Service code may return a more specific business code for the same status (see the resource sections below).

Validation framework codes (Kotlin services)

These come from the shared exception handler used by checkout sessions, recipients, payouts, and any service backed by the shared Kotlin library.

Customer codes

Recipient and marketplace codes

Provider codes

Errors that originate at a downstream payment provider are surfaced under codes prefixed with PROVIDER_. The provider’s raw response is reflected through messages. The full set defined in yuno-go-utils-lib/errors/providerErrors.go: When you see a PROVIDER_* code, the failure happened at the provider, not at Yuno. Inspect messages for the provider’s raw text. See Provider errors for per provider mappings.

What changed from earlier docs

Earlier versions of this page listed codes such as INVALID_FIELD, INVALID_FORMAT, MISSING_FIELD, INVALID_ENUM, INVALID_AMOUNT, INVALID_CURRENCY, INVALID_COUNTRY, INVALID_JSON, DUPLICATE_REQUEST, INVALID_API_KEY, MISSING_AUTH, EXPIRED_KEY, METHOD_NOT_ENABLED, COUNTRY_NOT_ENABLED, PERMISSION_DENIED, RESOURCE_NOT_FOUND, SESSION_NOT_FOUND, PAYMENT_NOT_FOUND, ALREADY_CAPTURED, ALREADY_REFUNDED, and RATE_LIMIT_EXCEEDED. Those codes are not emitted by any production service. They have been removed in favor of the verified set above. If you have a mapping that still references one of them, switch to the closest real code (for example RATE_LIMIT_EXCEEDED becomes TOO_MANY_REQUESTS, and the various INVALID_* validation codes become VALIDATION_ERROR or a PROVIDER_* code).