Payment Authorized
Emitted when a payment has been authorized by the payment gateway, reserving funds for capture
Overview
The PaymentAuthorized event signals that a payment method has been validated and funds have been reserved (but not yet captured). This is the first phase of a two-phase payment process.
Two-Phase Payment Flow
- Authorization: Validate payment method and reserve funds (this event)
- Capture: Actually charge the payment method (later step)
This pattern is useful for:
- Pre-orders (authorize now, capture when shipped)
- Hotel reservations (authorize at booking, capture at checkout)
- Variable amounts (authorize estimate, capture actual)
Event Schema
Schema Definition
{ "eventId": "uuid", "eventType": "PaymentAuthorized", "timestamp": "2025-12-11T10:30:00Z", "version": "1.0.0", "data": { "authorizationId": "string", "paymentId": "string", "customerId": "string", "amount": { "value": "number", "currency": "string" }, "paymentMethod": { "type": "string", "last4": "string", "brand": "string" }, "authorizationCode": "string", "gatewayReference": "string", "expiresAt": "timestamp", "authorizedAt": "timestamp" }}Example Payload
{ "eventId": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d", "eventType": "PaymentAuthorized", "timestamp": "2025-12-11T10:30:00Z", "version": "1.0.0", "data": { "authorizationId": "auth_xyz123", "paymentId": "pay_1234567890", "customerId": "cus_johndoe", "amount": { "value": 99.99, "currency": "USD" }, "paymentMethod": { "type": "credit_card", "last4": "4242", "brand": "visa" }, "authorizationCode": "123456", "gatewayReference": "pi_stripe_abc123", "expiresAt": "2025-12-18T10:30:00Z", "authorizedAt": "2025-12-11T10:30:00Z" }}Business Rules
- Authorization holds funds for 7 days (card-dependent)
- Must be captured before expiration or funds are released
- Can be voided to release funds early
- Authorization amount can be captured partially or fully
19 properties
eventIdstring<uuid>
requiredeventTypestringconstant:
requiredPaymentAuthorizedtimestampstring<date-time>
requiredversionstring
requiredMatch pattern:
^\d+\.\d+\.\d+$dataobject
required