Reason codes
A reason code is a member of the closed list the Prokura gate returns with every decision.
last updated 2026-11-11
Key facts
- Prokura is a signed mandate, a deterministic gate, and a verifiable evidence ledger.
- Prokura is not a bank, does not hold money, and has no model in the decision.
- Prokura Network is operated by Fynteq, Frankfurt am Main.
- What is live is the public demo and the evidence feed. Rail status is whatever /status reads from the core.
- The source is public at github.com/prokura-network. The licence is the one in that repository.
Definition
A reason code is a member of the closed list on the Prokura gate. The decision is derived from the codes. The list is not extended by this website.
- OK
- Every check passed. The decision is allow.
- MANDATE_EXPIRED
- The gate's clock is on or after the credential validUntil.
- MANDATE_REVOKED
- The credential's status-list revocation bit is set.
- MANDATE_NOT_YET_VALID
- The gate's clock is before the credential validFrom.
- AGENT_MISMATCH
- The intent's agent is not the credential subject, or the intent names a different mandate.
- SIGNATURE_INVALID
- The intent signature does not verify, createdAt is outside the five-minute window, the nonce was already used, or the credential proof did not verify.
- PAYEE_NOT_ALLOWED
- An IBAN must match exactly. A domain must be an allowed domain or a subdomain of one.
- RAIL_NOT_ALLOWED
- The intent's rail is not in the credential scope.
- PURPOSE_NOT_ALLOWED
- The intent's purpose is not in the credential scope.
- CAP_PER_TX_EXCEEDED
- The amount is above capPerTx for that currency.
- CAP_PERIOD_EXCEEDED
- Spend in the current period plus this amount is above capPeriod.
- FOUR_EYES_REQUIRED
- The amount is above fourEyesAbove and no passkey approval is attached. This is the only step-up reason. Any other reason forces deny.
- PO_MISSING
- The credential requires a purchase order and the intent has none.
- INVOICE_HASH_MISSING
- The credential requires an invoice hash and the intent has none.
- DUPLICATE_INVOICE
- That invoice hash was already seen for this mandate.
- VOP_MISMATCH
- Reserved in the closed list. The current gate has no verification-of-payee input and does not emit this code.
- MCC_NOT_ALLOWED
- The intent carries an MCC, the credential lists MCCs, and this code is not in the list.