Skip to main content
POST
/
cards
/
{id}
/
terminate
Terminate a card
curl --request POST \
  --url https://api.cartevo.co/api/v1/cards/{id}/terminate \
  --header 'Authorization: Bearer <token>'
{
  "success": true,
  "statusCode": 201,
  "message": "Card terminated successfully",
  "data": {
    "card_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "card_status": "TERMINATED",
    "refund_processed": "true",
    "balance_before_termination": 6
  }
}

Overview

POST /cards/{id}/terminate permanently disables a card. The action is irreversible — a terminated card cannot be reactivated. Any remaining balance on the card is automatically refunded to your company’s USD wallet as part of the same call.

When to use it

  • A customer reports their card details are compromised.
  • An employee leaves and their per-diem card needs to be killed.
  • Cleaning up unused cards to free up your card-slot allowance.
For a temporary disable that preserves the card and balance, use PUT /cards/{id}/freeze instead.

Prerequisites

  • The card must belong to your company.
  • Card status must not already be TERMINATED.

Request

Headers

NameRequiredDescription
AuthorizationYesBearer <access_token>

Path parameters

NameTypeDescription
idstringCard ID (UUID).

Query parameters

NameTypeDefaultDescription
freezeOnFailurebooleanfalseIf true and termination fails upstream, the card is left in FROZEN state instead of ACTIVE, so it cannot be used while you investigate. Recommended for security-sensitive terminations.

Body

None.

Response

201 — Termination successful

{
  "success": true,
  "statusCode": 201,
  "message": "Card terminated successfully",
  "data": {
    "card_id": "550e8400-e29b-41d4-a716-446655440000",
    "card_status": "TERMINATED",
    "refund_processed": true,
    "balance_before_termination": 50.0
  }
}
FieldTypeDescription
card_idstringThe terminated card.
card_statusstringAlways "TERMINATED".
refund_processedbooleantrue if the remaining balance was successfully refunded to the company USD wallet, false otherwise (rare; investigate via support).
balance_before_terminationnumberCard balance immediately before termination. 0 for a card with no funds.

Error responses

Statusmessage exampleTriggerRecommended action
400"Card already terminated"The card status is already TERMINATED.No action — the card is already permanently disabled.
404"Card not found"id is invalid or belongs to another company.Verify the card ID.
5xx"Termination temporarily unavailable"Upstream issuer transient error.Retry with freezeOnFailure=true so the card cannot be used while you wait.

Important notes

  • Termination is irreversible. Once a card is TERMINATED, you cannot unfreeze, fund, or otherwise reactivate it.
  • The remaining balance is automatically refunded to the company USD wallet — you do not need to call POST /cards/{id}/withdraw first.
  • Webhook delivery failures do not roll back the termination. The card is terminated even if your webhook receiver is down.

Webhooks fired

Code examples

cURL
curl -X POST https://api.cartevo.co/api/v1/cards/550e8400-e29b-41d4-a716-446655440000/terminate \
  -H "Authorization: Bearer $TOKEN"
Node.js (axios)
const { data } = await axios.post(
  `https://api.cartevo.co/api/v1/cards/${cardId}/terminate`,
  null,
  {
    headers: { Authorization: `Bearer ${token}` },
    params: { freezeOnFailure: true },
  }
);
console.log(`Refunded ${data.data.balance_before_termination} USD to wallet`);

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string<uuid>
required

Card ID to terminate

Response

Card terminated successfully. Balance refunded to company USD wallet.

success
boolean
Example:

true

statusCode
integer
Example:

201

message
string
Example:

"Card terminated successfully"

data
object