---
title: "Choose which saved instrument gets charged"
method: POST
path: "/billing/payment-methods/{payment_method_id}/default"
tags: ["Billing"]
---

# Choose which saved instrument gets charged

`POST /billing/payment-methods/{payment_method_id}/default`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/billing/payment-methods/{payment_method_id}/default`
- Auth: HTTP bearer

Owner-only. Points the organization's Stripe customer at this instrument for future invoices, and returns the full updated list so the caller never has to infer the new default.

## Path parameters

- `payment_method_id` string, required

## Query parameters

- `org_id` string

## Response `200`

Updated instrument list, with the new default flagged.

- PaymentMethodList: The organization's saved instruments. An empty array means genuinely nothing on file — a failure is a 4xx/5xx, never an empty list, so an outage can never read as 'you have no payment method'.
  - `paymentMethods` PaymentMethod[], required
    - `id` string, required: Provider instrument id (e.g. Stripe `pm_…`).
    - `kind` string, required: Instrument kind — `card`, `us_bank_account`, `sepa_debit`, `link`, … Unrecognized kinds are passed through verbatim rather than dropped, so a newly-supported instrument still renders as *something* rather than disappearing.
    - `brand` string: Card network (`visa`, `mastercard`, `amex`, …) or, for a bank account, the bank name.
    - `last4` string: Last four digits only — never more.
    - `expMonth` integer: Card expiry month. Absent for non-card instruments.
    - `expYear` integer: Card expiry year. Absent for non-card instruments.
    - `bankAccountStatus` 'blocked': Present and equal to `blocked` when a bank-account instrument has been blocked by the bank or network and can no longer be charged. Absent for cards, and absent for a bank account with nothing reported — absent does NOT mean 'verified'. (The payment provider exposes no micro-deposit verification state on a saved instrument, so none is claimed here.)
    - `isDefault` boolean, required: Whether future invoices are charged to this instrument.

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `429`: Rate-limit exceeded. The global per-IP limiter (100 requests/minute, applied to every `/v1/*` route) rejected this request. Back off until the window resets — `Retry-After` carries the cooldown in seconds and `X-RateLimit-Reset` the absolute reset time.
- `500`: Server error — request was well-formed but the server failed to fulfill it. Typically a downstream dependency (DB / RPC / external API) returned an unexpected error.

---

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