curl --request POST \
--url https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem \
--header 'Content-Type: application/json' \
--header 'X-Numero-Api-Key: <api-key>' \
--header 'X-Numero-Signature: <api-key>' \
--data '
{
"code": "PARTNER90"
}
'import requests
url = "https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem"
payload = { "code": "PARTNER90" }
headers = {
"X-Numero-Signature": "<api-key>",
"X-Numero-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Numero-Signature': '<api-key>',
'X-Numero-Api-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({code: 'PARTNER90'})
};
fetch('https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem', 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.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => 'PARTNER90'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Numero-Api-Key: <api-key>",
"X-Numero-Signature: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem"
payload := strings.NewReader("{\n \"code\": \"PARTNER90\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Numero-Signature", "<api-key>")
req.Header.Add("X-Numero-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem")
.header("X-Numero-Signature", "<api-key>")
.header("X-Numero-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"PARTNER90\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Numero-Signature"] = '<api-key>'
request["X-Numero-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"PARTNER90\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"data": {
"id": 123,
"code": "<string>",
"startsAt": "2023-11-07T05:31:56Z",
"endsAt": "2023-11-07T05:31:56Z",
"revoked": true
}
}Activate a partner code for the authenticated business
Requires me:write and a valid request signature. Redemption is idempotent per business/code/mode, does not extend expiry on retry and does not stack overlapping benefits. Activation never unlocks unavailable products or countries. Discounts apply automatically to eligible dashboard and API fees according to the offer channel.
curl --request POST \
--url https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem \
--header 'Content-Type: application/json' \
--header 'X-Numero-Api-Key: <api-key>' \
--header 'X-Numero-Signature: <api-key>' \
--data '
{
"code": "PARTNER90"
}
'import requests
url = "https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem"
payload = { "code": "PARTNER90" }
headers = {
"X-Numero-Signature": "<api-key>",
"X-Numero-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Numero-Signature': '<api-key>',
'X-Numero-Api-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({code: 'PARTNER90'})
};
fetch('https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem', 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.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => 'PARTNER90'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Numero-Api-Key: <api-key>",
"X-Numero-Signature: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem"
payload := strings.NewReader("{\n \"code\": \"PARTNER90\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Numero-Signature", "<api-key>")
req.Header.Add("X-Numero-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem")
.header("X-Numero-Signature", "<api-key>")
.header("X-Numero-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"PARTNER90\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usenumero.com/numeroaccount/api/v1/business/partner-benefits/redeem")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Numero-Signature"] = '<api-key>'
request["X-Numero-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"PARTNER90\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"data": {
"id": 123,
"code": "<string>",
"startsAt": "2023-11-07T05:31:56Z",
"endsAt": "2023-11-07T05:31:56Z",
"revoked": true
}
}Authorizations
Your business API key (live_key_...). Issued on approval; managed in Dashboard → Settings → Developer.
Base64(HMAC-SHA256(publicApiKey, input)) over the raw request body (POST) or canonicalized
query string (signed GET). Also send X-Numero-Signature-Version: v2. Required on
money-movement / state-changing endpoints (marked 🔒).
The HMAC key is your Public Key as raw UTF-8 bytes — a SECRET despite the name, and a
different value from the X-Numero-Api-Key authentication header. Signing with the API key
will never produce a valid signature.
Headers
Body
3 - 40"PARTNER90"