The PaymentIntent object
A PaymentIntent guides you through collecting a payment from your customer. Create one PaymentIntent per order or customer session, then reference it later to inspect the history of payment attempts for that session.
Attributes
Amount intended to be collected by this PaymentIntent. A positive integer in the smallest currency unit. For USDC, this is cents (e.g., 100 = $1 USDC). Supports up to eight digits.
The amount of the application fee (if any) that will be applied to the payment and transferred to the application owner's account. Capped at the total amount captured.
Settings that automatically enable compatible payment methods for this PaymentIntent.
Populated when status is canceled. Measured in seconds since the Unix epoch.
Reason for cancellation of this PaymentIntent, either user-provided or generated internally.
abandonedautomaticduplicateexpiredfailed_invoicefraudulentrequested_by_customervoid_invoiceControls when funds are captured from the customer's account.
automaticFunds are captured when the customer authorizes the payment.automatic_async(Default) Funds are captured asynchronously when the customer authorizes the payment.manualPlace a hold when the customer authorizes the payment, and capture funds later. Not all payment methods support this.The client secret of this PaymentIntent. Used for client-side retrieval with a publishable key. Do not store, log, or expose it to anyone other than the customer. Use TLS on any page that includes the client secret.
Describes whether this PaymentIntent can be confirmed automatically, or requires server-side confirmation.
automatic(Default) The PaymentIntent can be confirmed with a publishable key. After next_actions are handled, no additional confirmation is required.manualPayment attempts must use a secret key. After handling next_actions, the PaymentIntent returns to requires_confirmation.Three-letter currency code, in lowercase. For Zoneless, this is usdc.
Difference from Stripe: Zoneless settles in USDC on Solana rather than fiat currencies.
ID of the Customer this PaymentIntent belongs to, if one exists. Payment methods attached to other Customers cannot be used with this PaymentIntent.
ID of the Account representing the customer that this PaymentIntent belongs to, if one exists.
An arbitrary string attached to the object. Often useful for displaying to users.
The payment error encountered in the previous confirmation attempt. Cleared if the PaymentIntent is later updated.
ID of the latest Charge created by this PaymentIntent. null until confirmation is attempted.
If the object exists in live mode, the value is true. If the object exists in test mode, the value is false.
Set of key-value pairs that you can attach to an object. Useful for storing additional information in a structured format.
If present, describes the actions your customer must take to complete the payment—for example, approving a wallet transfer.
The connected account that is the settlement merchant for this payment, when using Connect.
Payment-method-specific configuration for this PaymentIntent.
Difference from Stripe: Zoneless exposes only the crypto options bag for USDC wallet payments.
The list of payment method types that this PaymentIntent is allowed to use. For Zoneless, this is typically crypto.
Difference from Stripe: Zoneless currently accepts crypto (USDC on Solana) rather than cards or other fiat rails.
Email address that the receipt for the resulting payment will be sent to.
Indicates that you intend to make future payments with this PaymentIntent's payment method. If you provide a Customer, the payment method can attach after confirmation.
off_sessionUse when your customer may or may not be present in your checkout flow.on_sessionUse when you intend to reuse the payment method only while the customer is present.Text retained for API compatibility as a statement descriptor. Solana USDC transfers do not display bank statement descriptors.
Suffix retained for API compatibility with statement descriptors. Blockchain transfers do not display bank statement descriptors.
Status of this PaymentIntent.
canceledThe PaymentIntent has been canceled.processingThe PaymentIntent is currently being processed.requires_actionThe PaymentIntent requires additional action from the customer.requires_captureThe PaymentIntent has been confirmed and requires capture.requires_confirmationThe PaymentIntent requires confirmation.requires_payment_methodThe PaymentIntent requires a payment method to be attached.succeededThe PaymentIntent has succeeded.The data that automatically creates a Transfer after the payment finalizes. Used with connected accounts.
{
"id": "pi_z_3PqK8mLkdIwHu7ix2nR5wT9b",
"object": "payment_intent",
"amount": 3500,
"amount_capturable": 0,
"amount_details": {
"tip": {}
},
"amount_received": 0,
"application": null,
"application_fee_amount": null,
"automatic_payment_methods": {
"enabled": true
},
"canceled_at": null,
"cancellation_reason": null,
"capture_method": "automatic_async",
"client_secret": "pi_z_3PqK8mLkdIwHu7ix2nR5wT9b_secret_mK8vLpQ2nR5wT9bHxJcF",
"confirmation_method": "automatic",
"created": 1721486400,
"currency": "usdc",
"customer": null,
"customer_account": null,
"description": null,
"excluded_payment_method_types": null,
"hooks": null,
"last_payment_error": null,
"latest_charge": null,
"livemode": false,
"managed_payments": null,
"metadata": {},
"next_action": null,
"on_behalf_of": null,
"payment_details": null,
"payment_method": null,
"payment_method_configuration_details": null,
"payment_method_options": {
"crypto": {}
},
"payment_method_types": [
"crypto"
],
"presentment_details": null,
"processing": null,
"receipt_email": null,
"review": null,
"setup_future_usage": null,
"shared_payment_granted_token": null,
"shipping": null,
"statement_descriptor": null,
"statement_descriptor_suffix": null,
"status": "requires_payment_method",
"transfer_data": null,
"transfer_group": null,
"platform_account": "acct_z_Platform123abc"
}