Skip to content

payment_intent.succeeded

POST

The payment succeeded.

Media typeapplication/json
object
id
required

Deduplicate on this; the same event may arrive more than once.

string
object
required
string
Allowed value: event
type
required
string
created
required

A Unix timestamp.

integer
api_version
required
string
Allowed value: v1
livemode
required
boolean
tenant_id
string
merchant_id
string | null
data
required
object
object

The object as the API shows it, as of this event.

object
data
required
object
object
object
id
required
string
object
required
string
Allowed value: payment_intent
amount
required

In the currency’s minor unit.

integer
amount_received
required

The amount paid: amount once succeeded, and 0 until then.

integer
currency
required

A three-letter ISO 4217 code, in lower case.

string
/^[a-z]{3}$/
payment_method_types
required

The chosen method, such as [qrph], once there is one. Until then, the methods that can take this payment now: confirm with one. In an event for an intent with no method, the methods you allowed at creation, or null if you allowed any.

Array<string> | null
channel
required

Where the payment is taken: ecommerce for every intent your server creates. Payments taken on terminals will say pos (Pending).

string
status
required
string
Allowed values: requires_payment_method requires_confirmation requires_action processing succeeded canceled
next_action
required
One of:
object
type
required
string
Allowed value: qrph_display_qr_code
qrph_display_qr_code
required
object
data
required

The QR payload. Render it as a QR code for the customer to scan with their banking app.

string
expires_at
required

When the code stops being payable, as a Unix timestamp.

integer | null
last_payment_error
required
One of:
object
code
required

card_declined: the card was declined. expired_card: the card has expired (test mode only today). payment_intent_authentication_failure: the customer did not complete the card’s authentication. payment_intent_payment_attempt_failed: the attempt failed, or the customer left without paying. payment_intent_payment_attempt_expired: the customer did not pay in time.

string
Allowed values: card_declined expired_card payment_intent_authentication_failure payment_intent_payment_attempt_failed payment_intent_payment_attempt_expired
decline_code

Why the card was declined, when the decline names a reason. Test mode only today: it appears when you simulate a decline with a decline_reason (see Simulate a payment’s outcome), and a live decline does not carry it yet, so never depend on it there.

string
Allowed values: insufficient_funds do_not_honor expired_card
message
required

Words you can show the customer. May be reworded, so never branch on it.

string
cancellation_reason
required

The reason given when it was canceled, if any.

string | null
Allowed values: requested_by_customer duplicate fraudulent abandoned
canceled_at
required

When it was canceled, as a Unix timestamp.

integer | null
description
required
string | null
metadata
required

The metadata you gave it. {} if none.

object
key
additional properties
string
livemode
required
boolean
created
required

When it was created, as a Unix timestamp.

integer

Received. Answer with any 2xx within 10 seconds.