Get an invoice
curl --request GET \
--url https://api.orbit.devotel.io/api/v1/billing/invoices/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.orbit.devotel.io/api/v1/billing/invoices/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.orbit.devotel.io/api/v1/billing/invoices/{id}', 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.orbit.devotel.io/api/v1/billing/invoices/{id}",
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.orbit.devotel.io/api/v1/billing/invoices/{id}"
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.orbit.devotel.io/api/v1/billing/invoices/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/billing/invoices/{id}")
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{
"data": {
"invoice": {
"id": "inv_01H8XGJ",
"invoice_number": "INV-0007",
"status": "paid",
"currency": "USD",
"amount_due": "0.00",
"total": "125.00",
"subtotal": "125.00",
"line_items": [
{
"id": "li_01H8XGJ",
"name": "SMS usage",
"quantity": "1000",
"amount": "125.00",
"subtotal": "125.00"
}
],
"cost_breakdown": null
}
},
"meta": {
"request_id": "req_01H8XGJ",
"timestamp": "2026-08-02T12:00:00.000Z"
}
}Billing
Get an invoice
Returns a single invoice by id with its full line items, customer reference, discounts and taxes, and a channel × country usage cost breakdown for the billing period so spend can be allocated without an export. Returns 404 when the invoice does not belong to the caller’s organization. Requires an owner or admin role.
GET
/
api
/
v1
/
billing
/
invoices
/
{id}
Get an invoice
curl --request GET \
--url https://api.orbit.devotel.io/api/v1/billing/invoices/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.orbit.devotel.io/api/v1/billing/invoices/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.orbit.devotel.io/api/v1/billing/invoices/{id}', 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.orbit.devotel.io/api/v1/billing/invoices/{id}",
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.orbit.devotel.io/api/v1/billing/invoices/{id}"
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.orbit.devotel.io/api/v1/billing/invoices/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/billing/invoices/{id}")
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{
"data": {
"invoice": {
"id": "inv_01H8XGJ",
"invoice_number": "INV-0007",
"status": "paid",
"currency": "USD",
"amount_due": "0.00",
"total": "125.00",
"subtotal": "125.00",
"line_items": [
{
"id": "li_01H8XGJ",
"name": "SMS usage",
"quantity": "1000",
"amount": "125.00",
"subtotal": "125.00"
}
],
"cost_breakdown": null
}
},
"meta": {
"request_id": "req_01H8XGJ",
"timestamp": "2026-08-02T12:00:00.000Z"
}
}⌘I