Skip to main content
Recommended for all new integrations.
Clara’s Cards API lets you manage physical and virtual cards for your users and teams. You can create cards, retrieve details, update names, change statuses, and more — all programmatically.
OperationEndpointMethod
Find all cards/api/v3/cardsGET
Find card by UUID/api/v3/cards/{uuid}GET
Find all card requests by batch ID/api/v3/cards/requests/batches/{id}GET
Find all card requests by ID/api/v3/cards/requests/{id}GET
Find all card requests/api/v3/cards/requestsGET
Create cards/api/v3/cards/bulk-createPOST
Single create card/api/v3/cardsPOST
Update single card threshold/api/v3/cards/{uuid}/thresholdPATCH
Update multiple cards threshold/api/v3/cards/thresholdPATCH
Lock/unlock a single card/api/v3/cards/{uuid}/lockPATCH
Lock/unlock multiple cards/api/v3/cards/lockPATCH
Delete card/api/v3/cards/{uuid}DELETE
Delete cards/api/v3/cards/deletePOST

Find All Cards

List all cards in your account.

Endpoint

GET /api/v3/cards

cURL Request

cURL
curl -X GET "https://public-api.mx.clara.com/api/v3/cards/" \
--cert /path/to/client-cert.pem \
--key /path/to/client-key.pem \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Sample JSON Response

JSON
{
  "content": [
    {
      "uuid": "dd9bf99c-648b-419d-8316-32201ef91289",
      "claraStatus": "ACTIVE",
      "status": "ACTIVE",
      "lockCode": "UNLOCKED",
      "alias": "Marketing Card",
      "threshold": 1000.0,
      "periodicity": "MONTHLY",
      "maskedPan": "510979******9579",
      "type": "MASTER_VIRTUAL",
      "user": {
        "uuid": "c3fb1f07-5e7f-47b8-9819-0b09151b8099",
        "fullName": "Ana García",
        "username": "ana.garcia@company.com"
      }
    }
  ],
  "totalElements": 379,
  "totalPages": 190,
  "size": 2,
  "number": 0
}

Query Parameters

ParameterTypeDescriptionValid Values / Notes
pageintegerZero-based index of the page to retrieve. Used for pagination.0..N
sizeintegerNumber of records to retrieve per page.Max allowed may depend on backend constraints
userUuidstringFilter cards that belong to a specific user by UUID.Cannot be used in combination with userErpId
usernamestringFilter cards by the associated user’s username (email/handle).Must be exact match
statusstringFilter by card status.e.g., ACTIVE, BLOCKED, CANCELLED, EXPIRED, etc.
periodicitystringFilter cards by their spending limit periodicity.DAILY, WEEKLY, MONTHLY
typestringFilter by the card’s product and format type.See full list below
userErpIdstringERP-specific user identifier. Applies only if userUuid is not provided.Used for integrations with ERP systems like SAP, NetSuite, etc.
✅ Valid Values for type
ValueDescription
MASTER_WORLD_ELITEMastercard-branded premium “World Elite” card
MASTER_CORPORATEMastercard corporate-level card
MASTER_VIRTUALVirtual Mastercard
VISA_PHYSICALPhysical Visa card
VISA_VIRTUALVirtual Visa card
⚠️ This field represents a combination of network + format + product line (not just “VIRTUAL” / “PHYSICAL” like in the POST endpoint).

Find Card by UUID

Fetch a single card by its UUID.

Endpoint

GET /api/v3/cards/{uuid}

cURL Request

cURL
curl -X GET "https://public-api.mx.clara.com/api/v3/cards/5d1e2f83-1c90-4c34-9400-bfef9ac85c6e" \
--cert /path/to/client-cert.pem \
--key /path/to/client-key.pem \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Sample JSON Response

JSON
{
  "uuid": "dd9bf99c-648b-419d-8316-32201ef91289",
  "claraStatus": "ACTIVE",
  "status": "ACTIVE",
  "lockCode": "UNLOCKED",
  "alias": "Marketing Card",
  "threshold": 1000.0,
  "periodicity": "MONTHLY",
  "maskedPan": "510979******9579",
  "type": "MASTER_VIRTUAL",
  "cvv": "705",
  "expiryDate": "12/30",
  "numberOnCard": "5109790205009579",
  "user": {
    "uuid": "c3fb1f07-5e7f-47b8-9819-0b09151b8099",
    "fullName": "Ana García",
    "username": "ana.garcia@company.com"
  }
}

Create Cards (Bulk)

Create multiple cards asynchronously.

Endpoint

POST /api/v3/cards/bulk-create

