Customers represent the person or company contracted to receive products or services
Elevate Customer and Sites API (1.43)
- Customer - the primary entity within Elevate to represent the person or company who is contracted with a Contract Owner for the provision of products or services
- Site - within each Customer, there are one or more Sites to represent the physical locations of the Customer
Products and services are associated to the Sites as inventory items. Sites can be setup to receive invoices individually or to consolidate invoices to a particular site or sites
Results to return per page
Comma-delimited list of the fields to sort by - defaults to ascending order, suffix :desc to change
Comma-delimited list of the field(s) to return if only a subset is required
Filter by customer name
Filter by customer type
Filter by customer account number
Filter by start date
Filter by end date
Filter by created date/time
- https://rest.elevatebilling.com/v1/customers
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://rest.elevatebilling.com/v1/customers?page=1&pageSize=100&sort=id%2Cname+%7C+name%3Adesc&fields=id%2Cname&contractOwnerId=0&customerName=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&customerType=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&customerAccountNumber=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&billingCycleId=0&startDate=yyyy-MM-dd+%2C+lt%3Ayyyy-MM-dd+%2C+gt%3Ayyyy-MM-dd+%2C+gtn%3Ayyyy-MM-dd&endDate=yyyy-MM-dd+%2C+lt%3Ayyyy-MM-dd+%2C+gt%3Ayyyy-MM-dd+%2C+gtn%3Ayyyy-MM-dd&createdDate=yyyy-MM-ddTHH%3Amm%3AssZ+%2C+lt%3Ayyyy-MM-ddTHH%3Amm%3AssZ+%2C+gt%3Ayyyy-MM-ddTHH%3Amm%3AssZ&updatedDate=yyyy-MM-ddTHH%3Amm%3AssZ+%2C+lt%3Ayyyy-MM-ddTHH%3Amm%3AssZ+%2C+gt%3Ayyyy-MM-ddTHH%3Amm%3AssZ' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'OK
Contract owner sub brand identifier, if not specified then the default will be used
Customer type
Customer Name
Customer account number
Start date of contract term if applicable - required with contract term
Customer is marked as VIP (deprecated - please use customerMarker instead)
Email address
Customer identifier - set to 0 when creating a new customer
Site name
Site reference
Business name
Address line 1
Address line 2
Address line 3
Town
County
Postcode
Invoice details if this site should receive invoices
Identifier of another site that receives the invoices if no invoice details provided for this site
Contact name
Contact telephone number
Contact alternative telephone number
Email address
Contact Role
Receive invoice by email, post or both? Required when contactNameToAppearOnInvoice is set to true
Receive invoice summary by email, post or both?
Will receive electronic summary reports
Whether the contact is unable to receive emails
Only 1 contact per site can be set to true. If unspecified, this will be defaulted to the 1st contact. If specified for a different contact, it will be set to false for the previous one
Will receive a fraud alert by email
Repayment plan period amount in major currency (e.g pounds/dollars/euros)
repayment plan remaining periods (typically in months)
[ { "id": 1, "contractOwnerId": 0, "contractOwnerSubBrandId": 0, "customerType": "RESIDENTIAL", "customerName": "string", "customerAccountNumber": "string", "startDate": "2019-08-24", "endDate": "2019-08-24", "createdDate": "2019-08-24T14:15:22Z", "updatedDate": "2019-08-24T14:15:22Z", "contractTerm": 0, "contractTermStartDate": "2019-08-24", "customerIsVip": false, "customerMarker": false, "externalCommissionAgentId": 1, "onlineBillingRequired": false, "onlineEmailAddress": "string", "sendWelcomeEmailOn": "2019-08-24", "billingCycleId": 1, "sites": [ … ], "creditThreshold": 100, "tripwireId": 0, "customerContacts": [ … ], "assignedCustomFields": [ … ] } ]
New customer and default site
Contract owner sub brand identifier, if not specified then the default will be used
Customer type
Customer Name
Customer account number
Start date of contract term if applicable - required with contract term
Customer is marked as VIP (deprecated - please use customerMarker instead)
Email address
Customer identifier - set to 0 when creating a new customer
Site name
Site reference
Business name
Address line 1
Address line 2
Address line 3
Town
County
Postcode
Invoice details if this site should receive invoices
Identifier of another site that receives the invoices if no invoice details provided for this site
Contact name
Contact telephone number
Contact alternative telephone number
Email address
Contact Role
Receive invoice by email, post or both? Required when contactNameToAppearOnInvoice is set to true
Receive invoice summary by email, post or both?
Will receive electronic summary reports
Whether the contact is unable to receive emails
Only 1 contact per site can be set to true. If unspecified, this will be defaulted to the 1st contact. If specified for a different contact, it will be set to false for the previous one
Will receive a fraud alert by email
Repayment plan period amount in major currency (e.g pounds/dollars/euros)
repayment plan remaining periods (typically in months)
- https://rest.elevatebilling.com/v1/customers
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://rest.elevatebilling.com/v1/customers \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"contractOwnerId": 0,
"contractOwnerSubBrandId": 0,
"customerType": "RESIDENTIAL",
"customerName": "string",
"customerAccountNumber": "string",
"startDate": "2019-08-24",
"endDate": "2019-08-24",
"contractTerm": 0,
"contractTermStartDate": "2019-08-24",
"customerIsVip": false,
"customerMarker": false,
"externalCommissionAgentId": 1,
"onlineBillingRequired": false,
"onlineEmailAddress": "string",
"sendWelcomeEmailOn": "2019-08-24",
"billingCycleId": 1,
"sites": [
{
"customerId": 0,
"siteName": "string",
"siteReference": "string",
"startDate": "2019-08-24",
"endDate": "2019-08-24",
"siteAddress": {
"businessName": "string",
"address1": "string",
"address2": "string",
"address3": "string",
"town": "string",
"county": "string",
"postcode": "string",
"country": "GB"
},
"siteInvoiceDetails": {
"invoiceSummaryTemplateId": 0,
"invoiceTemplateId": 0,
"electronicSummaryTemplateIds": [
123
],
"invoiceSummaryTemplateComponents": [
{}
],
"invoiceAddress": {
"businessName": "string",
"address1": "string",
"address2": "string",
"address3": "string",
"town": "string",
"county": "string",
"postcode": "string",
"country": "GB"
},
"accountPackageReference": "string",
"paymentTermsInDays": 400,
"preferredPaymentDay": 1,
"paymentMethod": "CHEQUE",
"mandateReference": "string",
"thirdPartyCustomerReference": "string",
"directDebitReference": "string",
"accountName": "string",
"accountNumber": "stringst",
"sortCode": "string",
"purchaseOrderNumber": "string",
"invoiceNotes": "string",
"taxExempt": false,
"taxRegistrationNumber": "string"
},
"siteIdReceivingInvoice": 1,
"siteContacts": [
{
"contactName": "string",
"contactTelephoneNumber": "string",
"contactAlternativeTelephoneNumber": "string",
"contactEmailAddress": "string",
"contactRole": "ACCOUNTS",
"receiveInvoiceBy": "EMAIL",
"receiveInvoiceSummaryBy": "EMAIL",
"receiveElectronicSummaryReports": true,
"emailSuspended": false,
"contactNameToAppearOnInvoice": false,
"receiveEmailFraudAlert": false,
"receiveSmsFraudAlert": false
}
],
"repaymentPlanAmount": 1,
"repaymentPlanRemainingPeriods": 0,
"assignedCustomFields": [
{
"customFieldDefinitionId": 102,
"label": "Customer Tier",
"value": "Gold"
}
]
}
],
"creditThreshold": 100,
"tripwireId": 0,
"customerContacts": [
{
"contactName": "string",
"contactTelephoneNumber": "string",
"contactAlternativeTelephoneNumber": "string",
"contactEmailAddress": "string",
"contactRole": "ACCOUNTS",
"receiveInvoiceBy": "EMAIL",
"receiveInvoiceSummaryBy": "EMAIL",
"receiveElectronicSummaryReports": true,
"emailSuspended": false,
"contactNameToAppearOnInvoice": false,
"receiveEmailFraudAlert": false,
"receiveSmsFraudAlert": false
}
],
"assignedCustomFields": [
{
"customFieldDefinitionId": 102,
"label": "Customer Tier",
"value": "Gold"
}
]
}'OK
Contract owner sub brand identifier, if not specified then the default will be used
Customer type
Customer Name
Customer account number
Start date of contract term if applicable - required with contract term
Customer is marked as VIP (deprecated - please use customerMarker instead)
Email address
Customer identifier - set to 0 when creating a new customer
Site name
Site reference
Business name
Address line 1
Address line 2
Address line 3
Town
County
Postcode
Invoice details if this site should receive invoices
Identifier of another site that receives the invoices if no invoice details provided for this site
Contact name
Contact telephone number
Contact alternative telephone number
Email address
Contact Role
Receive invoice by email, post or both? Required when contactNameToAppearOnInvoice is set to true
Receive invoice summary by email, post or both?
Will receive electronic summary reports
Whether the contact is unable to receive emails
Only 1 contact per site can be set to true. If unspecified, this will be defaulted to the 1st contact. If specified for a different contact, it will be set to false for the previous one
Will receive a fraud alert by email
Repayment plan period amount in major currency (e.g pounds/dollars/euros)
repayment plan remaining periods (typically in months)
{ "id": 1, "contractOwnerId": 0, "contractOwnerSubBrandId": 0, "customerType": "RESIDENTIAL", "customerName": "string", "customerAccountNumber": "string", "startDate": "2019-08-24", "endDate": "2019-08-24", "createdDate": "2019-08-24T14:15:22Z", "updatedDate": "2019-08-24T14:15:22Z", "contractTerm": 0, "contractTermStartDate": "2019-08-24", "customerIsVip": false, "customerMarker": false, "externalCommissionAgentId": 1, "onlineBillingRequired": false, "onlineEmailAddress": "string", "sendWelcomeEmailOn": "2019-08-24", "billingCycleId": 1, "sites": [ { … } ], "creditThreshold": 100, "tripwireId": 0, "customerContacts": [ { … } ], "assignedCustomFields": [ { … } ] }
Filter by customer name
Filter by customer type
Filter by customer account number
Filter by start date
- https://rest.elevatebilling.com/v1/customers
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X HEAD \
'https://rest.elevatebilling.com/v1/customers?contractOwnerId=0&customerName=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&customerType=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&customerAccountNumber=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&billingCycleId=0&startDate=yyyy-MM-dd+%2C+lt%3Ayyyy-MM-dd+%2C+gt%3Ayyyy-MM-dd+%2C+gtn%3Ayyyy-MM-dd&endDate=yyyy-MM-dd+%2C+lt%3Ayyyy-MM-dd+%2C+gt%3Ayyyy-MM-dd+%2C+gtn%3Ayyyy-MM-dd' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'- https://rest.elevatebilling.com/v1/customers/{customer_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://rest.elevatebilling.com/v1/customers/1 \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Customer found
Contract owner sub brand identifier, if not specified then the default will be used
Customer type
Customer Name
Customer account number
Start date of contract term if applicable - required with contract term
Customer is marked as VIP (deprecated - please use customerMarker instead)
Email address
Customer identifier - set to 0 when creating a new customer
Site name
Site reference
Business name
Address line 1
Address line 2
Address line 3
Town
County
Postcode
Invoice details if this site should receive invoices
Identifier of another site that receives the invoices if no invoice details provided for this site
Contact name
Contact telephone number
Contact alternative telephone number
Email address
Contact Role
Receive invoice by email, post or both? Required when contactNameToAppearOnInvoice is set to true
Receive invoice summary by email, post or both?
Will receive electronic summary reports
Whether the contact is unable to receive emails
Only 1 contact per site can be set to true. If unspecified, this will be defaulted to the 1st contact. If specified for a different contact, it will be set to false for the previous one
Will receive a fraud alert by email
Repayment plan period amount in major currency (e.g pounds/dollars/euros)
repayment plan remaining periods (typically in months)
{ "id": 1, "contractOwnerId": 0, "contractOwnerSubBrandId": 0, "customerType": "RESIDENTIAL", "customerName": "string", "customerAccountNumber": "string", "startDate": "2019-08-24", "endDate": "2019-08-24", "createdDate": "2019-08-24T14:15:22Z", "updatedDate": "2019-08-24T14:15:22Z", "contractTerm": 0, "contractTermStartDate": "2019-08-24", "customerIsVip": false, "customerMarker": false, "externalCommissionAgentId": 1, "onlineBillingRequired": false, "onlineEmailAddress": "string", "sendWelcomeEmailOn": "2019-08-24", "billingCycleId": 1, "sites": [ { … } ], "creditThreshold": 100, "tripwireId": 0, "customerContacts": [ { … } ], "assignedCustomFields": [ { … } ] }
A set of JSONPatch operations to be performed
The JSON Patch operation to be performed
- https://rest.elevatebilling.com/v1/customers/{customer_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PATCH \
https://rest.elevatebilling.com/v1/customers/1 \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json-patch+json' \
-H 'cascade_end_date: true | false' \
-d '[
{
"op": "replace",
"path": "/name",
"value": "Supreme Wire Telecoms Ltd"
}
]'Success
Contract owner sub brand identifier, if not specified then the default will be used
Customer type
Customer Name
Customer account number
Start date of contract term if applicable - required with contract term
Customer is marked as VIP (deprecated - please use customerMarker instead)
Email address
Customer identifier - set to 0 when creating a new customer
Site name
Site reference
Business name
Address line 1
Address line 2
Address line 3
Town
County
Postcode
Invoice details if this site should receive invoices
Identifier of another site that receives the invoices if no invoice details provided for this site
Contact name
Contact telephone number
Contact alternative telephone number
Email address
Contact Role
Receive invoice by email, post or both? Required when contactNameToAppearOnInvoice is set to true
Receive invoice summary by email, post or both?
Will receive electronic summary reports
Whether the contact is unable to receive emails
Only 1 contact per site can be set to true. If unspecified, this will be defaulted to the 1st contact. If specified for a different contact, it will be set to false for the previous one
Will receive a fraud alert by email
Repayment plan period amount in major currency (e.g pounds/dollars/euros)
repayment plan remaining periods (typically in months)
{ "id": 1, "contractOwnerId": 0, "contractOwnerSubBrandId": 0, "customerType": "RESIDENTIAL", "customerName": "string", "customerAccountNumber": "string", "startDate": "2019-08-24", "endDate": "2019-08-24", "createdDate": "2019-08-24T14:15:22Z", "updatedDate": "2019-08-24T14:15:22Z", "contractTerm": 0, "contractTermStartDate": "2019-08-24", "customerIsVip": false, "customerMarker": false, "externalCommissionAgentId": 1, "onlineBillingRequired": false, "onlineEmailAddress": "string", "sendWelcomeEmailOn": "2019-08-24", "billingCycleId": 1, "sites": [ { … } ], "creditThreshold": 100, "tripwireId": 0, "customerContacts": [ { … } ], "assignedCustomFields": [ { … } ] }
Results to return per page
Comma-delimited list of the fields to sort by - defaults to ascending order, suffix :desc to change
Comma-delimited list of the field(s) to return if only a subset is required
Filter by the difference (absolute value) between the previous and the open bill run value
Filter by the difference (as percentage) between the previous and the open bill run value
Filter by the difference (absolute value) between the previous and the open adhoc bill run value
Filter by the difference (as percentage) between the previous and the open adhoc bill run value
Filter by rating status
- https://rest.elevatebilling.com/v1/customer-billing-summaries
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://rest.elevatebilling.com/v1/customer-billing-summaries?page=1&pageSize=100&sort=id%2Cname+%7C+name%3Adesc&fields=id%2Cname&customerId=0&valueDifference=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&percentageDifference=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&adhocValueDifference=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&adhocPercentageDifference=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&ratingStatus=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&billingStatus=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'OK
Billing status of a customer
Rating status of customer bill runs. If INCOMPLETE, then the bill run values are subject to change based on re-rating
Net value for this customer in the open bill run in major currency (e.g pounds/dollars/euros)
Net value for this customer in the previous bill run in major currency (e.g pounds/dollars/euros)
The difference in monetary value between the previous and the open bill run net value
The difference between the previous and the open bill run value as a percentage
Net value for this customer from all adhoc bill runs associated with the open bill run in major currency (e.g pounds/dollars/euros)
Net value for this customer from adhoc bill runs associated with the previous bill run in major currency (e.g pounds/dollars/euros)
The difference in monetary value between the previous and the open adhoc bill run net values
The difference between the previous and the open adhoc bill run values as a percentage
[ { "customerId": 1, "billingStatus": "ACTIVE", "ratingStatus": "COMPLETE", "openBillRunValue": 100, "previousBillRunValue": 60, "valueDifference": 40, "percentageDifference": 80, "openAdhocBillRunsValue": 50, "previousAdhocBillRunsValue": 45, "adhocValueDifference": 5, "adhocPercentageDifference": 11.11 } ]
Results to return per page
Comma-delimited list of the fields to sort by - defaults to ascending order, suffix :desc to change
Comma-delimited list of the field(s) to return if only a subset is required
Filter by product reference
Filter based on events from this date
Filter based on events until this date
Filter by destination/origin
- https://rest.elevatebilling.com/v1/customer-usage-data
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://rest.elevatebilling.com/v1/customer-usage-data?page=1&pageSize=100&sort=id%2Cname+%7C+name%3Adesc&fields=id%2Cname&customerId=0&siteId=0&billRunId=0&productReference=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&serviceId=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&eventDateFrom=yyyy-MM-ddTHH%3Amm%3AssZ+%2C+lt%3Ayyyy-MM-ddTHH%3Amm%3AssZ+%2C+gt%3Ayyyy-MM-ddTHH%3Amm%3AssZ&eventDateTo=yyyy-MM-ddTHH%3Amm%3AssZ+%2C+lt%3Ayyyy-MM-ddTHH%3Amm%3AssZ+%2C+gt%3Ayyyy-MM-ddTHH%3Amm%3AssZ&destination=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&excludeZeroValueRecords=true+%2C+false' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'[ { "id": 1, "customerId": 0, "siteId": 0, "billRunId": 0, "eventDate": "2019-08-24T14:15:22Z", "productReference": 0, "serviceId": "string", "destination": "string", "chargeGroupId": 1, "callClass": "string", "oneOffQuantity": 0, "dataQuantity": 0, "durationQuantity": 0, "sellPrice": 0, "preDiscountedSellPrice": 0, "buyPrice": 0, "ratedBuyPrice": 0, "profit": 0, "profitPercentage": 0, "marginPercentage": 0, "timeBand": "OFFPEAK", "usageProductId": 1, "usageDirection": "OUTBOUND", "isdn": false, "additionalInfoGeneral": "string", "additionalInfoElectronic": "string", "supplierAccountId": 1, "fileName": "string", "loadedDate": "2019-08-24", "parserName": "string", "fileType": "string" } ]
- https://rest.elevatebilling.com/v1/customer-usage-charge-group-category-summaries
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X HEAD \
'https://rest.elevatebilling.com/v1/customer-usage-charge-group-category-summaries?customerId=0&billRunId=0&chargeGroupCategoryId=0&chargeGroupCategoryName=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&chargingUnitType=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Results to return per page
Comma-delimited list of the fields to sort by - defaults to ascending order, suffix :desc to change
Comma-delimited list of the field(s) to return if only a subset is required
Filter by bill run - by default we return the open bill run summary information if this is omitted
Filter by charge group category identifier
Filter by charge group category name
- https://rest.elevatebilling.com/v1/customer-usage-charge-group-category-summaries
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://rest.elevatebilling.com/v1/customer-usage-charge-group-category-summaries?page=1&pageSize=100&sort=id%2Cname+%7C+name%3Adesc&fields=id%2Cname&customerId=0&billRunId=0&chargeGroupCategoryId=0&chargeGroupCategoryName=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz&chargingUnitType=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'OK
Charging unit i.e. duration or data (MB) or one off
Charge group category name
The quantity of the usage records for this charge group category in the chargingUnitType
Price for the charge group category in major currency (e.g pounds/dollars/euros)
[ { "customerId": 1, "billRunId": 0, "chargingUnitType": "DURATION", "chargeGroupCategoryId": 1, "chargeGroupCategoryName": "string", "quantity": 80, "priceInMajorCurrency": 100 } ]
- https://rest.elevatebilling.com/v1/customer-usage-site-summaries
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X HEAD \
'https://rest.elevatebilling.com/v1/customer-usage-site-summaries?customerId=0&billRunId=0&siteId=0&siteName=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Results to return per page
Comma-delimited list of the fields to sort by - defaults to ascending order, suffix :desc to change
Comma-delimited list of the field(s) to return if only a subset is required
Filter by bill run - by default we return the open bill run summary information if this is omitted
- https://rest.elevatebilling.com/v1/customer-usage-site-summaries
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://rest.elevatebilling.com/v1/customer-usage-site-summaries?page=1&pageSize=100&sort=id%2Cname+%7C+name%3Adesc&fields=id%2Cname&customerId=0&billRunId=0&siteId=0&siteName=xyz+%7C+in%3Ax%2Cy+%7C+like%3Axyz' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'[ { "customerId": 1, "billRunId": 0, "siteId": 1, "siteName": "string", "quantity": 80, "priceInMajorCurrency": 100 } ]