Card Limits
Set and manage daily spending limits on payment cards.
Before You Start
Read the following guides before proceeding:
| Guide | Why |
|---|---|
| Getting Started | Platform overview and setup |
| Api Basics | Required headers and request configuration |
| Authentication | How to obtain access tokens |
| Onboarding | User and wallet registration |
| KYC | KYC verification requirements |
Overview
Card limits control the maximum amount that can be spent using a card within a day. You can:
- Set a daily spending limit
- Disable the limit entirely
- View current limit and usage
Get Current Limits
Card limits are returned as part of the card response when retrieving card details.
GET /api/v1/cards/{cardId}
The response includes a limit object:
{
"id": "64120850-73a1-4df5-a074-d463258c9deb",
"status": "Active",
"limit": {
"daily_limit": 1000.00,
"daily_usage": 250.00,
"monthly_limit": -1,
"monthly_usage": 500.00,
"lifetime_limit": -1,
"lifetime_usage": 1500.00,
"currency": "EUR"
}
}| Field | Description |
|---|---|
daily_limit | Maximum daily spend. -1 means no limit. |
daily_usage | Amount already spent today |
monthly_limit | Maximum monthly spend. -1 means no limit. |
monthly_usage | Amount already spent this month |
lifetime_limit | Maximum lifetime spend. -1 means no limit. |
lifetime_usage | Total amount spent on this card |
currency | Limit currency (EUR) |
Set Daily Limit
Update the daily spending limit for a card.
PUT /api/v1/cards/{cardId}/limit
Request
{
"limit": 1000.00
}| Field | Type | Required | Description |
|---|---|---|---|
limit | number | Yes | New daily limit. Set to -1 to disable the limit. |
Code Examples
await fetch(`${baseUrl}/api/v1/cards/${cardId}/limit`, {
method: 'PUT',
headers: {
'Authorization': `Bearer ${accessToken}`,
'X-User-Address': userEoaAddress,
'X-Chain-Id': chainId,
'Content-Type': 'application/json'
},
body: JSON.stringify({
limit: 1000.00
})
});requests.put(
f"{base_url}/api/v1/cards/{card_id}/limit",
headers={
"Authorization": f"Bearer {access_token}",
"X-User-Address": user_eoa_address,
"X-Chain-Id": chain_id,
"Content-Type": "application/json"
},
json={"limit": 1000.00}
)body, _ := json.Marshal(map[string]float64{"limit": 1000.00})
req, _ := http.NewRequest("PUT", baseURL+"/api/v1/cards/"+cardID+"/limit", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer "+accessToken)
req.Header.Set("X-User-Address", userEoaAddress)
req.Header.Set("X-Chain-Id", chainId)
req.Header.Set("Content-Type", "application/json")
http.DefaultClient.Do(req)Response
Empty response on success (200 OK).
Disable Limit
To remove the daily spending limit entirely, set limit to -1:
{
"limit": -1
}This allows unlimited daily spending on the card.
Limit Webhooks
When card limits are updated, Wirex sends a webhook notification.
Endpoint: POST {your_webhook_base_url}/v2/webhooks/card-limits
{
"card_id": "64120850-73a1-4df5-a074-d463258c9deb",
"transaction_limit": -1,
"daily_limit": 1000.00,
"daily_usage": 250.00,
"monthly_limit": -1,
"monthly_usage": 500.00,
"lifetime_limit": -1,
"lifetime_usage": 1500.00
}| Field | Description |
|---|---|
card_id | Card UUID |
transaction_limit | Per-transaction limit (-1 = no limit) |
daily_limit | Daily spending limit (-1 = no limit) |
daily_usage | Amount spent today |
monthly_limit | Monthly spending limit (-1 = no limit) |
monthly_usage | Amount spent this month |
lifetime_limit | Lifetime spending limit (-1 = no limit) |
lifetime_usage | Total amount spent |
Error Handling
Validation Errors
| Error Reason | Error Details | Description |
|---|---|---|
ErrorMissingField | card_id: missing | Card ID not provided |
ErrorInvalidField | card_id: invalid_uuid | Card ID is not a valid UUID |
ErrorMissingField | limit: missing | Limit value not provided |
Card Status Errors
| Error Reason | Error Details | Description |
|---|---|---|
ErrorInvalidStatus | card_status: not_active | Card must be active to change limits |
ErrorNotFound | Card not found | Card does not exist or user doesn't own it |
Error Response Format
{
"error_reason": "ErrorInvalidStatus",
"error_description": "Card is not active",
"error_category": {
"category": "CategoryValidationFailure",
"http_status_code": 400
},
"error_details": [
{ "key": "field", "details": "card_status" },
{ "key": "issue", "details": "not_active" }
]
}Updated 24 days ago
