payment.attempt.fail
End ONE payment attempt, leaving the intent untouched so a late approval still reconciles. attempt_failed is an AFFIRMATION by the app that this attempt will never settle positive — because it voided it, cancelled it, or asked the PSP for the final status. An app that cannot affirm that must not send it: the kernel never infers death from silence or from a timeout, and ending an attempt is what authorises a second real charge.
- Scope:
public - System: no
- Reachable from: an ANONYMOUS face — no credential, and never
/v1/commands/*. Which path serves it is not derivable from the registry; see the anonymous faces. - Events:
payment.attempt_failed
Input (JSON Schema)
Section titled “Input (JSON Schema)”{ "properties": { "payment_id": { "minLength": 1, "type": "string" }, "provider_ref": { "minLength": 1, "type": "string" }, "reason": { "enum": [ "insufficient_funds", "card_rejected", "invalid_data", "expired", "fraud_suspected", "timeout", "other" ], "type": "string" } }, "required": [ "payment_id", "provider_ref" ], "type": "object"}Result (200)
Section titled “Result (200)”{ "additionalProperties": false, "properties": { "attempt_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "payment_id": { "type": "string" } }, "required": [ "payment_id", "attempt_id" ], "type": "object"}Errors
Section titled “Errors”validation_failed (400) · unauthorized (401) · forbidden (403) · conflict (409) · internal (500)