---
title: "Create a payment intent"
method: POST
path: "/v1/payments/create-intent"
tags: ["Stripe Payments"]
---

# Create a payment intent

`POST /v1/payments/create-intent`

Creates a Stripe PaymentIntent for one-time payments. Returns clientSecret for frontend Stripe.js integration.

## Request body

- CreatePaymentIntentDto
  - `amount` number, required — Amount in cents (e.g., 5999 = $59.99)
  - `currency` string, required — ISO currency code (lowercase)
  - `planId` string, required — Internal plan identifier
  - `planName` string, required — Display name for receipts
  - `email` string — Customer email for receipt
  - `userId` string — Firebase user ID if authenticated
  - `webUserId` string — Web user ID from tracking system

## Response `200`

Payment intent created successfully

- CreatePaymentIntentResponseDto
  - `clientSecret` string, required — Client secret for Stripe.js confirmPayment
  - `paymentIntentId` string, required — Payment Intent ID for reference

## Other responses

- `400` — Invalid request parameters or Stripe error

---

[API](https://skmtc.dev/miaai/apis/backend-template-api.md) · [All operations](https://skmtc.dev/miaai/apis/backend-template-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/miaai/backend-template-api/revisions/2a8d88a5124f/schema)
