PSOhub API: Invoices
Learn how to retrieve invoices and update their status or external ID via the PSOhub API
Published: 1 June 2026
Audience
-
Admin
Objective
This reference article covers the PSOhub API endpoints for retrieving invoices and updating their status or external ID. Creating invoices via the API is not supported due to the complexity of invoice generation — invoices must be created within PSOhub directly.
Prerequisites
Eligible access
You must have Admin user access in PSOhub.
API enabled
You must have API access enabled for your PSOhub account.
Invoice status
To mark an invoice as paid, it must have a status of Approved or Sent.
Get All Invoices
Use this endpoint to retrieve invoices from your PSOhub organization:
Endpoint
GET https://www.psohubapp.com/rest/psohubapi/v1/invoices
Filter by status
GET https://www.psohubapp.com/rest/psohubapi/v1/invoices?invoicestatus=draft
Accepted invoicestatus values: draft, approved, sent, paid.
Filter by invoice number
GET https://www.psohubapp.com/rest/psohubapi/v1/invoices?invoicenumber=inv-2024-48
Filter invoices without an external ID
GET https://www.psohubapp.com/rest/psohubapi/v1/invoices?noexternalid=true
Example response
json
[ { "InvoiceName": "Google - IAM Implementation services", "InvoiceDate": "2024-10-28T00:00:00.000Z", "InvoiceDueDate": "2024-11-28T00:00:00.000Z", "InvoiceNote": "If you have any questions about this invoice, feel free to contact us.", "InvoiceStatus": "Draft", "InvoiceNumber": "INV-2024-33", "InvoiceID": 41939771881672249, "CustomerID": 14073748838924968, "CustomerName": "Google", "InvoiceContactID": 21110623256832211, "InvoiceContactName": "Chris Rea", "InvoiceContactEmail": "chris.rea@google.com", "InvoiceCurrencyCode": "USD", "TotalAmountExVAT": 27700, "TotalAmountIncVAT": 33517, "TotalAmountExVATBaseCurrency": 27700, "TotalAmountIncVATBase": 33517, "InvoicePDF": "Base64String", "InvoiceLines": [ { "LineNumber": "10.002", "LineName": "Business Review", "LineDescription": " ", "GLAccount": "260", "TaxPercentage": 21, "TaxName": "BTW 21%", "TaxCode": "2", "TotalAmountExVAT": 2700, "TotalAmountIncVAT": 3267, "TotalAmountIncVATBaseCurrency": 3267, "TotalAmountExVATBaseCurrency": 2700, "InvoiceDetailLines": [ { "AccountID": 39406496739494241, "AccountName": "Martijn vd Hoeden", "BusinessUnit": "Creative", "Date": "2024-10-24T08:00:00.000Z", "Description": "-", "AmountOfHours": 2, "Rate": 225, "RateBase": 0, "TotalAmount": 450, "TotalAmountBase": 450 } ] } ] } ]
Invoice Response Fields
Invoice object
| Name | Type | Description |
|---|---|---|
| InvoiceName | String | The name of the invoice. |
| InvoiceDate | DateTime | The invoice date. |
| InvoiceDueDate | DateTime | The payment due date. |
| InvoiceNote | String | Note text displayed on the invoice. |
| InvoiceStatus | String | Current status: Draft, Approved, Sent, Paid, or Void. |
| InvoiceNumber | String | The unique invoice number in PSOhub. |
| InvoiceID | Integer/Long | The unique ID of the invoice. |
| CustomerID | Integer/Long | The unique ID of the customer or company. |
| CustomerName | String | The name of the customer or company. |
| InvoiceContactID | Integer/Long | The unique ID of the invoice contact. |
| InvoiceContactName | String | The name of the invoice contact. |
| InvoiceContactEmail | String | The email address of the invoice contact. |
| InvoiceCurrencyCode | String | ISO currency code for the invoice. |
| TotalAmountExVAT | Decimal | Total invoice amount excluding VAT. |
| TotalAmountIncVAT | Decimal | Total invoice amount including VAT. |
| TotalAmountExVATBaseCurrency | Decimal | Total invoice amount excluding VAT in the base currency. |
| TotalAmountIncVATBase | Decimal | Total invoice amount including VAT in the base currency. |
| InvoicePDF | String | A Base64-encoded string of the invoice PDF. Only available for invoices that are not in Draft status. |
InvoiceLines object
Each invoice contains one or more invoice lines.
| Name | Type | Description |
|---|---|---|
| LineNumber | String | The group and line number combined, based on the contract line. |
| LineName | String | The name of the invoice line. |
| Description | String | Description of the invoice line. |
| TaxPercentage | Decimal | The tax rate applied to this line, if applicable. |
| TaxName | String | The name of the tax category as configured in PSOhub. |
| TaxCode | String | The external identifier for this tax code from your application. |
| GLAccount | String | The linked GL account name, if applicable. |
| TotalAmountExVAT | Decimal | Invoice line total excluding VAT. |
| TotalAmountIncVAT | Decimal | Invoice line total including VAT. |
| TotalAmountIncVATBaseCurrency | Decimal | Invoice line total including VAT in the base currency. |
| TotalAmountExVATBaseCurrency | Decimal | Invoice line total excluding VAT in the base currency. |
InvoiceDetailLines object
For T&M and Expense invoices generated at the detailed level, each invoice line contains a third layer of detail lines showing individual time entries or expenses.
| Name | Type | Description |
|---|---|---|
| AccountID | Integer/Long | The unique ID of the user who booked the hours or expenses. |
| AccountName | String | The name of the user who booked the hours or expenses. |
| BusinessUnit | String | The business unit of the user. |
| Date | DateTime | The date of the booking. |
| Description | String | Description of the booking. |
| AmountOfHours | Decimal | Total hours booked. Applies to T&M lines only. |
| Rate | Decimal | The billing rate based on the project team rate for this user. |
| RateBase | Decimal | The billing rate in the base currency. |
| TotalAmount | Decimal | Total amount (hours × rate, or expense total). |
| TotalAmountBase | Decimal | Total amount in the base currency. |
How to Update Invoice Status to Paid
Use this endpoint to mark an invoice as paid:
Endpoint
PATCH https://www.psohubapp.com/rest/psohubapi/v1/invoices/paid?invoiceid=41939771862548888
⚠️ Important: Only invoices with a status of Approved or Sent can be updated to Paid via the API.
Update Invoice with an External ID
Use this endpoint to store an external system's invoice ID within the PSOhub invoice record. This is useful when posting invoices to an external financial integration:
Endpoint
PATCH https://www.psohubapp.com/rest/psohubapi/v1/invoices/external?invoiceid=41939771862548888&externalid=13