Skip to content
English
  • There are no suggestions because the search field is empty.

PSOHub API: Expenses

Learn how to retrieve and create expense entries in PSOhub via the API

Published: 1 June 2026

Audience

  • Admin

Objective

This reference article covers the PSOhub API endpoints for retrieving and creating expense entries. Use these endpoints to query expenses for a project or user and to create new expense entries programmatically in PSOhub.

Prerequisites

Eligible access
        You must have Admin user access in PSOhub.

API enabled
        You must have API access enabled for your PSOhub account.

ProjectID, ContractLineID & AccountID
        To create an expense, the ProjectID, ContractLineID, and AccountID must be            known. These can be retrieved via the relevant API endpoints or from the PSOhub                    OData feed.

Get All Expenses

Use this endpoint to retrieve expense entries filtered by project and/or user:

Endpoint

 
 
GET https://www.psohubapp.com/rest/psohubapi/v1/expenses?projectid=693467340

Use the limit parameter to control the number of records returned. If not specified, the API returns 50 expenses by default.

⚠️ Important: Expenses are always connected to both a project and a user. You must                    filter on at least one of the two parameters (projectid or accountid) for the                      request to be valid.

Example response

 
 

json

[   {     "AccountID": 39406496739494241,     "ProjectID": 13229323905419233,     "ContractLineID": 7036874417785905,     "ProjectName": "Apple App Development",     "ContractLineName": "20.002 - Expenses",     "Description": "NYC hotel",     "AmountExVAT": 991.73553719,     "VATAmount": 208.26446281,     "TotalAmount": 1200   },   {     "AccountID": 39406496739494241,     "ProjectID": 13229323905421635,     "ContractLineID": 7036874417787659,     "ProjectName": "Development Website and Marketing Automation",     "ContractLineName": "90.001 - Travel Expenses",     "Description": "nyc - amsterdam",     "AmountExVAT": 743.80165289,     "VATAmount": 156.19834711,     "TotalAmount": 900   } ]

Response fields

Name Type Description
AccountID Integer/Long The unique ID of the user who submitted the expense.
ProjectID Integer/Long The ID of the project the expense is linked to.
ContractLineID Integer/Long The ID of the contract line the expense is posted to.
ProjectName String The name of the project, for easy reference.
ContractLineName String The name of the contract line, for easy reference.
Description String The description the user added for the expense.
AmountExVAT Decimal The expense amount excluding VAT.
VATAmount Decimal The VAT amount applied to the expense.
TotalAmount Decimal The total expense amount including VAT.

Create an Expense

Use this endpoint to create a new expense entry on a project:

Endpoint

 
 
POST https://www.psohubapp.com/rest/psohubapi/v1/expenses

Request fields

Name Required Type Description
AccountID Yes Integer/Long The unique ID of the user submitting the expense.
ProjectID Yes Integer/Long The ID of the project the expense belongs to.
ContractLineID Yes Integer/Long The ID of the contract line to post the expense to.
Description No String An optional description for the expense.
AmountExVAT Yes Decimal The expense amount excluding VAT.
VATAmount No Decimal The VAT amount applicable to the expense.
TotalAmount Yes Decimal The total expense amount including VAT.
ExpenseDate Yes DateTime The date the expense was incurred.

📌 Note: The request fields, endpoint URL, and required fields above are a best-effort                  draft based on the expense data model. The dev team must confirm the correct                       create endpoint and all field names before this section is published.

Example request body

 
 

json

{   "AccountID": 39406496739494241,   "ProjectID": 13229323905419233,   "ContractLineID": 7036874417785905,   "Description": "NYC hotel",   "AmountExVAT": 991.74,   "VATAmount": 208.26,   "TotalAmount": 1200,   "ExpenseDate": "2024-09-23T00:00:00.000Z" }

Response

On success, the API returns the unique ID of the created expense entry.

 
 

json

{   "ExpenseID": "expense-id-returned-here" }

Related Articles