Short answer: In TinyCommand, add the Stripe Charge Failed trigger to a workflow and publish. It listens through a Stripe webhook and fires your workflow within seconds of the event, with no polling and no code. Add a filter if you only want some events to start a run.
Drop it on the canvas. Configure a couple of fields. Publish.
You don’t need to read this. TinyCommand auto-maps every field into the visual picker so downstream nodes can pull values by clicking. We show it here for power users who want to know what’s on the wire.
{"amount": 100,"status": "failed","created": 1778804246,"currency": "usd","customer": null,"event_id": "evt_xxx","livemode": false,"charge_id": "ch_xxx","event_type": "charge.failed","occurred_at": 1778804246,"failure_code": "card_declined","receipt_email": null,"payment_intent": "pi_xxx","payment_method": "pm_xxx","failure_message": "Your card was declined."}
Every field below can be referenced by name in any action or filter that comes after this trigger.
| Field | Type | Example |
|---|---|---|
| amount | number | 100 |
| status | string | "failed" |
| created | number | 1778804246 |
| currency | string | "usd" |
| customer | null | null |
| event_id | string | "evt_xxx" |
| livemode | boolean | false |
| charge_id | string | "ch_xxx" |
| event_type | string | "charge.failed" |
| occurred_at | number | 1778804246 |
| failure_code | string | "card_declined" |
| receipt_email | null | null |
| payment_intent | string | "pi_xxx" |
| payment_method | string | "pm_xxx" |
| failure_message | string | "Your card was declined." |