Skip to content

Types of events ​

This is a list of all public thin events we currently send for /v1 and /v2 resources, which are continually evolving and expanding. The payload of thin events is unversioned. During processing, you must fetch the versioned event from the API or fetch the resource’s current state.

API event types ​

v1.billing.meter.error_report_triggered ​

Occurs when a Meter has invalid async usage events.

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "billing.meter") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v1.billing.meter.error_report_triggered") The type of the event.

Fetched attributes ​

  • changes (null) Always null because this event type doesn’t track related object changes.

  • data (object) Additional data about the event.

    • data.developer_message_summary (string) Extra field included in the event’s data when fetched from /v2/events.

    • data.reason (object) This contains information about why meter error happens.

      • data.reason.error_count (integer) The total error count within this window.

      • data.reason.error_types (array of objects) The error details.

        • data.reason.error_types.code (enum) Open Enum. Possible enum values:

          • archived_meter Enum value: archived_meter.

          • meter_event_customer_not_found Enum value: meter_event_customer_not_found.

          • meter_event_dimension_count_too_high Enum value: meter_event_dimension_count_too_high.

          • meter_event_invalid_value Enum value: meter_event_invalid_value.

          • meter_event_no_customer_defined Enum value: meter_event_no_customer_defined.

          • meter_event_value_too_many_digits Enum value: meter_event_value_too_many_digits.

          • missing_dimension_payload_keys Enum value: missing_dimension_payload_keys.

          • no_meter Enum value: no_meter.

          • timestamp_in_future Enum value: timestamp_in_future.

          • timestamp_too_far_in_past Enum value: timestamp_too_far_in_past.

        • data.reason.error_types.error_count (integer) The number of errors of this type.

        • data.reason.error_types.sample_errors (array of objects) A list of sample errors of this type.

          • data.reason.error_types.sample_errors.error_message (string) The error message.

          • data.reason.error_types.sample_errors.request (object) The request causes the error.

            • data.reason.error_types.sample_errors.request.identifier (string) The request idempotency key.
    • data.validation_end (timestamp) The end of the window that is encapsulated by this summary.

    • data.validation_start (timestamp) The start of the window that is encapsulated by this summary.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v1.billing.meter.no_meter_found ​

Occurs when a Meter's id is missing or invalid in async usage events.

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • type (string, value is "v1.billing.meter.no_meter_found") The type of the event.

Fetched attributes ​

  • changes (null) Always null because this event type doesn’t track related object changes.

  • data (object) Additional data about the event.

    • data.developer_message_summary (string) Extra field included in the event’s data when fetched from /v2/events.

    • data.reason (object) This contains information about why meter error happens.

      • data.reason.error_count (integer) The total error count within this window.

      • data.reason.error_types (array of objects) The error details.

        • data.reason.error_types.code (enum) Open Enum. Possible enum values:

          • archived_meter Enum value: archived_meter.

          • meter_event_customer_not_found Enum value: meter_event_customer_not_found.

          • meter_event_dimension_count_too_high Enum value: meter_event_dimension_count_too_high.

          • meter_event_invalid_value Enum value: meter_event_invalid_value.

          • meter_event_no_customer_defined Enum value: meter_event_no_customer_defined.

          • meter_event_value_too_many_digits Enum value: meter_event_value_too_many_digits.

          • missing_dimension_payload_keys Enum value: missing_dimension_payload_keys.

          • no_meter Enum value: no_meter.

          • timestamp_in_future Enum value: timestamp_in_future.

          • timestamp_too_far_in_past Enum value: timestamp_too_far_in_past.

        • data.reason.error_types.error_count (integer) The number of errors of this type.

        • data.reason.error_types.sample_errors (array of objects) A list of sample errors of this type.

          • data.reason.error_types.sample_errors.error_message (string) The error message.

          • data.reason.error_types.sample_errors.request (object) The request causes the error.

            • data.reason.error_types.sample_errors.request.identifier (string) The request idempotency key.
    • data.validation_end (timestamp) The end of the window that is encapsulated by this summary.

    • data.validation_start (timestamp) The start of the window that is encapsulated by this summary.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.commerce.product_catalog.imports.failed ​