cURL Request

cURL
curl -X POST "https://public-api.mx.clara.com/api/v3/cards/bulk-create" \
--cert /path/to/client-cert.pem \
--key /path/to/client-key.pem \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "cardsRequests": [
    {
      "type": "virtual",
      "alias": "Ops Team",
      "userUUID": "user-uuid-1",
      "threshold": 500,
      "periodicityType": "DAILY"
    }
  ]
}'
🕑 Cards are created async—monitor via webhook or poll /v3/cards.

Create Single Card

Create one card directly.

Endpoint

POST /api/v3/cards

cURL Request

cURL
curl -X POST "https://public-api.mx.clara.com/api/v3/cards" \
--cert /path/to/client-cert.pem \
--key /path/to/client-key.pem \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "type": "physical",
  "alias": "Team Card",
  "userUUID": "user-uuid-2",
  "threshold": 1000,
  "periodicityType": "MONTHLY"
}'

Request Body Fields

FieldTypeRequiredDescriptionValid Values / Notes
typestring✅ YesDefines whether the card is virtual or physicalVIRTUAL, PHYSICAL
aliasstring✅ YesAlias or nickname to identify the cardFree-text
userUuiduuid✅ YesUUID of the cardholderMust belong to a valid user in your organization
thresholdnumber❌ NoSpending limit assigned to the cardMust respect credit policies and cannot exceed company limit
businessTypestring❌ NoDefines the business product tier of the cardBUSINESS, WORLD_ELITE
periodicitystring❌ NoFrequency at which the threshold resetsDAILY, WEEKLY, MONTHLY

Update Card Threshold

Adjust the spending limit for a card.

Endpoint

PATCH /api/v3/cards/{uuid}/threshold

cURL Request

cURL
curl -X PATCH "https://public-api.mx.clara.com/api/v3/cards/abc-123/threshold" \
--cert /path/to/client-cert.pem \
--key /path/to/client-key.pem \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"threshold": 800}'

Toggle Card Lock

Lock or unlock a card.

Endpoint

PATCH /api/v3/cards/{uuid}/lock

cURL Request

cURL
curl -X PATCH "https://public-api.mx.clara.com/api/v3/cards/abc-123/lock" \
--cert /path/to/client-cert.pem \
--key /path/to/client-key.pem \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"locked": true, "lockCode": 16}'

Request Body

FieldTypeRequiredDescription
lockedbooleantrue to lock, false to unlock
lockCodeintegerMust be 16 for API-initiated locks

Response (202 Accepted — async)

{
  "batchId": "836ce8d6-e767-4a3f-827c-14919413638c",
  "id": "8034e101-adc9-4a65-8cfc-ddd98c4377e0",
  "uuid": "dd9bf99c-648b-419d-8316-32201ef91289",
  "status": "UPDATED"
}

lockCode values

The lockCode field identifies who is initiating the lock. Use 16 for API-initiated locks.
lockCodeInitiated byDescription
16API / integrationStandard user-initiated lock. Use this for programmatic lock/unlock via the API.
Locks can also be applied by manager hierarchy (Master Lock) or by Clara’s internal team (Clara Blocked). These originate from different sources and cannot be set via the API — they are reflected in the lockCode field when you read the card back with GET /api/v3/cards/{uuid}.

Delete a Card

Cancel (soft-delete) a single card.

Endpoint

DELETE /api/v3/cards/{uuid}

cURL Request

cURL
curl -X DELETE "https://public-api.mx.clara.com/api/v3/cards/abc-123" \
--cert /path/to/client-cert.pem \
--key /path/to/client-key.pem \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Delete Multiple Cards

Cancel multiple cards in one request.

Endpoint

POST /api/v3/cards/delete

cURL Request

cURL
curl -X POST "https://public-api.mx.clara.com/api/v3/cards/delete" \
--cert /path/to/client-cert.pem \
--key /path/to/client-key.pem \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "uuids": ["abc-123", "def-456"]
}'

⚠️ Important Notes:
  • Threshold changes and locks are allowed only on active cards.
  • Locking a card prevents usage; unlocking restores access.
  • Deleted cards cannot be recovered.
  • Ensure your threshold doesn’t exceed your company’s credit limit.
💡 Tip: Use locking to disable lost/stolen cards and delete to permanently remove unused ones.

Endpoint Reference

GET /api/v3/cards

