Holdfast

Stripe · received 18 Oct 2026, 17:48:27 IST

Payment received · ₹1000 from Zoya · Tulsi green tea, 100 g

Held safely

The message arrived in a new layout

Zoya’s ₹1000 payment for her Tulsi green tea couldn’t reach Chai & Co. because the way they send information has changed. Holdfast is keeping the message safe, and it can be sent again once their developer adjusts how they lay out their messages to match what our system expects.

Is it really from Stripe?

Yes. Its signature matched, so it really came from Stripe.

What happened on each try

  1. Try 1 · Bad Request (400)The app turned it away, and sending the same thing again won't help, so it is held safely.

What changed since the last one that worked

  • data.object.customer added
  • data.object.customer.id added
  • data.object.customer_id removed

Send it again

Holdfast first checks it is genuine and hasn't already been delivered.

For your developer

The sender now uses data.object.customer.id instead of data.object.customer_id. Change the app to look for data.object.customer.id.

Cause payload_changed

The raw message

Headers

Accept-Encoding
gzip
Content-Length
345
Content-Type
application/json; charset=utf-8
Stripe-Signature
t=1792325907,v1=c7085fa1cb7a8f739834ba490e09e0e465a50ad844cfc40d885ce35ebf431e4b
User-Agent
Stripe/1.0 (+https://stripe.com/docs/webhooks) holdfast-demo

Body

{
  "id": "evt_35fd6c4phvq0u",
  "object": "event",
  "type": "payment_intent.succeeded",
  "created": 1792325907,
  "livemode": false,
  "data": {
    "object": {
      "id": "pi_1ubc1samawiwl",
      "object": "payment_intent",
      "amount": 100000,
      "currency": "inr",
      "customer": {
        "id": "cus_3ldcjqhqwvyw0"
      },
      "status": "succeeded",
      "metadata": {
        "customer_name": "Zoya",
        "item": "Tulsi green tea, 100 g"
      }
    }
  }
}

Last answer from Chai & Co.

{"error":"missing required field customer_id"}