Accounting Integration Endpoints
Vendor Integrations: Accounting
This section covers the HaloPSA API endpoints for managing accounting software integrations, including Xero, QuickBooks, Sage Business Cloud, MYOB, Kashflow, Fortnox, Exact, Business Central, and Avalara.
XeroDetails
GET /XeroDetails
Summary: List of XeroDetails
Description: Returns multiple XeroDetails records. Requires authentication.
Query Parameters:
| Name | Type | Description |
|---|---|---|
| connectedonly | boolean | Filter to only connected Xero tenants |
| tenantid | string | Filter by Xero tenant ID |
POST /XeroDetails
Summary: Create or update XeroDetails
Request Body: Array of XeroDetails objects (see schema below)
GET /XeroDetails/{id}
Summary: Get one XeroDetails
Description: Returns a single XeroDetails instance by ID. Requires authentication.
Path Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | XeroDetails record ID |
Query Parameters:
| Name | Type | Description |
|---|---|---|
| includedetails | boolean | Include additional details in the response |
DELETE /XeroDetails/{id}
Summary: Delete a XeroDetails record
Path Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | XeroDetails record ID |
XeroDetails Schema
| Property | Type | Description |
|---|---|---|
| id | integer | Record ID |
| name | string | Integration name |
| tenant_id | string | Xero tenant ID |
| tenant_name | string | Xero tenant display name |
| new_access_token | string | OAuth access token |
| new_refresh_token | string | OAuth refresh token |
| token_expiry | string (date-time) | Token expiration timestamp |
| authorized | boolean | Whether the connection is authorized |
| redirect_uri | string | OAuth redirect URI |
| code | string | OAuth authorization code |
| _exchangecode | boolean | Trigger to exchange auth code for tokens |
| _disconnect | boolean | Trigger to disconnect the integration |
| client_id | string | Xero client/app ID |
| new_client_secret | string | Xero client secret |
| client_top_level | integer | Top-level client mapping ID |
| client_top_level_name | string | Top-level client name |
| item_group | integer | Default item group ID |
| item_group_name | string | Default item group name |
| isdefault | boolean | Whether this is the default integration |
| enablesync | boolean | Whether sync is enabled |
| default_item_code | string | Default item code for invoice lines |
| sync_entities | string | Comma-separated list of entity types to sync |
| sync_entities_list | array | Sync entity list as key-value pairs |
| supplier_top_level | integer | Top-level supplier mapping ID |
| archive_contacts | boolean | Archive contacts in Xero on disconnect |
| rounding_adjustment_account_code | integer | Account code for rounding adjustments |
| group_rounding_adjustments | boolean | Group rounding adjustments into one line |
| receive_client_created | boolean | Sync newly created clients to Xero |
| receive_client_updated | boolean | Sync updated clients to Xero |
| receive_invoice_created | boolean | Sync newly created invoices to Xero |
| receive_invoice_updated | boolean | Sync updated invoices to Xero |
| sync_currency_for_invoices | boolean | Sync currency on invoices |
| sync_currency_for_purchaseorders | boolean | Sync currency on purchase orders |
| allow_create_xero_payments | boolean | Allow creating payments in Xero |
| allow_update_xero_payments | boolean | Allow updating payments in Xero |
| allow_reversal_xero_payments | boolean | Allow reversing payments in Xero |
| automatic_sales_tax | boolean | Use automatic sales tax |
| dont_import_draft_invoices | boolean | Skip importing draft invoices from Xero |
| do_daily_tax_import | boolean | Run daily tax import from Xero |
| app_type | integer | Application type identifier |
| _warning | string | Warning message from last sync |
QuickBooksDetails
GET /QuickBooksDetails
Summary: List of QuickBooksDetails
Description: Returns multiple QuickBooksDetails records. Requires authentication.
Query Parameters:
| Name | Type | Description |
|---|---|---|
| companyid | string | Filter by QuickBooks company ID |
| connectedonly | boolean | Filter to only connected companies |
POST /QuickBooksDetails
Summary: Create or update QuickBooksDetails
Request Body: Array of QuickBooksDetails objects (see schema below)
GET /QuickBooksDetails/{id}
Summary: Get one QuickBooksDetails
Description: Returns a single QuickBooksDetails instance by ID. Requires authentication.
Path Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | QuickBooksDetails record ID |
Query Parameters:
| Name | Type | Description |
|---|---|---|
| includedetails | boolean | Include additional details in the response |
DELETE /QuickBooksDetails/{id}
Summary: Delete a QuickBooksDetails record
Path Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | QuickBooksDetails record ID |
QuickBooksDetails Schema
| Property | Type | Description |
|---|---|---|
| id | integer | Record ID |
| name | string | Integration name |
| country | string | Country/region of the QBO instance |
| company_id | string | QuickBooks company/realm ID |
| company_name | string | QuickBooks company name |
| new_access_token | string | OAuth access token |
| new_refresh_token | string | OAuth refresh token |
| token_expiry | string (date-time) | Token expiration timestamp |
| authorized | boolean | Whether the connection is authorized |
| redirect_uri | string | OAuth redirect URI |
| authorization_code | string | OAuth authorization code |
| _exchangecode | boolean | Trigger to exchange auth code for tokens |
| _disconnect | boolean | Trigger to disconnect the integration |
| client_id | string | QuickBooks app client ID |
| new_client_secret | string | QuickBooks app client secret |
| api_url | string | QuickBooks API base URL |
| enable_sync | boolean | Whether sync is enabled |
| sync_entities | string | Comma-separated entity types to sync |
| sync_entities_list | array | Sync entity list as key-value pairs |
| client_top_level | integer | Top-level client mapping ID |
| inventory_item_group | integer | Item group for inventory items |
| non_inventory_item_group | integer | Item group for non-inventory items |
| service_item_group | integer | Item group for service items |
| default_invoice_item | integer | Default invoice line item ID |
| default_order_item | integer | Default order line item ID |
| default_tax_code_id | integer | Default tax code ID |
| zero_tax_rate_id | integer | Zero-rate tax code ID |
| default_sales_account_id | integer | Default sales account ID |
| default_expense_account_id | integer | Default expense account ID |
| default_asset_account_id | integer | Default asset account ID |
| automatic_sales_tax | boolean | Use automatic sales tax |
| online_payments | boolean | Enable online payments |
| accept_credit_card | boolean | Accept credit card payments |
| accept_bank_transfer | boolean | Accept bank transfer payments |
| multi_currency | boolean | Multi-currency enabled |
| receive_client_created | boolean | Sync newly created clients |
| receive_client_updated | boolean | Sync updated clients |
| receive_payment_created | boolean | Sync newly created payments |
| receive_payment_updated | boolean | Sync updated payments |
| sync_halo_invoice_id | boolean | Sync Halo invoice ID to QBO |
| sync_invoice_bill_address | boolean | Sync billing address on invoices |
| sync_invoice_ship_address | boolean | Sync shipping address on invoices |
| use_qbo_invoice_terms | boolean | Use QBO invoice terms |
| round_payments_to_2dp | boolean | Round payment amounts to 2 decimal places |
| dont_post_item_quantities | boolean | Skip posting item quantities |
| dont_sync_cost_tracking_lines | boolean | Skip cost tracking line items |
| mark_as_void | boolean | Mark cancelled invoices as void in QBO |
| do_daily_tax_import | boolean | Run daily tax import |
| app_type | integer | Application type identifier |
| instance_type | integer | QBO instance type |
| _warning | string | Warning message from last sync |
SageBusinessCloudDetails
GET /SageBusinessCloudDetails
Summary: List of SageBusinessCloudDetails
Description: Returns multiple SageBusinessCloudDetails records. Requires authentication.
Query Parameters:
| Name | Type | Description |
|---|---|---|
| connectedonly | boolean | Filter to only connected tenants |
| tenantid | string | Filter by Sage tenant ID |
POST /SageBusinessCloudDetails
Summary: Create or update SageBusinessCloudDetails
Request Body: Array of SageBusinessCloudDetails objects (see schema below)
GET /SageBusinessCloudDetails/{id}
Summary: Get one SageBusinessCloudDetails
Description: Returns a single SageBusinessCloudDetails instance by ID. Requires authentication.
Path Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | SageBusinessCloudDetails record ID |
Query Parameters:
| Name | Type | Description |
|---|---|---|
| includedetails | boolean | Include additional details in the response |
DELETE /SageBusinessCloudDetails/{id}
Summary: Delete a SageBusinessCloudDetails record
Path Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | SageBusinessCloudDetails record ID |
SageBusinessCloudDetails Schema
| Property | Type | Description |
|---|---|---|
| id | integer | Record ID |
| name | string | Integration name |
| tokenexpiry | string (date-time) | Token expiration timestamp |
| isauthorized | boolean | Whether the connection is authorized |
| redirecturi | string | OAuth redirect URI |
| clienttoplevel | integer | Top-level client mapping ID |
| client_top_level_name | string | Top-level client name |
| itemgroup | integer | Default item group ID |
| item_group_name | string | Default item group name |
| enablesync | boolean | Whether sync is enabled |
| defaultitemcode | string | Default item code |
| showmessage | boolean | Display sync status messages |
| client_id | string | Sage app client ID |
| new_client_secret | string | Sage app client secret |
| syncentities | string | Comma-separated entity types to sync |
| sync_entities_list | array | Sync entity list as key-value pairs |
| sbcdnewmethod | boolean | Use newer API method |
| code | string | OAuth authorization code |
| _exchangecode | boolean | Trigger to exchange auth code |
| _disconnect | boolean | Trigger to disconnect the integration |
| new_access_token | string | OAuth access token |
| new_refresh_token | string | OAuth refresh token |
| client_mappings | array | Client mapping records |
| item_group_mappings | array | Item group mapping records |
| app_type | integer | Application type identifier |
| code_verifier | string | PKCE code verifier |
| do_daily_tax_import | boolean | Run daily tax import |
| _importtype | string | Import type identifier |
| _warning | string | Warning message from last sync |
MYOBDetails
GET /MYOBdetails
Summary: List MYOB integration details
Description: Returns all MYOB integration records.
POST /MYOBdetails
Summary: Create or update MYOBDetails
Request Body: Array of MYOBDetails objects (see schema below)
GET /MYOBdetails/{id}
Summary: Get one MYOBDetails
Path Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | MYOBDetails record ID |
DELETE /MYOBdetails/{id}
Summary: Delete a MYOBDetails record
Path Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | MYOBDetails record ID |
MYOBDetails Schema
| Property | Type | Description |
|---|---|---|
| id | integer | Record ID |
| isdesktop | boolean | Whether this is the MYOB desktop edition |
| url | string | MYOB API base URL |
| company_url | string | MYOB company file URL |
| company_id | string | MYOB company ID |
| company_name | string | MYOB company name |
| redirect_uri | string | OAuth redirect URI |
| code | string | OAuth authorization code |
| client_id | string | MYOB app client ID |
| new_client_secret | string | MYOB app client secret |
| _exchangecode | boolean | Trigger to exchange auth code |
| authorized | boolean | Whether the connection is authorized |
| newmethod | boolean | Use newer API method |
| username | string | MYOB username |
| new_password | string | MYOB password |
| new_access_token | string | OAuth access token |
| new_refresh_token | string | OAuth refresh token |
| defaulttaxcodeid | integer | Default tax code ID |
| defaulttaxcodename | string | Default tax code name |
| clienttoplevel | integer | Top-level client mapping ID |
| client_top_level_name | string | Top-level client name |
| defaultitemgroup | integer | Default item group ID |
| item_group_name | string | Default item group name |
| defaultsalesaccountid | integer | Default sales account ID |
| defaultsalesaccountname | string | Default sales account name |
| defaultexpenseaccountid | integer | Default expense account ID |
| defaultexpenseaccountname | string | Default expense account name |
| enablesync | boolean | Whether sync is enabled |
| syncentities | string | Comma-separated entity types to sync |
| sync_entities_list | array | Sync entity list as key-value pairs |
| showmessage | boolean | Display sync status messages |
| defaultinvoiceitem | integer | Default invoice line item ID |
| defaultorderitem | integer | Default order line item ID |
| suppliertoplevel | integer | Top-level supplier mapping ID |
| supplier_top_level_name | string | Top-level supplier name |
| suppliernamefield | integer | Field used for supplier name |
| freighttaxcode | integer | Tax code for freight lines |
| generalledgeraccount | integer | General ledger account ID |
| halointegratorenabled | boolean | Whether Halo Integrator is enabled |
| halo_integrator_import_types | array | Import type list for Halo Integrator |
| halo_integrator_import_list | string | Serialized import list |
| halointegrator_lastsync | string (date-time) | Last Halo Integrator sync timestamp |
| halointegrator_lasterror | string | Last Halo Integrator error message |
| client_mappings | array | Client mapping records |
| supplier_mappings | array | Supplier mapping records |
| _disconnect | boolean | Trigger to disconnect the integration |
| _importtype | string | Import type identifier |
| do_daily_tax_import | boolean | Run daily tax import |
| _warning | string | Warning message from last sync |
KashflowDetails
GET /KashflowDetails
Summary: List of KashflowDetails
Description: Returns multiple KashflowDetails records. Requires authentication.
Query Parameters:
| Name | Type | Description |
|---|---|---|
| includedisabled | boolean | Include disabled integrations |
| includeenabled | boolean | Include enabled integrations |
| tenantid | integer | Filter by tenant ID |