List all cards (v3)Parameters:
ParameterInTypeRequiredDescription
userUuidquerystring (uuid)Filter by user UUID
usernamequerystringFilter by username
statusquerystringFilter by card status
periodicityquerystringFilter by periodicity
typequerystringFilter by card type
userErpIdquerystringFilter by user ERP ID (only if userUuid not present)
claraStatusquerystring[DEPRECATED] Use ‘status’ instead
Response Schema (CardPageV3):
FieldTypeExample
contentarray of CardV3
totalElementsinteger
totalPagesinteger
sizeinteger
numberinteger

POST /api/v3/cards

Create card (v3)Request Body (CreateCardRequestV3):
FieldTypeExample
typestring (enum)VIRTUAL/PHYSICAL
aliasstringCard Name
userUuidstring (uuid)a0c82a20-ac09-4cfd-b429-d0623585911e
thresholdnumber (decimal)1000
businessTypestring (enum)BUSINESS/WORLD_ELITE
periodicitystring (enum)MONTHLY/DAILY

GET /api/v3/cards/{uuid}

Get card by UUID (v3)Parameters:
ParameterInTypeRequiredDescription
uuidpathstring (uuid)
Response Schema (CardV3):
FieldTypeExample
uuidstring (uuid)a0c82a20-ac09-4cfd-b429-d0623585911e
claraStatusstringACTIVE
statusstringACTIVE, LOCKED, MASTER_LOCKED, CANCELLED
lockCodestringUNLOCKED, TEMPORAL_LOCKED
aliasstringCard Name
thresholdnumber (decimal)1000
periodicitystringMONTHLY, DAILY
maskedPanstring514509******5946
typestringMASTER_VIRTUAL, MASTER_CORPORATE, MASTER_WORLD_ELITE
userobject{uuid, fullName, username, links}
cvvstring705 — only present on GET /{uuid}
expiryDatestring12/30 — only present on GET /{uuid}
numberOnCardstring5109790205009579 — only present on GET /{uuid}
linksarray of Link

DELETE /api/v3/cards/{uuid}

Delete card (v3)Parameters:
ParameterInTypeRequiredDescription
uuidpathstring (uuid)

PATCH /api/v3/cards/{uuid}/lock

Toggle card lock (v3)Parameters:
ParameterInTypeRequiredDescription
uuidpathstring (uuid)
Request Body (ToggleCardLockRequest):
FieldTypeRequiredExample
lockedbooleantrue to lock, false to unlock
lockCodeinteger16
Response (202 Accepted): {batchId, id, uuid, status: "UPDATED"}

PATCH /api/v3/cards/{uuid}/threshold

Update card threshold (v3)Parameters:
ParameterInTypeRequiredDescription
uuidpathstring (uuid)
Request Body (UpdateCardThresholdRequest):
FieldTypeExample
thresholdnumber (decimal)5000

POST /api/v3/cards/bulk-create

Bulk create cards (v3)Request Body (BulkCreateCardRequest):
FieldTypeExample
cardsarray of CreateCardRequestV3

POST /api/v3/cards/delete

Bulk delete cards (v3)Request Body (BulkDeleteCardsRequest):
FieldTypeExample
uuidsarray of string

PATCH /api/v3/cards/lock

Bulk toggle card lock (v3). Returns 202 Accepted — async, result delivered via webhook.Request Body:
FieldTypeRequiredDescription
cardsLockRequestsarrayEach item: {uuid, locked: boolean, lockCode: 16}
Example:
{
  "cardsLockRequests": [
    { "uuid": "dd9bf99c-648b-419d-8316-32201ef91289", "locked": true, "lockCode": 16 }
  ]
}
Response (202):
{
  "id": "9e9fe2c0-a194-4b81-9025-df45753b0f79",
  "message": "Your request has been received but still in progress, you will get the response via webhook",
  "cardsLockResponses": [
    { "batchId": "9e9fe2c0-...", "id": "0dae8e5c-...", "uuid": "dd9bf99c-...", "status": "SENT" }
  ]
}

PATCH /api/v3/cards/threshold

Bulk update card thresholds (v3). Returns 202 Accepted — async, result delivered via webhook.Request Body:
FieldTypeRequiredDescription
updateCardsThresholdRequestsarrayEach item: {uuid, threshold: number}
Example:
{
  "updateCardsThresholdRequests": [
    { "uuid": "dd9bf99c-648b-419d-8316-32201ef91289", "threshold": 1500.00 }
  ]
}
Response (202):
{
  "id": "85e01930-3d69-4aed-85b6-0080d6792c44",
  "message": "Your request has been received but still in progress, you will get the response via webhook",
  "updateCardsThresholdResponses": [
    { "batchId": "85e01930-...", "id": "88d35238-...", "uuid": "dd9bf99c-...", "status": "SENT" }
  ]
}