---
title: "Trial Confirm Card"
method: POST
path: "/api/billing/trial/confirm-card"
tags: ["Billing", "billing"]
---

# Trial Confirm Card

`POST /api/billing/trial/confirm-card`

T2-6 (BILLING_RULES.md §13): finalize card-add for a trial creator.

Frontend calls this after Stripe Elements confirms a SetupIntent. We:
  1. Verify the user is in trial_card_pending state
  2. Verify a payment method is actually attached to their Stripe customer
  3. Set users.card_added_at = NOW(), trial_status = 'active'
  4. Mark the advisory invoice (if any) as status='waived'
  5. Return the new state to the caller

Real billing begins on the NEXT 26th-of-M+1 cycle. The past advisory
cycle is waived (free) per §13 rule "Card added within 5 days".

Idempotent: subsequent calls when state is already 'active' are no-ops
that return success with already_active=True.

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/primetime/apis/primetime-media-api.md) · [All operations](https://skmtc.dev/primetime/apis/primetime-media-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/primetime/primetime-media-api/revisions/9da9a9f64e11/schema)
