curl --request PUT \
--url https://api.global.direct.reap.global/2026-07-13/cards/{cardId}/restriction \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"time": {
"start": "<string>",
"end": "<string>"
}
}
'const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({time: {start: '<string>', end: '<string>'}})
};
fetch('https://api.global.direct.reap.global/2026-07-13/cards/{cardId}/restriction', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.global.direct.reap.global/2026-07-13/cards/{cardId}/restriction"
payload = { "time": {
"start": "<string>",
"end": "<string>"
} }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"id": "3db05d6f-97a9-4c06-a578-087b14b4f859",
"type": "virtual",
"status": "active",
"title": "Travel card",
"last4": "4242",
"expiresAt": "2028-08-31",
"isRevolving": false,
"planType": "topUp",
"category": "travel",
"cardholder": {
"userId": "user_01JZ2Q1J4Y8P7M6N5K3H2G1F0E",
"name": "Ada Lovelace",
"email": "ada@example.com"
},
"spendCap": {
"amount": "5000.00",
"currency": "USD"
},
"spentAmount": {
"amount": "0.00",
"currency": "USD"
},
"spendControl": {
"limits": {
"transaction": {
"amount": "1000.00",
"currency": "USD"
},
"monthly": {
"amount": "5000.00",
"currency": "USD"
}
},
"spent": {
"monthly": {
"amount": "0.00",
"currency": "USD"
}
},
"atm": {
"dailyWithdrawal": {
"amount": "500.00",
"currency": "USD"
},
"dailyFrequency": 3
}
},
"restriction": {
"time": {
"start": "09:00",
"end": "18:00"
}
},
"createdAt": "2026-07-13T08:00:00.000Z",
"updatedAt": "2026-07-13T08:00:00.000Z"
}Update card usage restriction
Required API-key scope: cards:write.
Sets the hours of the day when a card can be used, in UTC, for example 09:00 to 18:00 to allow card transactions during office hours only. This replaces any existing restriction. Send time: null (or leave it out) to allow the card to be used at any time. See Spend controls.
curl --request PUT \
--url https://api.global.direct.reap.global/2026-07-13/cards/{cardId}/restriction \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"time": {
"start": "<string>",
"end": "<string>"
}
}
'const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({time: {start: '<string>', end: '<string>'}})
};
fetch('https://api.global.direct.reap.global/2026-07-13/cards/{cardId}/restriction', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.global.direct.reap.global/2026-07-13/cards/{cardId}/restriction"
payload = { "time": {
"start": "<string>",
"end": "<string>"
} }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"id": "3db05d6f-97a9-4c06-a578-087b14b4f859",
"type": "virtual",
"status": "active",
"title": "Travel card",
"last4": "4242",
"expiresAt": "2028-08-31",
"isRevolving": false,
"planType": "topUp",
"category": "travel",
"cardholder": {
"userId": "user_01JZ2Q1J4Y8P7M6N5K3H2G1F0E",
"name": "Ada Lovelace",
"email": "ada@example.com"
},
"spendCap": {
"amount": "5000.00",
"currency": "USD"
},
"spentAmount": {
"amount": "0.00",
"currency": "USD"
},
"spendControl": {
"limits": {
"transaction": {
"amount": "1000.00",
"currency": "USD"
},
"monthly": {
"amount": "5000.00",
"currency": "USD"
}
},
"spent": {
"monthly": {
"amount": "0.00",
"currency": "USD"
}
},
"atm": {
"dailyWithdrawal": {
"amount": "500.00",
"currency": "USD"
},
"dailyFrequency": 3
}
},
"restriction": {
"time": {
"start": "09:00",
"end": "18:00"
}
},
"createdAt": "2026-07-13T08:00:00.000Z",
"updatedAt": "2026-07-13T08:00:00.000Z"
}Authorizations
Enter your API key
Path Parameters
The card's ID, as returned by List cards or Create card.
Body
The window of hours each day when the card can be used, in UTC. Send null to remove the restriction so the card works at any time.
Show child attributes
Show child attributes
Response
The card's unique ID. Use it with Retrieve a card, Freeze card and the other card endpoints.
Whether this is a virtual or a physical card.
virtual, physical Where the card is in its lifecycle: pending (a physical card not yet activated), active (ready to use), frozen (paused, can be unfrozen), inactive (not usable for another reason, such as a restricted or blocked card), expiring (a physical card within 90 days of its expiry date), expired or terminated (permanently closed).
pending, active, frozen, inactive, expiring, expired, terminated The card's nickname, set when the card was created or renamed with Edit card details.
The last four digits of the card number. To see the full card details, use Reveal card details.
The date the card expires (YYYY-MM-DD).
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$Whether the card draws from your business's shared revolving budget. It's always false for top-up cards.
How the card is funded: subscription (draws on shared credit within its limits), topUp (has its own fixed budget in spendCap) or physical (a physical card plan).
physical, subscription, topUp The display name of the card category chosen when the card was created, for example travel. It describes what the card is for and is different from each card transaction's category. To create a card with this category, pass its id from List card categories.
The team member the card belongs to.
Show child attributes
Show child attributes
The fixed budget set aside for the card; for top-up cards, this is how much the card can spend in total. Change it with Update spend control. Null if the card has no fixed budget.
Show child attributes
Show child attributes
How much has been spent on the card since it was created. For top-up cards, compare it with spendCap to see how much budget is left.
Show child attributes
Show child attributes
The card's spending limits, plus how much has been spent in each period so far.
Show child attributes
Show child attributes
Rules on when the card can be used. Change them with Update card usage restriction.
Show child attributes
Show child attributes
When the card was created, in UTC.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$When the card's details, limits or status last changed, in UTC.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$