Skip to main content
DELETE
/
cards
/
{cardId}
Terminate Card
curl --request DELETE \
  --url https://api.fyatu.com/api/v3/cards/{cardId} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "reason": "Card reported lost by customer",
  "reference": "cancel-card-abc123"
}
'
{
  "success": true,
  "status": 200,
  "message": "Card terminated successfully",
  "data": {
    "id": "crd_8f3a2b1c4d5e6f7890abcdef12345678",
    "status": "TERMINATED",
    "reason": "Card reported lost by customer",
    "refundedBalance": 45.5,
    "terminatedAt": "2026-01-17T10:00:00+00:00",
    "reference": "cancel-card-abc123"
  },
  "meta": {
    "requestId": "req_a1b2c3d4e5f6",
    "timestamp": "2026-01-17T10:00:00+00:00"
  }
}

Overview

Permanently terminate a card. Any remaining balance will be automatically returned to your business wallet. This action cannot be undone.
Card termination is permanent. The card cannot be reactivated after termination.

Path Parameters

ParameterTypeDescription
cardIdstringThe unique card identifier

Request Body (Optional)

FieldTypeRequiredDescription
referencestringNoYour unique reference for this operation. Defaults to cardId if not provided. Returned in webhooks for easy reconciliation.

Example Usage

<?php
$cardId = 'crd_8f3a2b1c4d5e6f7890abcdef12345678';
$data = [
    'reference' => 'cancel-card-abc123'  // Optional: your unique reference
];

$ch = curl_init('https://api.fyatu.com/api/v3/cards/' . $cardId);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'DELETE',
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $accessToken,
        'Content-Type: application/json'
    ],
    CURLOPT_POSTFIELDS => json_encode($data)
]);

$response = curl_exec($ch);
$result = json_decode($response, true);

if ($result['success']) {
    echo "Card terminated at: " . $result['data']['terminatedAt'] . "\n";
    echo "Reference: " . $result['data']['reference'] . "\n";
}

Error Responses

Error CodeDescription
ALREADY_TERMINATEDCard is already terminated
If you want to temporarily disable a card without losing the balance, use the Freeze Card endpoint instead.

Authorizations

Authorization
string
header
required

JWT access token obtained from /auth/token

Path Parameters

cardId
string
required

Body

application/json
reason
string

Reason for terminating the card (e.g., 'Card lost', 'Card stolen', 'Account closed'). Defaults to 'Terminated by the user' if not provided.

Maximum string length: 255
reference
string

Your unique reference for this operation. Defaults to cardId if not provided.

Maximum string length: 100

Response

Card terminated

success
boolean
Example:

true

status
integer
Example:

200

message
string
data
object
meta
object