Occurs when a product catalog import cannot be processed or if processing fails unexpectedly.

Related object: Product Catalog Import

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.commerce.product_catalog_import") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.commerce.product_catalog.imports.failed") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Product Catalog Import object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event payload ​

json
{
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8C",
  "object": "v2.core.event",
  "type": "v2.commerce.product_catalog.imports.failed",
  "livemode": true,
  "reason": null,
  "related_object": {
    "id": "pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K",
    "type": "v2.commerce.product_catalog.imports",
    "url": "/v2/commerce/product_catalog/imports/pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K"
  }
}

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Fetched payload ​

json
{
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8C",
  "object": "v2.core.event",
  "type": "v2.commerce.product_catalog.imports.failed",
  "livemode": true,
  "reason": null,
  "related_object": {
    "id": "pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K",
    "type": "v2.commerce.product_catalog.imports",
    "url": "/v2/commerce/product_catalog/imports/pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K"
  },
  "changes": {
    "before": {
      "status": "AWAITING_UPLOAD"
    },
    "after": {
      "status": "FAILED"
    }
  },
  "data": {}
}

v2.commerce.product_catalog.imports.processing ​

Occurs when a product catalog import file has been uploaded and has started processing.

Related object: Product Catalog Import

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.commerce.product_catalog_import") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.commerce.product_catalog.imports.processing") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Product Catalog Import object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event payload ​

json
{
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8A",
  "object": "v2.core.event",
  "type": "v2.commerce.product_catalog.imports.processing",
  "livemode": true,
  "reason": null,
  "related_object": {
    "id": "pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K",
    "type": "v2.commerce.product_catalog.imports",
    "url": "/v2/commerce/product_catalog/imports/pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K"
  }
}

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Fetched payload ​

json
{
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8A",
  "object": "v2.core.event",
  "type": "v2.commerce.product_catalog.imports.processing",
  "livemode": true,
  "reason": null,
  "related_object": {
    "id": "pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K",
    "type": "v2.commerce.product_catalog.imports",
    "url": "/v2/commerce/product_catalog/imports/pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K"
  },
  "changes": {
    "before": {
      "status": "AWAITING_UPLOAD"
    },
    "after": {
      "status": "PROCESSING"
    }
  },
  "data": {}
}

v2.commerce.product_catalog.imports.succeeded ​

Occurs when a product catalog file has been uploaded successfully and passed validation.

Related object: Product Catalog Import

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.commerce.product_catalog_import") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.commerce.product_catalog.imports.succeeded") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Product Catalog Import object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event payload ​

json
{
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8B",
  "object": "v2.core.event",
  "type": "v2.commerce.product_catalog.imports.succeeded",
  "livemode": true,
  "reason": null,
  "related_object": {
    "id": "pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K",
    "type": "v2.commerce.product_catalog.imports",
    "url": "/v2/commerce/product_catalog/imports/pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K"
  }
}

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Fetched payload ​

json
{
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8B",
  "object": "v2.core.event",
  "type": "v2.commerce.product_catalog.imports.succeeded",
  "livemode": true,
  "reason": null,
  "related_object": {
    "id": "pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K",
    "type": "v2.commerce.product_catalog.imports",
    "url": "/v2/commerce/product_catalog/imports/pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K"
  },
  "changes": {
    "before": {
      "status": "PROCESSING"
    },
    "after": {
      "status": "SUCCEEDED"
    }
  },
  "data": {}
}

v2.commerce.product_catalog.imports.succeeded_with_errors ​

Occurs when a product catalog file has been successfully processed but some rows failed validation.

Related object: Product Catalog Import

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.commerce.product_catalog_import") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.commerce.product_catalog.imports.succeeded_with_errors") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Product Catalog Import object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event payload ​

json
{
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8D",
  "object": "v2.core.event",
  "type": "v2.commerce.product_catalog.imports.succeeded_with_errors",
  "livemode": true,
  "reason": null,
  "related_object": {
    "id": "pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K",
    "type": "v2.commerce.product_catalog.imports",
    "url": "/v2/commerce/product_catalog/imports/pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K"
  }
}

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Fetched payload ​

