---
title: "Start Payment Method Update"
method: POST
path: "/api/v1/subscriptions/me/payment-method-update"
tags: ["Subscriptions"]
---

# Start Payment Method Update

`POST /api/v1/subscriptions/me/payment-method-update`

## Request

- Base URL: `https://api.gemina.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.gemina.co/api/v1/subscriptions/me/payment-method-update`
- Auth: OAuth 2 (password, token URL `token`)

Start replacing the card on file for the caller's subscription (or
enterprise contract). POST, not GET: for an active subscription Paddle
creates a new zero-value transaction on every call.

## Response `200`

Successful Response

- PaymentMethodUpdateOutDTO: A Paddle transaction to open in Paddle.js (``Checkout.open({transactionId})``) so the customer can replace the card on file. ``purpose`` tells the client what completing it does: "update_payment_method" — saves the new card, charges nothing; "pay_overdue" — the subscription is past due, so the checkout charges the overdue renewal with the new card and the subscription recovers; "resume_subscription" — the subscription is paused, so saving the card resumes it and bills a new billing period immediately (a separate charge that can still fail). ``checkoutUrl`` is Paddle's hosted link for clients without Paddle.js.
  - `createdAt` string, date-time, nullable
  - `createdAtTimestamp` number, nullable
  - `paddleTransactionId` string, required
  - `checkoutUrl` string, nullable
  - `purpose` 'update_payment_method' | 'pay_overdue' | 'resume_subscription', required

## Other responses

- `404`: The resource does not exist, or is not visible to the caller. Ownership failures are deliberately indistinguishable from a missing resource.

---

[API](https://skmtc.dev/gemina/apis/gemina-api.md) · [All operations](https://skmtc.dev/gemina/apis/gemina-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gemina/apis/gemina-api/revisions/152fd3f6f6ec?raw)
