Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

Pay with Issuing in agentic payment flows


Private preview

Pay with Issuing in agentic payment flows Private preview

Let agents pay sellers through Stripe-backed programmatic protocols without sharing card credentials.

When your agent tries to complete a purchase, the seller might offer a programmatic payment flow. It’s a deterministic, machine-readable way to pay (often an HTTP challenge, a structured API, or a protocol handler) without parsing checkout-page HTML.

Stripe-backed examples include the Machine Payments Protocol (MPP) and, where supported, UCP. This guide explains how to fund those flows with an Issuing card in your Stripe account.

When this applies

Use this guide when all of the following are true:

  • Your agent pays on behalf of your business using Issuing (an ic _ * virtual card you issue and control).
  • The seller supports a Stripe-backed programmatic payment flow. For MPP, its endpoint returns an HTTP 402 with payment requirements. For UCP, its profile advertises the com. stripe. payments handler.
  • You want a structured integration path—the agent follows a defined protocol instead of parsing checkout pages.

If the seller only supports browser checkout, retrieve the virtual card credentials and use the card directly. The SPT flow below applies only when the seller identifies support for a Stripe-backed protocol.

Convert the card to a Shared Payment Token (SPT)

Don’t hand your agent the card number or a long-lived payment method. Programmatic flows use a “seller-scoped, amount-limited, time-limited” credential without exposing the underlying card.

A Shared Payment Token (SPT) is this credential. You still fund the purchase from your Issuing card, but the seller redeems an spt_* scoped to their Stripe profile. When the seller attempts payment, the charge runs through your existing Issuing real-time authorization path—before capture and settlement.

An SPT remains usable until it expires, you revoke it, or cumulative captured payments reach usage_limits[max_amount].

How Issuing controls and SPT limits work together

Issuing card controls and SPT limits solve different problems, and both apply:

LayerWhat it controls
Issuing cardBaseline spend policy—limits, allowed categories, lifecycle—and whether you approve each authorization in issuing_authorization.request webhooks
SPTWhat a specific seller can charge for this programmatic purchase—amount, currency, and expiration

Set card-level controls as your ongoing fraud and spend policy. Set SPT usage_limits to match the purchase your agent is completing for that seller. An authorization must satisfy both your card controls and the SPT grant.

Verify webhook signatures and allowlist Stripe IP addresses on your webhook endpoint so you only approve authorizations from genuine Stripe events.

What you’ll build

Programmatic payment with Issuing chains three Stripe objects before the agent pays through the protocol (MPP, UCP, or similar):

  1. Issuing card ( ic _ * ): The funding source in your account.
  2. PaymentMethod ( pm _ * ): A buyer-owned clone of the Issuing card in your account, created without exposing the PAN or CVC. The seller never receives this object.
  3. Shared Payment Token ( spt _ * ): A scoped grant derived from the PaymentMethod that the agent presents to the seller’s programmatic endpoint.

Before you begin

  • Issuing enabled on your Stripe account
  • A Stripe profile ( profile _ * ) for your business and for the seller
  • A seller that identifies support for a Stripe-backed programmatic flow, such as MPP or UCP
  • Preview API version 2026-04-22. preview for PaymentMethod-from-Issuing-card and SPT requests. See the private preview release channel .
  • Private preview access to create PaymentMethods from Issuing cards. Contact us to request access.

Issue an Issuing card

Issue a virtual card in your account with spend controls that match how your agent spends. These controls remain in effect for every authorization on the card, including payments funded through an SPT.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Create a PaymentMethod from the Issuing card

Private preview

This API is in private preview. Without access, we reject card[issuing_card] as an unknown parameter.

Use a restricted API key with PaymentMethod write ( payment_method_write) permission or your account secret key only during development. Clone the Issuing card into a buyer-owned PaymentMethod—still in your account, and not the seller’s:

Command Line

Select a language

cURL

Stripe CLI

No results

Returns a pm_* object in your account.

Issue an SPT from the PaymentMethod

Use a restricted API key with Shared payment token write ( shared_payment_token_write) permission or your account secret key only during development. Create an SPT scoped to the seller’s profile and the purchase amount:

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

  • payment _ method : The pm _ * from the previous step.
  • usage _ limits[max _ amount] : Maximum spendable amount, in the smallest currency unit (for example, 1000 = 10.00 USD).
  • usage _ limits[currency] : ISO currency code for the limit.
  • usage _ limits[expires _ at] : Unix timestamp after which the token can no longer be used.
  • seller _ details[network _ business _ profile] : The seller’s Stripe business network profile ID ( profile _ * ). In test mode, you can use the test profile ID shown above.

Returns an spt_* object.

Present the SPT to the seller

Give the spt_* to your agent to present at the seller’s programmatic endpoint. For MPP, the seller responds with an HTTP 402 challenge that includes payment requirements. Your agent retries with the SPT credential to complete payment.

Other Stripe-backed protocols follow their own discovery and credential exchange steps. See the seller’s protocol documentation—for example, the MPP quickstart or UCP Stripe Payments handler.

See also

Last verified 2026-09-24

Is this helpful?