json
{
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8D",
  "object": "v2.core.event",
  "type": "v2.commerce.product_catalog.imports.succeeded_with_errors",
  "livemode": true,
  "reason": null,
  "related_object": {
    "id": "pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K",
    "type": "v2.commerce.product_catalog.imports",
    "url": "/v2/commerce/product_catalog/imports/pcimprt_61THl3VA5Zt5cTqbP16T9R4DRrSQbEWmWeLUx7WmOR8K"
  },
  "changes": {
    "before": {
      "status": "PROCESSING"
    },
    "after": {
      "status": "SUCCEEDED_WITH_ERRORS"
    }
  },
  "data": {}
}

v2.core.account.closed ​

This event occurs when an account is closed.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account.closed") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account.created ​

Occurs when an Account is created.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account.created") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object, nullable) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account.updated ​

Occurs when an Account is updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account.updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[configuration.customer].capability_status_updated ​

Occurs when the status of an Account's customer configuration capability is updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[configuration.customer].capability_status_updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

    • data.updated_capability (enum) The capability which had its status updated. Possible enum values:
      • automatic_indirect_tax Refers to the customer.capabilities.card_payments capability.
  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[configuration.customer].updated ​

Occurs when an Account's customer configuration is updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[configuration.customer].updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[configuration.merchant].capability_status_updated ​

Occurs when the status of an Account's merchant configuration capability is updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[configuration.merchant].capability_status_updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

    • data.updated_capability (enum) The capability which had its status updated. Possible enum values:
      • ach_debit_payments Refers to the merchant.capabilities.ach_debit_payments capability.

      • acss_debit_payments Refers to the merchant.capabilities.acss_debit_payments capability.

      • affirm_payments Refers to the merchant.capabilities.affirm_payments capability.

      • afterpay_clearpay_payments Refers to the merchant.capabilities.afterpay_clearpay_payments capability.

      • alma_payments Refers to the merchant.capabilities.alma_payments capability.

      • amazon_pay_payments Refers to the merchant.capabilities.amazon_pay_payments capability.

      • au_becs_debit_payments Refers to the merchant.capabilities.au_becs_debit_payments capability.

      • bacs_debit_payments Refers to the merchant.capabilities.bacs_debit_payments capability.

      • bancontact_payments Refers to the merchant.capabilities.bancontact_payments capability.

      • blik_payments Refers to the merchant.capabilities.blik_payments capability.

      • boleto_payments Refers to the merchant.capabilities.boleto_payments capability.

      • card_payments Refers to the merchant.capabilities.card_payments capability.

      • cartes_bancaires_payments Refers to the merchant.capabilities.cartes_bancaires_payments capability.

      • cashapp_payments Refers to the merchant.capabilities.cashapp_payments capability.

      • eps_payments Refers to the merchant.capabilities.eps_payments capability.

      • fpx_payments Refers to the merchant.capabilities.fpx_payments capability.

      • gb_bank_transfer_payments Refers to the merchant.capabilities.gb_bank_transfer_payments capability.

      • grabpay_payments Refers to the merchant.capabilities.grabpay_payments capability.

      • ideal_payments Refers to the merchant.capabilities.ideal_payments capability.

      • jcb_payments Refers to the merchant.capabilities.jcb_payments capability.

      • jp_bank_transfer_payments Refers to the merchant.capabilities.jp_bank_transfer_payments capability.

      • kakao_pay_payments Refers to the merchant.capabilities.kakao_pay_payments capability.

      • klarna_payments Refers to the merchant.capabilities.klarna_payments capability.

      • konbini_payments Refers to the merchant.capabilities.konbini_payments capability.

      • kr_card_payments Refers to the merchant.capabilities.kr_card_payments capability.

      • link_payments Refers to the merchant.capabilities.link_payments capability.

      • mobilepay_payments Refers to the merchant.capabilities.mobilepay_payments capability.

      • multibanco_payments Refers to the merchant.capabilities.multibanco_payments capability.

      • mx_bank_transfer_payments Refers to the merchant.capabilities.mx_bank_transfer_payments capability.

      • naver_pay_payments Refers to the merchant.capabilities.naver_pay_payments capability.

      • oxxo_payments Refers to the merchant.capabilities.oxxo_payments capability.

      • p24_payments Refers to the merchant.capabilities.p24_payments capability.

      • pay_by_bank_payments Refers to the merchant.capabilities.pay_by_bank_payments capability.

      • payco_payments Refers to the merchant.capabilities.payco_payments capability.

      • paynow_payments Refers to the merchant.capabilities.paynow_payments capability.

      • promptpay_payments Refers to the merchant.capabilities.promptpay_payments capability.

      • revolut_pay_payments Refers to the merchant.capabilities.revolut_pay_payments capability.

      • samsung_pay_payments Refers to the merchant.capabilities.samsung_pay_payments capability.

      • sepa_bank_transfer_payments Refers to the merchant.capabilities.sepa_bank_transfer_payments capability.

      • sepa_debit_payments Refers to the merchant.capabilities.sepa_debit_payments capability.

      • stripe_balance.payouts Refers to the merchant.capabilities.stripe_balance.payouts capability.

      • swish_payments Refers to the merchant.capabilities.swish_payments capability.

      • twint_payments Refers to the merchant.capabilities.twint_payments capability.

      • us_bank_transfer_payments Refers to the merchant.capabilities.us_bank_transfer_payments capability.

      • zip_payments Refers to the merchant.capabilities.zip_payments capability.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[configuration.merchant].updated ​

