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

  1. Authorization: Validate payment method and reserve funds (this event)
  2. 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>
required
eventTypestringconstant: PaymentAuthorized
required
timestampstring<date-time>
required
versionstring
required
Match pattern: ^\d+\.\d+\.\d+$
dataobject
required