Skip to content

Payment intent created

POST

Sent when a payment intent is created (API, dashboard, invoice or payment link).

Gryphem-Signature
required
string
/^t=[0-9]+(,v1=[0-9a-f]{64})+$/

t=<unix seconds>,v1=<hex> — HMAC-SHA256 keyed with the endpoint’s full whsec_… secret over <t>.<raw request body>. While a rotated secret is still valid, one v1= value is sent per valid secret: accept the delivery if any value matches (constant-time comparison) and reject timestamps outside your tolerance (the official SDKs default to 300 seconds).

Example

t=1760961600,v1=186aa47526353adc39a808f8e0bd84f501a5a6a1f483572b1f8a3eab3ed44cc8
Gryphem-Event-Id
required
string

Same as event_id in the body. Delivery is at-least-once — deduplicate on this value.

Gryphem-Event-Type
required
string
Allowed values: payment_intent.created invoice.awaiting_payment payment.detected payment.confirming payment.confirmed payment.expired payment.review_required payment.reorged payment.resolved payment.canceled webhook.test merchant.verification_updated payout.requested payout.approved payout.rejected payout.canceled payout.sent payout.completed payout.failed
Gryphem-Delivery-Id
required
string

One delivery per event and endpoint; the id stays the same across retries.

Gryphem-Delivery-Attempt
required
integer
>= 1

1 for the first attempt, incremented on every retry.

Media typeapplication/json

Body of the payment_intent.created webhook.

object
event_id
required
string
event_type
required
string
Allowed values: payment_intent.created invoice.awaiting_payment payment.detected payment.confirming payment.confirmed payment.expired payment.review_required payment.reorged payment.resolved payment.canceled webhook.test merchant.verification_updated payout.requested payout.approved payout.rejected payout.canceled payout.sent payout.completed payout.failed
api_version
required
string
created_at
required
string format: date-time
merchant_id
required
string
store_id
required
string | null
environment
required
string
Allowed values: test live
object
required
object
type
required
string
id
required
string
event_type
required
string
Allowed value: payment_intent.created
object
required
object
type
required
string
Allowed value: payment_intent
id
required
string
data
required
object
status
required
string
Allowed values: created awaiting_payment detected confirming confirmed underpaid overpaid expired late_payment reorged manual_review resolved failed canceled
amount
required

Decimal amount in currency.

string
currency
required
string
merchant_order_id
required
string | null
checkout_url
required

Hosted checkout URL for the customer.

string

Any 2xx response within 10 seconds marks the delivery as succeeded. The response body is only kept as a short excerpt for troubleshooting.

Any other outcome — a non-2xx status, a redirect (never followed), a timeout or a network error — is retried with exponential backoff (base × 2^(attempt − 1), capped at 6 hours, with 50–100% jitter; 10 attempts in the default configuration) and then moved to the dead-letter queue. 410 Gone stops retries immediately.