# POST /api/v1/billing/payment-methods/cards/setup-link

> A single-visit link to add a card

- Group: billing
- Tier: W
- Required scope: write:billing
- Docs: https://api.inleed.com/reference/billing/get-add-card-link

## Description

Returns `url`, `billingAddressId`, `expiresAt` and a `note`. The customer opens it and enters the card with the processor; nothing is charged. List saved cards with `list_payment_methods`.

## Body

- `billing_address_id` — integer. Minimum 1.

## Request

```bash
curl -X POST "https://mcp.inleed.com/api/v1/billing/payment-methods/cards/setup-link" \
  -H "Authorization: Bearer inl_live_…" \
  -H "Content-Type: application/json" \
  -d '{"billing_address_id":1}'
```

## Errors

- **400**  — codes: invalid_request
- **401** No token was presented, or the token is revoked, expired or unknown. — codes: unauthorized, token_expired, token_revoked
- **403** The token lacks a required scope, or this account does not own the resource. — codes: insufficient_scope, not_owned
- **404** No such resource for this account. — codes: not_found
- **422** Validation error — codes: validation_failed
- **429** The rate limit for this token is exhausted. See `Retry-After`. — codes: rate_limited
- **500** Something went wrong on our side. The failure is logged against `requestId`. — codes: internal_error

## Related

- GET /api/v1/billing/payment-methods — https://api.inleed.com/reference/billing/list-payment-methods
- DELETE /api/v1/billing/payment-methods/cards/{card} — https://api.inleed.com/reference/billing/remove-payment-card

