Skip to main content
POST
Start a card attachment

How it works

You ask for an attachment for a connected user; we return an attach_url. The user opens it and adds their own card in about a minute — a one-time code from their bank, then a passkey. The card number is entered on the hosted page only; it never passes through your servers. Poll Get the attachment status (or call this endpoint again — with an active attachment it answers 200 with the card instead of starting over). Once active, cards created over MCP charge the attached card directly — no identity verification, no wallet funding. If the response is 422 user_info_required, missing_fields names what to collect first: phone_number via POST /api/v2/wallet/phone/start, consent via POST /api/v2/connect/consent.

Authorizations

Authorization
string
header
required

A platform access token. Get one on the Create an access token endpoint by exchanging your client_id + client_secret, then send it as Authorization: Bearer <token>. Tokens live one hour.

Body

application/json
user_id
string
required

The connected user's id.

Response

A card is already attached for this user — nothing to do.

object
enum<string>
required
Available options:
card_attachment
id
string
required

The attachment id.

user_id
string
required
status
enum<string>
required

pending — the user has not finished the attach link. active — attached; create_card now mints against this card. ineligible — this card cannot be attached; fall back to wallet funding + create_card.

Available options:
pending,
active,
ineligible
attach_url
string

The hosted link the user opens to add their card. Present only on the start response.

expires_at
string<date-time>

When the attach link expires (48 hours). Present only on the start response.

card
object

Display details of the attached card. Present when status is active.

reason
string

Why the card cannot be attached (e.g. issuer_excluded, commercial_card). Present when status is ineligible.

message
string

Human-readable guidance. Present when status is ineligible.