Occurs when an Account's merchant configuration is updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[configuration.merchant].updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[configuration.recipient].capability_status_updated ​

Occurs when the status of an Account's recipient configuration capability is updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[configuration.recipient].capability_status_updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

    • data.updated_capability (enum) The capability which had its status updated. Possible enum values:
      • bank_accounts.local Refers to the recipient.capabilities.bank_accounts.local capability.

      • bank_accounts.wire Refers to the recipient.capabilities.bank_accounts.wire capability.

      • cards Refers to the recipient.capabilities.cards capability.

      • stripe.transfers DEPRECATED: use RECIPIENT_CONFIG__STRIPE_TRANSFERS_CAPABILITY instead - Refers to the recipient.capabilities.stripe.transfers capability.

      • stripe_balance.payouts Refers to the recipient.capabilities.stripe_balance.payouts capability.

      • stripe_balance.stripe_transfers Refers to the recipient.capabilities.stripe_balance.stripe_transfers capability.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[configuration.recipient].updated ​

Occurs when a Recipient's configuration is updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[configuration.recipient].updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[defaults].updated ​

This event occurs when account defaults are created or updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[defaults].updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[future_requirements].updated ​

Occurs when an Account's future requirements are updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[future_requirements].updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[identity].updated ​

Occurs when an Identity is updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[identity].updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account[requirements].updated ​

Occurs when an Account's requirements are updated.

Related object: Account

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account[requirements].updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Account object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Occurs when the generated AccountLink is completed.

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • type (string, value is "v2.core.account_link.returned") The type of the event.

Fetched attributes ​

  • changes (null) Always null because this event type doesn’t track related object changes.

  • data (object) Additional data about the event.

    • data.account_id (string) The ID of the v2 account.

    • data.configurations (array of enums) Configurations on the Account that was onboarded via the account link. Possible enum values:

      • customer The Account can be used as a customer.

      • merchant The Account can be used as a merchant.

      • recipient The Account can be used as a recipient.

    • data.use_case (enum) The use case type of the account link that has been completed. Possible enum values:

      • account_onboarding Refers to the account_onboarding use case.

      • account_update Refers to the account_update use case.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account_person.created ​

Occurs when a Person is created.

Related object: Person

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account_person") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account_person.created") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Person object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object, nullable) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

    • data.account_id (string) The ID of the v2 account.
  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account_person.deleted ​

Occurs when a Person is deleted.

