---
title: "SetupBilling"
method: POST
path: "/gitpod.v1.BillingService/SetupBilling"
tags: ["gitpod.v1.BillingService"]
---

# SetupBilling

`POST /gitpod.v1.BillingService/SetupBilling`

## Request body

- GitpodV1SetupBillingRequest
  - `amountCents` string, nullable — amount_cents is the intended first-month subscription amount in cents. When set, the server authorizes this amount in-session (a manual-capture PaymentIntent hold) instead of a zero-amount SetupIntent, so the charge can be captured asynchronously after the subscription is granted. When unset, the server falls back to a SetupIntent (the existing card-on-file flow).
  - `couponCode` string, nullable — coupon_code is an optional coupon to apply when computing the in-session authorization amount. Only meaningful when amount_cents is set.
  - `intentId` string, nullable — intent_id, when provided, identifies an existing PaymentIntent to update in place with the new amount_cents instead of creating a new one. This lets the client adjust the authorized amount as the user changes their selection without churning a new PaymentIntent (and its hold) on every change. Only meaningful when amount_cents is set; ignored on the SetupIntent fallback.
  - `organizationId` string, uuid, required — organization_id is the ID of the organization to update

## Response `200`

Success

- GitpodV1SetupBillingResponse
  - `customerSessionClientSecret` string, required — customer_session_client_secret is the client secret for the Stripe CustomerSession
  - `setupIntentClientSecret` string, required — setup_intent_client_secret is the client secret for the Stripe SetupIntent

## Other responses

- `default` — Error

---

[API](https://skmtc.net/gitpod-io/apis/gitpod-v1.md) · [All operations](https://skmtc.net/gitpod-io/apis/gitpod-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gitpod-io/gitpod-v1/versions/44d50c2ac284/schema)
