---
title: "Setup Payment Method"
method: POST
path: "/v1/organizations/billing/setup-payment-method"
tags: ["Organization Billing"]
---

# Setup Payment Method

`POST /v1/organizations/billing/setup-payment-method`

Initialize payment method setup flow.

Creates a Stripe SetupIntent for collecting payment method without charging.
The client_secret should be used with Stripe Elements on the frontend.

**Flow:**
1. Frontend calls this endpoint
2. Backend creates Stripe Customer (if needed) and SetupIntent
3. Frontend uses client_secret with Stripe Elements
4. User enters card details
5. Frontend calls confirm-payment-method endpoint

**Requirements:**
- Admin permission (only org admins can set up payment methods)

**Example:**
```python
response = await client.post("/v1/organizations/billing/setup-payment-method")
client_secret = response["client_secret"]
# Use client_secret with Stripe Elements
```

## Response `200`

Successful Response

- SetupPaymentMethodResponse — Response after creating a SetupIntent.
  - `setup_intent_id` string, required — Stripe SetupIntent ID
  - `client_secret` string, required — Client secret for Stripe Elements
  - `customer_id` string, required — Stripe Customer ID

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `422` — Validation Error
- `500` — Internal Server Error

---

[API](https://skmtc.net/mixpeek/apis/mixpeek-api.md) · [All operations](https://skmtc.net/mixpeek/apis/mixpeek-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mixpeek/mixpeek-api/versions/220a3b263fda/schema)