Related object: Person

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account_person") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account_person.deleted") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Person object for the structure of before and after.

    • changes.after (object, nullable) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

    • data.account_id (string) The ID of the v2 account.
  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.account_person.updated ​

Occurs when a Person is updated.

Related object: Person

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.account_person") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.account_person.updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Person object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

    • data.account_id (string) The ID of the v2 account.
  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

v2.core.event_destination.ping ​

A ping event used to test the connection to an EventDestination.

Related object: Event Destination

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.core.event_destination") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.core.event_destination.ping") The type of the event.

Fetched attributes ​

  • changes (null) Always null because this event type doesn’t track related object changes.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event payload ​

json
{
  "context": null,
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65RCjj4EqW1sabcjs2Z16RCMoNQdSQkOWvfL6L5uU2K40u",
  "object": "v2.core.event",
  "reason": {
    "type": "request",
    "request": {
      "id": "req_v24sUK2aV6o01RdVU",
      "idempotency_key": "fe21992d-e123-3f8c-bc90-fec93712bcb2"
    }
  },
  "related_object": {
    "id": "ed_65SDS7HTasdQYsDClFT16CGd2aE2kBpeAvvRnBUcS2me",
    "type": "v2.core.event_destination",
    "url": "/v2/core/event_destinations/ed_65SDS7HTasdQYsDClFT16CGd2aE2kBpeAvvRnBUcS2me"
  },
  "type": "v2.core.event_destination.ping",
  "livemode": true
}

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Fetched payload ​

json
{
  "context": null,
  "created": "2025-01-01T00:00:00.000Z",
  "id": "evt_65RCjj4EqW1sabcjs2Z16RCMoNQdSQkOWvfL6L5uU2K40u",
  "object": "v2.core.event",
  "reason": {
    "type": "request",
    "request": {
      "id": "req_v24sUK2aV6o01RdVU",
      "idempotency_key": "fe21992d-e123-3f8c-bc90-fec93712bcb2"
    }
  },
  "related_object": {
    "id": "ed_65SDS7HTasdQYsDClFT16CGd2aE2kBpeAvvRnBUcS2me",
    "type": "v2.core.event_destination",
    "url": "/v2/core/event_destinations/ed_65SDS7HTasdQYsDClFT16CGd2aE2kBpeAvvRnBUcS2me"
  },
  "type": "v2.core.event_destination.ping",
  "livemode": true,
  "changes": {},
  "data": {}
}

v2.reporting.report_run.created ​

Occurs when a ReportRun is created.

Related object: Report Run

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.reporting.report_run") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.reporting.report_run.created") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Report Run object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object, nullable) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event payload ​

json
{
  "created": "2025-08-26T00:00:00.000Z",
  "id": "evt_test_xxx",
  "object": "v2.core.event",
  "type": "v2.reporting.report_run.created",
  "livemode": false,
  "reason": {
    "type": "request",
    "request": {
      "id": "req_xxx",
      "idempotency_key": "xxx"
    }
  },
  "related_object": {
    "id": "reprun_test_xxx",
    "type": "v2.reporting.report_run",
    "url": "/v2/reporting/report_runs/reprun_test_xxx"
  }
}

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Fetched payload ​

json
{
  "created": "2025-08-26T00:00:00.000Z",
  "id": "evt_test_xxx",
  "object": "v2.core.event",
  "type": "v2.reporting.report_run.created",
  "livemode": false,
  "reason": {
    "type": "request",
    "request": {
      "id": "req_xxx",
      "idempotency_key": "xxx"
    }
  },
  "related_object": {
    "id": "reprun_test_xxx",
    "type": "v2.reporting.report_run",
    "url": "/v2/reporting/report_runs/reprun_test_xxx"
  },
  "data": {},
  "changes": {
    "before": null,
    "after": {
      "created": "2025-08-26T00:00:00.000Z",
      "id": "reprun_test_xxx",
      "object": "v2.reporting.report_run",
      "report": "report_test_xxx",
      "report_name": "test report name",
      "report_parameters": {
        "interval_start": "2025-08-18T00:00:00.000Z",
        "interval_end": "2025-08-25T00:00:00.000Z"
      },
      "result": null,
      "result_options": {
        "compress_file": false
      },
      "status": "running",
      "status_details": {},
      "livemode": false
    }
  }
}

