Get customer-specific tariff details
Returns tariff pricing tied to a specific consumer’s metering point. Use this when public tariff data is insufficient to determine correct pricing — for example, where a supplier’s tariff varies in ways not resolvable from name and postcode alone.
Requirements:
- Caller must be a Registered TI User (RTI User).
- The consumer must have granted consent to this RTI User for the specific MPXN via the OAuth 2.0 Authorisation Code flow.
- The MPXN must be registered to the requested supplier.
Suppliers validate RTI User status against the register at least once per day. Requests from unregistered parties or without active consent are rejected.
curl --request GET \
--url https://example-supplier.co.uk/v1/tariff/customer \
--header 'Authorization: Bearer <token>'import requests
url = "https://example-supplier.co.uk/v1/tariff/customer"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://example-supplier.co.uk/v1/tariff/customer', 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://example-supplier.co.uk/v1/tariff/customer",
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://example-supplier.co.uk/v1/tariff/customer"
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://example-supplier.co.uk/v1/tariff/customer")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://example-supplier.co.uk/v1/tariff/customer")
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": [
{
"tariff_id": "trf_a1b2c3d4e5f67890abcdef1234567890",
"name": "Comfy Cucumber October 2026",
"tariff_type": "static",
"fuel_type": "electricity",
"last_modified": "2026-11-01T10:00:00.000Z",
"description": "A flexible electricity tariff with half-hourly prices tracking the wholesale market.",
"version": 1,
"energy_flow": "import",
"payment_method": "direct_debit",
"meter_type": "smart",
"customer_type": "residential",
"ldz_region": "SE",
"percentage_green": 27,
"standing_charge": "0.62500",
"vat_included": true,
"vat_rate": 5,
"comments": "Includes a £50 joining incentive applied as a bill credit in month 1.",
"valid_from": "2026-11-01T10:00:00.000Z",
"valid_to": "2026-11-01T10:00:00.000Z",
"sellable_from": "2026-11-01T10:00:00.000Z",
"sellable_to": "2026-11-01T10:00:00.000Z",
"rates": [
{
"days_and_hours": [
{
"days": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri"
],
"hours": [
{
"valid_from": "07:00:00",
"valid_to": "16:00:00",
"rate": [
{
"unit_price": "0.24301",
"to_kwh": 30
}
]
}
]
}
],
"months": [
"All"
],
"dates": [
1
]
}
]
}
]
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}Authorizations
OAuth 2.0 Authorisation Code flow for RTI User authentication and consumer consent.
Each supplier operates its own OAuth server. In production, substitute the
placeholder host with the relevant url from the Supplier Register.
OpenAPI does not permit URI templates in security scheme URLs, so a placeholder
is used here.
Response
Consumer-specific tariff pricing detail.
1Show child attributes
Show child attributes
curl --request GET \
--url https://example-supplier.co.uk/v1/tariff/customer \
--header 'Authorization: Bearer <token>'import requests
url = "https://example-supplier.co.uk/v1/tariff/customer"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://example-supplier.co.uk/v1/tariff/customer', 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://example-supplier.co.uk/v1/tariff/customer",
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://example-supplier.co.uk/v1/tariff/customer"
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://example-supplier.co.uk/v1/tariff/customer")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://example-supplier.co.uk/v1/tariff/customer")
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": [
{
"tariff_id": "trf_a1b2c3d4e5f67890abcdef1234567890",
"name": "Comfy Cucumber October 2026",
"tariff_type": "static",
"fuel_type": "electricity",
"last_modified": "2026-11-01T10:00:00.000Z",
"description": "A flexible electricity tariff with half-hourly prices tracking the wholesale market.",
"version": 1,
"energy_flow": "import",
"payment_method": "direct_debit",
"meter_type": "smart",
"customer_type": "residential",
"ldz_region": "SE",
"percentage_green": 27,
"standing_charge": "0.62500",
"vat_included": true,
"vat_rate": 5,
"comments": "Includes a £50 joining incentive applied as a bill credit in month 1.",
"valid_from": "2026-11-01T10:00:00.000Z",
"valid_to": "2026-11-01T10:00:00.000Z",
"sellable_from": "2026-11-01T10:00:00.000Z",
"sellable_to": "2026-11-01T10:00:00.000Z",
"rates": [
{
"days_and_hours": [
{
"days": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri"
],
"hours": [
{
"valid_from": "07:00:00",
"valid_to": "16:00:00",
"rate": [
{
"unit_price": "0.24301",
"to_kwh": 30
}
]
}
]
}
],
"months": [
"All"
],
"dates": [
1
]
}
]
}
]
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}{
"code": "tariff_not_found",
"message": "No tariff found for the given tariff_id and supplier MPID.",
"details": "tariff_id a1b2c3d4-e5f6-7890-abcd-ef1234567890 does not exist for supplier SEBD."
}
