Choosing a Checkout Method
Order Lifecycle
Create an Order
Orders start asOPEN and can have products added to them. Creating an order with a product in a single call:
Get Open Order
Retrieve the current open order for a user (only one open order at a time):Add Product to Order
Remove Item from Order
Order Status Flow
Stripe Checkout
The most common flow for consumer-facing applications. Creates a Stripe PaymentIntent and returns aclientSecret for completing payment on the frontend.
Response:
How It Works
1
Create PaymentIntent
POST /checkout creates a Stripe PaymentIntent for the order total (minus any points discount). If a PaymentIntent already exists and points haven’t changed, the existing one is reused. If points changed, the old intent is cancelled and a new one is created.2
Complete Payment
Use the
clientSecret on the frontend with Stripe.js or Stripe Elements to collect payment. The user enters their card and confirms.3
Webhook Confirmation
Stripe sends
payment_intent.succeeded to /webhooks/stripe/payment-intent/succeeded. Podium updates the order to PAID, decrements inventory, and publishes an OrderConfirmationEvent.4
Finalize Points
If points were applied, call
PUT /user/{userId}/order/{orderId}/points/finalize to commit the point spend. If the payment failed, call POST /user/{userId}/order/{orderId}/points/revert to return the points.x402 Checkout (USDC)
Machine-native payment for autonomous agents. No authentication required — the agent pays with USDC on Base via the x402 protocol. See x402 Payments for the full protocol spec.How It Works
1
Request Requirements
Agent calls the pay endpoint without an
X-PAYMENT header. The server returns 402 Payment Required with the order amount in USDC, the payTo address, and the network (Base).2
Sign and Send Payment
Agent constructs a USDC transfer, signs it, and re-calls the endpoint with the
X-PAYMENT header containing the base64-encoded payment proof.3
Verify and Settle
Podium decodes the payment, verifies the amount matches the order total, and confirms the on-chain transfer via the x402 facilitator. On success: creates/updates an
X402Payment record, moves the order to PAID, and decrements inventory.x402 checkout requires the organization to have
x402PayToAddress configured in their settings. The payment amount is converted from the order’s cent-based total to USDC (6 decimal places).Embedded Wallet Checkout
For automated crypto checkout using Privy server-managed wallets. The transaction is executed server-side — no user interaction required during payment.How It Works
- Your backend initiates a USDC transfer from the user’s Privy embedded wallet
- After the transaction confirms on-chain, call this endpoint with the
txHash - Podium verifies the wallet, creates a
CryptoPaymentIntent(statusCONFIRMED), updates the order toPAID, and decrements inventory - An
OrderConfirmationEventis published if an email is provided
Coinbase Commerce Checkout
Multi-token crypto checkout via Coinbase Commerce:Discounts and Points
Apply Points Discount
Apply Discount Code
Finalize Points
After successful payment, commit the point spend:Revert Points
On payment failure, return held points to the user:Shipping
Podium integrates with Shippo for shipping rate calculation and label generation.Get Shipping Quote
Returns available shipping rates and updates the Stripe PaymentIntent amount to include shipping:Generate Shipping Label
Guest Checkout
Anonymous buyers can place orders without creating a Podium account.Create Guest Order
Guest Stripe Checkout
clientSecret — same flow as authenticated checkout but without user context.

