Ensure the Moov account has the card-issuing capability in enabled status before attempting card creation.
POST to https://api.moov.io/issuing/{accountID}/issued-cards with header x-moov-version: v2026.04.00 and a body containing fundingWalletID, authorizedUser (firstName, lastName), formFactor: "virtual", and an optional controls object with velocityLimits.
Each velocityLimit entry requires an amount (integer cents) and an interval; currently the only supported interval value is per-transaction.
Capture the issuedCardID from the 200 response; poll the state field — the card starts active shortly after creation.
To retrieve the full PAN and CVV, call GET /issuing/{accountID}/issued-cards/{issuedCardID}/details; this endpoint requires the /accounts/{accountID}/issued-cards.read-secure scope in the access token.
Track authorizations via GET /issuing/{accountID}/authorizations and card transactions via GET /issuing/{accountID}/card-transactions.
Known gotchas
Only formFactor: "virtual" is currently supported for issued cards via the Moov API; physical card issuance is not available through this endpoint.
Velocity limits only support one limit per interval; submitting multiple entries for the same interval will result in a validation error.
Cards in pending-verification state cannot approve authorizations; ensure the authorized user data passes Moov's verification before expecting the card to go active.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp