code and a
message for a person to read. Use the code to select the action in your
integration. The text of the message can change.
code field. Do not use the message
field or the HTTP reason text.
Two groups of codes
There are two groups of errors. The two groups do different things with your money.- Rejections (the first table) — Hermes refused the request. Hermes created no payout and held no money. Correct the request, or wait, and then send the request again.
- Failure codes (the second table) — Hermes accepted the payout, held the
funds, and the payout failed later. The payout is terminal, and Hermes sets
failure: { code, message }. Hermes always releases the hold back to your available balance. To try again, always create a new payout with a newIdempotency-Key.
Rejection codes
Failure codes
Afailed payout has one of these codes in failure.code. The code is the
same on GET /payouts/{id} and in the payout.failed webhook. The
failure.message text does not change for a given code. You can show that
text to your own users.
When Jenzy pauses the API
See Maintenance and outages for the procedure that your system must obey.service_incident and service_maintenance are the only two codes that mean
Jenzy stopped this on purpose. They are different from each other rejection
in one way: they do not use your Idempotency-Key.
Each other decided result, a new payout or a 4xx, is final for that key. A
pause is not a decision. So the safe action is the same key with the same
body. You then get a payout, and not a conflict.
While one of the two codes applies:
- Each
/v1route, but notGET /ping, gives 503. This includes the read endpoints,POST /fees/quote, the payout creates, andPOST /collections/simulate. GET /pingcontinues to answer. Itsstatusfield isoutagefor an incident, ormaintenancefor planned work.- Payouts that Hermes accepted before the pause stay in
held. Hermes did not send them. They did not fail. No money moved for them. They continue automatically when the pause ends. - Hermes still delivers the webhooks for payouts that already got a result.
Retry-After header with these codes. A person at
Jenzy decides when a pause ends. So a timestamp from Jenzy would only be a
guess.
Hermes never sends a failed payout again. The four codes above are the
complete set of failure codes. Hermes uses
declined for each failure that
does not agree with the other three codes.