Skip to main content
POST

Installment Checkout

Intro

Starts checkout for the first installment of a product sold in installments. When the customer pays, an installment plan is opened and their card is saved for the rest.

Context

This is the installment version of Create Payment Session. The same checkout is available by adding "installment": { "enabled": true } to POST /payments/sessions, POST /payments/intents or POST /sdk/initialize — those endpoints then return this response. See Installments for the whole flow.

Hows

POST /installment-plans/checkout

Request body

Response

Complete the payment in the browser: for Stripe, confirm with Stripe.js using client_secret (and stripe_account_id when present — the payment is then on the business’s own Stripe account); 3-D Secure is handled there. For Paystack and Flutterwave, redirect the customer to payment_url.

What happens next

  1. The plan is created with status pending and installment_plan.created is sent.
  2. When the payment succeeds, installment 1 is paid (installment.paid), the plan becomes active, the card is saved, and the other installments get due dates, monthly from that day.

Errors

Whys

The first installment is a real checkout rather than a card-only setup step so the customer pays something at the moment they commit, and so routing, currency conversion, fees and 3-D Secure all behave exactly as they do for any other purchase.

Why nots

  • The amount charged is the first installment only; there is no way to prepay several installments in one checkout.
  • It doesn’t take a coupon or custom amount — the product’s price and template decide the amounts.