v2.reporting.report_run.failed ​

Occurs when a ReportRun has failed to complete.

Related object: Report Run

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.reporting.report_run") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.reporting.report_run.failed") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Report Run object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event payload ​

json
{
  "created": "2025-08-26T00:00:00.000Z",
  "id": "evt_test_xxx",
  "object": "v2.core.event",
  "type": "v2.reporting.report_run.failed",
  "livemode": false,
  "reason": null,
  "related_object": {
    "id": "reprun_test_xxx",
    "type": "v2.reporting.report_run",
    "url": "/v2/reporting/report_runs/reprun_test_xxx"
  }
}

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Fetched payload ​

json
{
  "id": "evt_test_xxx",
  "object": "v2.core.event",
  "created": "2025-08-26T00:00:00.000Z",
  "data": {},
  "reason": null,
  "related_object": {
    "id": "reprun_test_xxx",
    "type": "v2.reporting.report_run",
    "url": "/v2/reporting/report_runs/reprun_test_xxx"
  },
  "type": "v2.reporting.report_run.failed",
  "livemode": false,
  "changes": {
    "before": {
      "status": "running",
      "status_details": {}
    },
    "after": {
      "status": "failed",
      "status_details": {
        "failed": {
          "error_code": "file_size_above_limit",
          "error_message": "The file generated by this request exceeds the 5 GB limit."
        }
      }
    }
  }
}

v2.reporting.report_run.succeeded ​

Occurs when a ReportRun has successfully completed.

Related object: Report Run

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.reporting.report_run") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.reporting.report_run.succeeded") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Report Run object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event payload ​

json
{
  "created": "2025-08-26T00:00:00.000Z",
  "id": "evt_test_xxx",
  "object": "v2.core.event",
  "type": "v2.reporting.report_run.succeeded",
  "livemode": false,
  "reason": null,
  "related_object": {
    "id": "reprun_test_xxx",
    "type": "v2.reporting.report_run",
    "url": "/v2/reporting/report_runs/reprun_test_xxx"
  }
}

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Fetched payload ​

json
{
  "id": "evt_test_xxx",
  "object": "v2.core.event",
  "created": "2025-08-26T00:00:00.000Z",
  "data": {},
  "reason": null,
  "related_object": {
    "id": "reprun_test_xxx",
    "type": "v2.reporting.report_run",
    "url": "/v2/reporting/report_runs/reprun_test_xxx"
  },
  "type": "v2.reporting.report_run.succeeded",
  "livemode": false,
  "changes": {
    "before": {
      "status": "running"
    },
    "after": {
      "status": "succeeded"
    }
  }
}

v2.reporting.report_run.updated ​

Occurs when a ReportRun is updated.

Related object: Report Run

