Ingest Webhook Event
POST
/internal/v1/stripe/webhook-eventsInternalIngests a pre-validated Stripe webhook event for asynchronous processing. This is an internal-only endpoint called by the webhook receiver after signature verification.
Authentication
Auth Chain: Internal — no JWT required. This endpoint is restricted to internal service-to-service calls and is not exposed through the public gateway.
Request Parameters
| Name | Type | Required | In | Description |
|---|---|---|---|---|
eventId | string | Yes | body | Unique identifier for the webhook event |
connectionBizId | string | Yes | body | Business ID of the Stripe connection that received this event |
stripeEventType | string | Yes | body | Stripe event type (e.g. `payment_intent.succeeded`) |
occurredAt | long | No | body | Timestamp (epoch millis) when the event occurred in Stripe |
receivedAt | long | No | body | Timestamp (epoch millis) when the event was received by the webhook receiver |
normalizedPayload | object | No | body | Normalized event payload for internal consumption |
rawPayload | object | No | body | Original raw Stripe event payload |
Success Response
Success200
{
"version": "1.3.0",
"timestamp": 1709337600000,
"success": true,
"code": "2000",
"message": "SUCCESS",
"data": "Stripe webhook event accepted"
}Error Responses
Bad Request400
{
"success": false,
"code": "4000",
"message": "Invalid webhook event payload"
}Notes
- Events are processed asynchronously after ingestion; the response only confirms acceptance.
- Duplicate event IDs are handled idempotently by the ingestion service.
- Unknown fields in the payload are silently ignored (
@JsonIgnoreProperties).