> ## Content Index
> Fetch the complete content index at: https://stablecoininsider.org/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to Accept Agentic USDC Payments with Coinbase Business Checkouts (2026)
- URL: https://stablecoininsider.org/how-to-accept-agentic-usdc-with-coinbase-business-checkouts/
- Published: 2026-09-19T12:10:58.000Z
- Updated: 2026-09-19T12:10:58.000Z
- Description: Accept agentic USDC on Base with Coinbase Business Checkouts: create checkout, expose x402_url, confirm COMPLETED settlement, optional 5 USDC spend caps.
- Author: Alexandra
- Tags: AI, Stablecoins

**Coinbase Business Checkouts** return an **x402\_url** that an AI agent or x402 client can pay programmatically. Paying it authorizes a gasless **USDC** payment on **Base** (EIP-3009); Coinbase captures and settles server-side with no hosted page or wallet pop-up required for the agent path.

Sellers do not need to build the paying-agent stack to go live. Create a checkout, expose **x402\_url**, and treat checkout status **COMPLETED** as settlement truth. Primary source: [Coinbase Business docs: Accept Agentic Payments with x402](https://docs.cdp.coinbase.com/coinbase-business/checkout-apis/accept-x402-payments).

📌

Stablecoin Insider's framing: this guide is the seller path for Coinbase Business Checkouts x402\_url (auth-capture USDC on Base). It is not Stripe x402 checkout, not a raw facilitator accept, and not the AgentKit buyer-only how-to.

Roadmap: create a checkout, share **x402\_url**, confirm settlement (poll or webhooks), optionally sanity-check with a capped test agent, then handle refunds on COMPLETED / PARTIALLY\_REFUNDED.

[How to Accept x402 USDC Payments from AI Agents (2026)Stablecoin Insider operator map for accepting x402 USDC from agents across stacks.![](https://stablecoininsider.org/favicon.ico)Stablecoin Insider](https://stablecoininsider.org/how-to-accept-x402-usdc-payments-from-ai-agents/)

### Key Takeaways

- POST https://business.coinbase.com/api/v1/checkouts with amount and currency USDC returns hosted url plus x402\_url.
- Paying x402\_url authorizes (escrows); Coinbase captures server-side; treat COMPLETED as settlement truth.
- Status path ACTIVE → PROCESSING → COMPLETED; FAILED, EXPIRED, and DEACTIVATED are terminal unpaid.
- Base only; auth-capture scheme; CdpX402Client registers AuthCaptureEvmScheme by default.
- Sandbox checkouts do not return x402\_url; use a live small amount and optional max 5 USDC (5\_000\_000n) spend cap.

⚠️

Named downside: sandbox checkouts currently omit x402\_url, so agentic pay cannot be tested there. Unpaid checkouts expire at expiresAt (24h default if omitted). Ordinary 402 rejections leave the checkout ACTIVE; FAILED is not retryable on the same id.

## What Coinbase Business Checkouts x402 is (and is not)

Checkouts use an authorize-then-capture flow. Paying **x402\_url** authorizes (escrows) funds; Coinbase captures and settles server-side. A **200** on the payment POST means authorized, not settled.

Create responses include both a human hosted **url** and an agent **x402\_url**. Only single-checkout responses carry **x402\_url** (List Checkouts does not), so keep the create response or re-fetch by id.

This object is not [Stripe x402 USDC accept](https://stablecoininsider.org/how-to-accept-x402-usdc-payments-on-stripe/), not a raw [DIY x402 accept](https://stablecoininsider.org/how-to-accept-x402-usdc-payments-from-ai-agents/) behind your own facilitator, and not the [AgentKit buyer pay path](https://stablecoininsider.org/how-to-pay-for-an-x402-api-with-coinbase-agentkit/). For protocol context see [x402 protocol](https://stablecoininsider.org/x402-protocol/).

## Who this is for (and who should skip it)

Use Business Checkouts when the firm already has a Coinbase Business account with a CDP API key and wants Base USDC agent payments without building capture logic.

Skip it when agents must pay on a non-Base network, when sandbox-only testing is required for x402\_url, or when the stack already settles through Stripe x402 or a custom accept. Auth context: [Coinbase Business authentication](https://docs.cdp.coinbase.com/coinbase-business/authentication) (JWT Bearer with **rat#view** scope on create).

## How to accept agentic USDC with Coinbase Business Checkouts (2026)

### 1\. Create a checkout (amount + USDC)

POST **https://business.coinbase.com/api/v1/checkouts** with a JWT Bearer signed by the CDP API key secret. Body example from Coinbase docs: amount **"1.00"**, currency **"USDC"**, plus an optional description.

The response includes **id**, status **ACTIVE**, network **base**, hosted **url**, and **x402\_url** under api.cdp.coinbase.com payment-sessions authorizations. Humans can still open the hosted url on Base; agents use **x402\_url**.

[Open Accept Agentic Payments docs](https://docs.cdp.coinbase.com/coinbase-business/checkout-apis/accept-x402-payments)

### 2\. Expose x402\_url to agents

Share **x402\_url** with agents or your x402 client. The endpoint is a POST: the first call returns **402 Payment Required** with requirements in the **PAYMENT-REQUIRED** header; the client retries with **PAYMENT-SIGNATURE**.

Checkouts advertise the EVM **auth-capture** scheme. **CdpX402Client** registers **AuthCaptureEvmScheme** by default. Clients that only know **exact** must register **AuthCaptureEvmScheme** from **@x402/evm** before paying.

### 3\. Confirm settlement (poll or webhooks)

Poll GET **/api/v1/checkouts/{id}** until a terminal status. Expected path: **ACTIVE → PROCESSING → COMPLETED**. **PROCESSING** starts when Coinbase receives a successful authorization; **COMPLETED** means capture settled and **transactionHash** holds the on-chain capture.

Do not require observing PROCESSING; infrequent polling may skip it. Bad signature, wrong amount, or insufficient balance returns another 402 and leaves the checkout ACTIVE (safe to retry). **FAILED** is unpaid and not retryable on the same checkout. Also terminal unpaid: **EXPIRED** (expiresAt passed) and **DEACTIVATED** (you deactivated). Prefer webhooks for real-time status when available.

Failure handling: if status is FAILED, create a new checkout instead of retrying the same id. If the checkout is still ACTIVE after a 402, agents may retry with a fresh payment challenge.

### 4\. Optional: sanity-check with a capped test agent

Not required to go live. Use only to pay your own **x402\_url** once and confirm **COMPLETED**. Coinbase's sample uses a CDP-managed EVM account via **fromCdpEvmAccount**; customer agents need not use that pattern.

Prereqs from docs: CDP Secret API Key, Wallet Secret, USDC on Base, Node.js **22.18+**. Packages include **@coinbase/cdp-sdk**, **@x402/fetch**, **@x402/evm**. Cap signing with **applySpendControls** example **maxAmountPerPayment: { atomic: 5\_000\_000n }** (5 USDC at 6 decimals), then **wrapFetchWithPayment**.

Sandbox checkouts do not currently return **x402\_url**. Use a live checkout with a small amount and fund only what you intend to pay. Create the checkout after the payer is funded; unpaid checkouts expire at **expiresAt** (24 hours from creation if omitted). Buyer context: [x402 buyer quickstart](https://docs.cdp.coinbase.com/x402/quickstart-for-buyers).

### 5\. Refunds on COMPLETED / PARTIALLY\_REFUNDED

A **COMPLETED** or **PARTIALLY\_REFUNDED** checkout can be refunded fully or partially up to the remaining amount via Refund Checkout. Refunds are asynchronous; poll for **refundedAmount** and status **REFUNDED** or **PARTIALLY\_REFUNDED**.

Keep refund runbooks separate from agent pay retries. For related wallet funding patterns see [Circle Agent Wallet for USDC](https://stablecoininsider.org/how-to-create-a-circle-agent-wallet-for-usdc/); for facilitator choice see [how to choose an x402 facilitator](https://stablecoininsider.org/how-to-choose-an-x402-facilitator-for-usdc/).

## Coinbase Business Checkouts vs other agentic USDC paths

| Path                            | Seller surface                 | Network / scheme                   | Settlement truth                         |
| ------------------------------- | ------------------------------ | ---------------------------------- | ---------------------------------------- |
| **Coinbase Business Checkouts** | Create Checkout → x402\_url    | Base only; auth-capture (EIP-3009) | Checkout COMPLETED \+ capture tx hash    |
| **Stripe x402**                 | Stripe x402 accept integration | See Stripe / SCI Stripe how-to     | Stripe payment status (separate product) |
| **Raw x402 accept**             | Your server + facilitator      | Network per facilitator config     | Your facilitator / on-chain confirm      |
| **AgentKit buyer**              | Buyer pays existing x402 APIs  | Buyer-side AgentKit client         | Upstream seller settlement rules         |

Pick Business Checkouts when Coinbase already holds capture and you want a hosted human url plus agent **x402\_url** from one create call. Pick Stripe or raw accept when Coinbase Business is not the settlement operator. Pick AgentKit when you are the buyer, not the merchant.

Ops note: store **x402\_url** with the checkout id in your ledger. If List Checkouts is used for reporting, re-fetch by id when you need the agent URL again.

Security note: **wrapFetchWithPayment** will sign whatever the server asks for unless spend controls bound it. Never point an uncapped client at a public **x402\_url** on mainnet.

Product note: Business Checkouts keep humans on the hosted **url** and agents on **x402\_url** from the same create call. That dual surface is the main reason operators pick this object over a buyer-only AgentKit path.

Integration tip: subscribe to checkout webhooks early so finance and agent runtimes share one COMPLETED signal. Polling alone works for low volume; webhooks scale cleaner when many agents pay in parallel.

Compliance tip: document that agent payments are Base USDC auth-capture under Coinbase Business Checkouts, not a custodial wallet transfer initiated by your firm. Keep CDP keys and Wallet Secrets in server secrets managers only.

## Stablecoin Insider's take

💡

Stablecoin Insider's take: Coinbase Business Checkouts are the cleanest Base-only auth-capture path when the team already has CDP keys and wants COMPLETED as a single settlement signal. Lock spend caps and live-small-amount testing before any public agent endpoint.

Treat **x402\_url** as an authorize endpoint, not a settle receipt. Wire webhooks or poll until COMPLETED before shipping goods or unlocking paid tools.

---

Need the broader agent accept map before you wire Business Checkouts?

[Read accept x402 USDC from AI agents ](https://stablecoininsider.org/how-to-accept-x402-usdc-payments-from-ai-agents/) 

[Open Coinbase Accept Agentic Payments docs](https://docs.cdp.coinbase.com/coinbase-business/checkout-apis/accept-x402-payments)

## FAQ

#### What is Coinbase Business Checkouts x402\_url?

x402\_url is the agent payment endpoint returned when you create a Coinbase Business Checkout for USDC. Paying it authorizes a gasless USDC payment on Base; Coinbase captures server-side.

Humans can still use the separate hosted url in a browser.

#### How do you create a checkout for agentic USDC?

POST https://business.coinbase.com/api/v1/checkouts with a JWT Bearer (rat#view scope), amount, and currency USDC.

The create response includes hosted url and x402\_url; keep x402\_url from create or re-fetch by checkout id.

#### When is an agentic checkout settled?

When checkout status reaches COMPLETED and transactionHash holds the on-chain capture. A 200 on the x402 payment POST means authorized (escrowed), not settled.

Expected path is ACTIVE → PROCESSING → COMPLETED.

#### Why do sandbox checkouts fail agent tests?

Sandbox checkouts do not currently return x402\_url, so agentic payments cannot be tested there.

Coinbase docs say to use a live checkout with a small amount and fund only what you intend to pay.

#### What spend cap should a test agent use?

Coinbase's sample applies applySpendControls with maxAmountPerPayment atomic 5\_000\_000n (5 USDC at 6 decimals) before wrapFetchWithPayment.

Raise or lower the cap for your agent before pointing it at mainnet.

#### Can COMPLETED checkouts be refunded?

Yes. COMPLETED or PARTIALLY\_REFUNDED checkouts can be refunded fully or partially up to the remaining amount via Refund Checkout.

Refunds are asynchronous; poll refundedAmount and status REFUNDED or PARTIALLY\_REFUNDED.

#### Is Business Checkouts the same as AgentKit pay?

No. Business Checkouts are the seller create-and-settle product with x402\_url. AgentKit is commonly the buyer client path for paying x402 APIs.

Stablecoin Insider covers AgentKit pay and Stripe x402 accept as separate how-tos.

This content is provided for informational and educational purposes only and does not constitute financial, investment, legal, or tax advice; no material herein should be interpreted as a recommendation, endorsement, or solicitation to buy or sell any financial instrument, and readers should conduct their own independent research or consult a qualified professional.