Attributes ​

  • id (string) Unique identifier for the event.

  • object (string, value is "v2.core.event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • context (string, nullable) Authentication context needed to fetch the event or related object.

  • created (timestamp) Time at which the object was created.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • related_object (object) Object containing the reference to API resource relevant to the event.

    • related_object.id (string) Unique identifier for the object relevant to the event.

    • related_object.type (string, value is "v2.reporting.report_run") Object tag of the resource relevant to the event.

    • related_object.url (string) URL to retrieve the resource.

  • type (string, value is "v2.reporting.report_run.updated") The type of the event.

Fetched attributes ​

  • changes (object) Changes that the event makes to properties in the related object. See the Report Run object for the structure of before and after.

    • changes.after (object) Updated values of properties that the event changed. This is null for deletion events.

    • changes.before (object) Values of properties before the event changes. This is null for creation events.

  • data (object) Additional data about the event.

  • reason (object, nullable) Reason for the event.

    • reason.request (object, nullable) Information on the API request that instigated the event.

      • reason.request.id (string) ID of the API request that caused the event.

      • reason.request.idempotency_key (string) The idempotency key transmitted during the request.

    • reason.type (enum) Event reason type. Possible enum values:

      • request The event was published as the result of an API request.

Event payload ​

json
{
  "created": "2025-08-26T00:00:00Z",
  "id": "evt_test_xxx",
  "object": "v2.core.event",
  "type": "v2.reporting.report_run.updated",
  "livemode": false,
  "related_object": {
    "id": "reprun_test_xxx",
    "type": "v2.reporting.report_run",
    "url": "/v2/reporting/report_runs/reprun_test_xxx"
  }
}

Event handler ​

curl
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

bash
# Select a client library to see examples of
# parsing and retrieving event details.

Event handler ​

ruby
client = Stripe::StripeClient.new("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = request.env['HTTP_STRIPE_SIGNATURE']

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

python
client = StripeClient("{{YOUR_API_KEY}}")

endpoint_secret = 'whsec_...'
signature_header = ''

thin_event = client.parse_thin_event(
  payload,
  signature_header,
  endpoint_secret
)

event = client.v2.core.events.retrieve(thin_event.id)

Event handler ​

php
$stripe = new StripeStripeClient('{{YOUR_API_KEY}}');

$endpoint_secret = 'whsec_...';
$signature_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];

$thin_event = $client->parseThinEvent(
  $payload,
  $signature_header,
  $endpoint_secret
);

$event = $client->v2->core->events->retrieve($thin_event->id);

Event handler ​

java
StripeClient client = new StripeClient("{{YOUR_API_KEY}}");

String signatureHeader = request.headers("Stripe-Signature");
String endpointSecret = "whsec_...";

com.stripe.model.ThinEvent thinEvent = client.parseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

com.stripe.model.v2.Event event = client.v2().core().events().retrieve(
  thinEvent.getId()
);

Event handler ​

javascript
const stripe = require('stripe')('{{YOUR_API_KEY}}');

const endpoint_secret = 'whsec_...'
const signature_header = '...'

const thinEvent = stripe.parseThinEvent(
  payload,
  signature_header,
  endpoint_secret
);

const event = await stripe.v2.core.events.retrieve(thinEvent.id);

Event handler ​

go
err = webhook.ValidatePayload(
  payload,
  signatureHeader,
  endpointSecret
)

if err != nil {
    fmt.Fprintf(os.Stderr, "Error reading request body: %v
", err)
    return
}

var thinEvent map[string]interface{}

if err := json.Unmarshal(payload, &thinEvent); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse thin event body json: %v
", err.Error()
    )
    return
}

eventID := thinEvent["id"].(string)

var event map[string]interface{}
resp, err := client.RawRequest(
  http.MethodGet,
  "/v2/core/events/"+eventID,
  "",
  nil
)
if err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to get pull event: %v
",
      err.Error()
    )
    return
}

if err := json.Unmarshal(resp.RawJSON, &event); err != nil {
    fmt.Fprintf(
      os.Stderr,
      "Failed to parse pull event body json: %v
",
      err.Error()
    )
    return
}

Event handler ​

dotnet
var client = new StripeClient("{{YOUR_API_KEY}}");

string endpointSecret = "whsec_...";
string signatureHeader = Request.Headers["Stripe-Signature"];

var thinEvent = client.ParseThinEvent(
  payload,
  signatureHeader,
  endpointSecret
);

var event = await client.V2.Core.Events.GetAsync(thinEvent.Id);

Fetched payload ​

json
{
  "id": "evt_test_xxx",
  "object": "v2.core.event",
  "created": "2025-08-26T00:00:00Z",
  "data": {},
  "reason": null,
  "related_object": {
    "id": "reprun_test_xxx",
    "type": "v2.reporting.report_run",
    "url": "/v2/reporting/report_runs/reprun_test_xxx"
  },
  "type": "v2.reporting.report_run.updated",
  "livemode": false,
  "changes": {
    "before": {
      "status": "running"
    },
    "after": {
      "status": "succeeded"
    }
  }
}

Stripe API Reference - Self-contained docs reference, refreshed 2026-05-18