/developer/cards. Every request needs Authorization: Bearer <access_token> and X-On-Behalf-Of: <company_id>. See Authentication.
Reading cards needs no permission beyond company membership. Issuing cards needs issue_cards. Changing cards needs manage_cards.
Endpoints
Card numbers, CVVs, and PINs are never returned by the Developer API.
The card object
spending_limitisnullwhen the card has no limit.usedis what the card has spent in the current period, in the limit’s currency. It is omitted if it can’t be read or the card has ended.card_limitsare the card’s fixed limits in EUR. In list responses,dailyandrolling_32_daysalso includeused.- Amounts are decimal strings with two places.
Card status
List cards
expired and terminated cards are excluded unless you ask for them in status.
Each parameter may appear once. Invalid values return 400.
Get a card
Issue a virtual card
Ordering endpoints need anIdempotency-Key header containing a UUID. Retrying with the same key returns the card from the first request instead of issuing another, even if the body differs.
Each company can hold a limited number of live cards (not expired or terminated), virtual and physical together. The default is 30. Ordering beyond the quota returns 422. Contact support to raise it.
The card is issued to the member who owns the API key. It is
active straight away. three_ds_biometric starts true if the cardholder uses the Incard app. Returns 201 with the card.
Order a physical card
First check which delivery methods an address can use:classic (up to 5 business days, free) and express (up to 3 business days, £9.99). Other supported countries, Cyprus included, get international (3–10 business days, £49.99). Countries that can’t be served return 422. Always use the methods delivery-options returns.
Then place the order:
Like virtual cards, the card is issued to the member who owns the API key and is
active straight away. Returns 201 with the card.
Change a card’s status
status must be active, frozen, or terminated. Anything else returns 400. Returns 200 with the card. Setting a card to the status it already has succeeds without change. Other transitions return 409, including reactivating a card Incard has suspended, locked, or blocked.
Replace a card
Gives a virtual card a new number,token, last four, and expiry date. Its id, status, account, limits, and settings stay the same. Spend towards its spending_limit starts again at zero on the new number. Use it when a card number is lost or compromised.
reason is lost or fraud. Requires an Idempotency-Key header (a UUID). Retrying with the same key returns the replaced card. Only active or frozen virtual cards can be replaced. Physical cards return 409. Returns 200 with the card.
Update a card
name, account_id, auto_convert, three_ds_biometric, or spending_limit. Returns 200 with the card.
- Moving a card that has a spending limit to an account in another currency also needs a new
spending_limitin that currency. Otherwise the request returns 409. expiredandterminatedcards can only be renamed.
Spending limits
A spending limit caps what a card can spend perperiod: daily, weekly, monthly, or lifetime. Periods follow the UK calendar, and weeks start on Monday. The limit is always in the card’s account currency.
amountmust be more than 0 with at most two decimal places.- A
dailylimit can be at mostcard_limits.daily.amount. Aweeklyormonthlylimit can be at mostcard_limits.rolling_32_days.amount. The number is compared as-is, without converting from EUR.lifetimelimits have no cap. DELETE /developer/cards/{id}/spending-limitremoves the limit. It returns 204, even if the card had none, or 409 if the card has ended.POST /developer/cards/{id}/spending-limit/resetsets spend for the current period back to zero and keeps the limit. It returns 204, or 409 if the card has no limit or has ended.
Errors
Card errors carry a single message:X-On-Behalf-Of, and unknown routes) use the gateway format instead: { "success": false, "error": { "code": "forbidden", "message": "access denied" } }.