curl --request GET \
--url "https://v1-api.ticket-plus.app/billing/items?chargeType=ticket-charge&period=2024-05-01&page=1&perPage=10" \
--header "Authorization: Basic <base64(clientId:clientSecret)>"
import requests
import base64
credentials = base64.b64encode(b"<clientId>:<clientSecret>").decode()
res = requests.get(
"https://v1-api.ticket-plus.app/billing/items",
params={"chargeType": "ticket-charge", "period": "2024-05-01", "page": 1, "perPage": 10},
headers={"Authorization": f"Basic {credentials}"},
)
print(res.json())
const credentials = Buffer.from("<clientId>:<clientSecret>").toString("base64");
const res = await fetch(
"https://v1-api.ticket-plus.app/billing/items?chargeType=ticket-charge&period=2024-05-01&page=1&perPage=10",
{ headers: { Authorization: `Basic ${credentials}` } }
);
console.log(await res.json());
{
"data": {
"data": [
{
"id": 1024,
"billing": {
"period": "2024-05-01",
"total": { "label": "€29.00", "value": 2900 },
"tax": { "label": "€5.51", "value": 551 },
"overall": { "label": "€34.51", "value": 3451 }
},
"charge": {
"type": "ticket-charge",
"employee": {
"profile": {
"id": 42,
"firstName": "Anna",
"lastName": "Müller",
"email": "anna.mueller@example.com",
"hrId": "emp_HR_001"
},
"exists": true
},
"plan": {
"type": "split-pay-plan",
"companyAmount": { "label": "€20.00", "value": 2000 },
"employeeAmount": { "label": "€9.00", "value": 900 }
}
},
"billedAt": "2024-05-01T00:00:00Z",
"resource": "billing-item",
"_links": {
"self": { "href": "https://v1-api.ticket-plus.app/billing/items/1024", "type": "application/json" },
"employee": { "href": "https://v1-api.ticket-plus.app/employees/42", "type": "application/json" }
}
}
],
"page": 1,
"perPage": 10,
"totalPages": 4,
"total": 38
}
}
List Billing Items
Retrieve a paginated, filterable list of the charges that make up your company’s invoices.
curl --request GET \
--url "https://v1-api.ticket-plus.app/billing/items?chargeType=ticket-charge&period=2024-05-01&page=1&perPage=10" \
--header "Authorization: Basic <base64(clientId:clientSecret)>"
import requests
import base64
credentials = base64.b64encode(b"<clientId>:<clientSecret>").decode()
res = requests.get(
"https://v1-api.ticket-plus.app/billing/items",
params={"chargeType": "ticket-charge", "period": "2024-05-01", "page": 1, "perPage": 10},
headers={"Authorization": f"Basic {credentials}"},
)
print(res.json())
const credentials = Buffer.from("<clientId>:<clientSecret>").toString("base64");
const res = await fetch(
"https://v1-api.ticket-plus.app/billing/items?chargeType=ticket-charge&period=2024-05-01&page=1&perPage=10",
{ headers: { Authorization: `Basic ${credentials}` } }
);
console.log(await res.json());
{
"data": {
"data": [
{
"id": 1024,
"billing": {
"period": "2024-05-01",
"total": { "label": "€29.00", "value": 2900 },
"tax": { "label": "€5.51", "value": 551 },
"overall": { "label": "€34.51", "value": 3451 }
},
"charge": {
"type": "ticket-charge",
"employee": {
"profile": {
"id": 42,
"firstName": "Anna",
"lastName": "Müller",
"email": "anna.mueller@example.com",
"hrId": "emp_HR_001"
},
"exists": true
},
"plan": {
"type": "split-pay-plan",
"companyAmount": { "label": "€20.00", "value": 2000 },
"employeeAmount": { "label": "€9.00", "value": 900 }
}
},
"billedAt": "2024-05-01T00:00:00Z",
"resource": "billing-item",
"_links": {
"self": { "href": "https://v1-api.ticket-plus.app/billing/items/1024", "type": "application/json" },
"employee": { "href": "https://v1-api.ticket-plus.app/employees/42", "type": "application/json" }
}
}
],
"page": 1,
"perPage": 10,
"totalPages": 4,
"total": 38
}
}
chargeType=ticket-charge together with a period to reconstruct exactly which employees were billed a ticket in a given month — the basis for your payroll data.
view-billing permission. See Authorization.curl --request GET \
--url "https://v1-api.ticket-plus.app/billing/items?chargeType=ticket-charge&period=2024-05-01&page=1&perPage=10" \
--header "Authorization: Basic <base64(clientId:clientSecret)>"
import requests
import base64
credentials = base64.b64encode(b"<clientId>:<clientSecret>").decode()
res = requests.get(
"https://v1-api.ticket-plus.app/billing/items",
params={"chargeType": "ticket-charge", "period": "2024-05-01", "page": 1, "perPage": 10},
headers={"Authorization": f"Basic {credentials}"},
)
print(res.json())
const credentials = Buffer.from("<clientId>:<clientSecret>").toString("base64");
const res = await fetch(
"https://v1-api.ticket-plus.app/billing/items?chargeType=ticket-charge&period=2024-05-01&page=1&perPage=10",
{ headers: { Authorization: `Basic ${credentials}` } }
);
console.log(await res.json());
{
"data": {
"data": [
{
"id": 1024,
"billing": {
"period": "2024-05-01",
"total": { "label": "€29.00", "value": 2900 },
"tax": { "label": "€5.51", "value": 551 },
"overall": { "label": "€34.51", "value": 3451 }
},
"charge": {
"type": "ticket-charge",
"employee": {
"profile": {
"id": 42,
"firstName": "Anna",
"lastName": "Müller",
"email": "anna.mueller@example.com",
"hrId": "emp_HR_001"
},
"exists": true
},
"plan": {
"type": "split-pay-plan",
"companyAmount": { "label": "€20.00", "value": 2000 },
"employeeAmount": { "label": "€9.00", "value": 900 }
}
},
"billedAt": "2024-05-01T00:00:00Z",
"resource": "billing-item",
"_links": {
"self": { "href": "https://v1-api.ticket-plus.app/billing/items/1024", "type": "application/json" },
"employee": { "href": "https://v1-api.ticket-plus.app/employees/42", "type": "application/json" }
}
}
],
"page": 1,
"perPage": 10,
"totalPages": 4,
"total": 38
}
}
Query Parameters
1.100.asc, desc.id, billingPeriod, billedAt.service-charge, ticket-charge, hr-integration-charge, hr-payroll-integration-charge, api-charge. Use ticket-charge to list the per-employee transit ticket charges used for payroll.YYYY-MM-DD format — the first day of the billed month, e.g. 2024-05-01.Response
Show properties
Show properties
Show billing item object
Show billing item object
Show properties
Show properties
YYYY-MM-DD format — the first day of the billed month.Show properties
Show properties
service-charge, ticket-charge, hr-integration-charge, hr-payroll-integration-charge, api-charge. A ticket-charge is a per-employee transit ticket charge — these are what you use to build payroll. The other types are company-level platform fees not tied to a single employee.null for company-level charges not tied to an employee.Show properties
Show properties
null if the employee was removed after being billed.Show properties
Show properties
null if the employee no longer exists.true if the employee still exists in JobTicket; false if they have since been removed.null for charges not tied to a plan, such as company-level platform fees.Show properties
Show properties
fully-subsidized-plan (company pays the full amount), deferred-plan (cost is deferred), split-pay-plan (cost is split between company and employee)."billing-item".Show properties
Show properties
Authorizations
HTTP Basic Auth using your API key credentials. Use the username and password issued from the Developer Portal. Encode them as Base64(username:password) and pass in the Authorization: Basic <token> header.
Query Parameters
Page number to return. Starts at 1.
x >= 0Number of results per page. Maximum is 100.
0 <= x <= 100Sort direction. Allowed values: asc, desc.
asc, desc Field to sort results by. Allowed values: id, billingPeriod, billedAt.
id, billingPeriod, billedAt Filter to a single charge type. Use ticket-charge to list the per-employee transit ticket charges used for payroll. Allowed values: service-charge, ticket-charge, hr-integration-charge, hr-payroll-integration-charge, api-charge.
service-charge, ticket-charge, hr-integration-charge, hr-payroll-integration-charge, api-charge Filter to a single billing period. Format YYYY-MM-DD (the first day of the billed month, e.g. 2024-05-01).
Response
A paginated list of billing items.
Show child attributes
Show child attributes

