curl --request GET \
--url https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"customerId": "<string>",
"programId": "<string>",
"asOf": "2023-11-07T05:31:56Z",
"cards": [
{
"cardId": "<string>",
"accountId": "<string>",
"status": "<string>",
"provider": "<string>",
"tier": "<string>",
"accountType": "<string>",
"appliedTier": "<string>",
"appliedAccountType": "<string>",
"card": {
"enabled": true,
"mode": "COMBINED",
"singleTransaction": {
"atm": 123,
"pos": 123
},
"buckets": [
{
"bucket": "TOTAL",
"daily": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"weekly": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"monthly": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"annual": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"usageError": "<string>"
}
]
},
"customer": {
"enabled": true,
"mode": "COMBINED",
"singleTransaction": {
"atm": 123,
"pos": 123
},
"buckets": [
{
"bucket": "TOTAL",
"daily": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"weekly": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"monthly": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"annual": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"usageError": "<string>"
}
]
},
"error": "<string>",
"errorDetail": "<string>",
"available": {
"atm": {
"amount": 123,
"maxTransaction": 123,
"transactions": 123,
"limitedBy": {
"scope": "card",
"window": "daily",
"measure": "amount"
}
},
"pos": {
"amount": 123,
"maxTransaction": 123,
"transactions": 123,
"limitedBy": {
"scope": "card",
"window": "daily",
"measure": "amount"
}
}
}
}
],
"truncated": true
}
}Get spend limits and usage
What the customer’s cards may spend, and what they already have.
Every window is reported in both measures: amount (value, in minor units) and count (number of transactions). Each carries the limit, what has been used, and what is remaining.
Read mode before rendering. Under COMBINED there is one TOTAL bucket — ATM and POS share a budget. Under PER_CHANNEL there are two, ATM and POS, each with its own budget. Rendering the wrong one shows the cardholder a budget they do not have.
Two gates decide a transaction and both are returned per card: card (this card alone) and customer (every card the holder has). A card can be inside its own limits and still be declined by the customer-wide one.
limit: null means no limit is configured, not a limit of zero. The annual window carries enforced: false — it is reported but no authorization is declined by it.
Returns every card on the customer’s accounts, newest first, capped at 25 (truncated: true when there are more). Pass cardId to ask about one card.
available answers “what can this card spend now?” directly. Use it rather than combining card and customer yourself: the customer-wide limit is shared, so another card’s spending can leave this one with nothing even when its own limits show headroom. limitedBy says which limit is binding.
curl --request GET \
--url https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/customers/{customerId}/cards/spend-limits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"customerId": "<string>",
"programId": "<string>",
"asOf": "2023-11-07T05:31:56Z",
"cards": [
{
"cardId": "<string>",
"accountId": "<string>",
"status": "<string>",
"provider": "<string>",
"tier": "<string>",
"accountType": "<string>",
"appliedTier": "<string>",
"appliedAccountType": "<string>",
"card": {
"enabled": true,
"mode": "COMBINED",
"singleTransaction": {
"atm": 123,
"pos": 123
},
"buckets": [
{
"bucket": "TOTAL",
"daily": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"weekly": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"monthly": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"annual": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"usageError": "<string>"
}
]
},
"customer": {
"enabled": true,
"mode": "COMBINED",
"singleTransaction": {
"atm": 123,
"pos": 123
},
"buckets": [
{
"bucket": "TOTAL",
"daily": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"weekly": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"monthly": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"annual": {
"amount": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
},
"count": {
"limit": 123,
"used": 123,
"remaining": 123,
"enforced": true
}
},
"usageError": "<string>"
}
]
},
"error": "<string>",
"errorDetail": "<string>",
"available": {
"atm": {
"amount": 123,
"maxTransaction": 123,
"transactions": 123,
"limitedBy": {
"scope": "card",
"window": "daily",
"measure": "amount"
}
},
"pos": {
"amount": 123,
"maxTransaction": 123,
"transactions": 123,
"limitedBy": {
"scope": "card",
"window": "daily",
"measure": "amount"
}
}
}
}
],
"truncated": true
}
}Authorizations
The user's access_token from authentication. The program and environment come from the token.
Path Parameters
Query Parameters
Narrow the response to a single card.