Generate Tax Pack
This section outlines the detailed process of scheduling a job to generate a Tax Pack using the Phoenix API.
π Prerequisites: Obtaining the Client GUID
Before generating a tax pack, you'll need the client GUID. If you only have the client ID or need to look up client information, use the Clients API endpoint.
Retrieving Client Information
GET /clients
Base URL Example:
https://fslpresales.fslcgix-uat.co.uk/FSLPresales_PhoenixApi/clients
Query Parameters
You can filter clients using the following optional parameters:
| Parameter | Type | Description |
|---|---|---|
| clientId | string | The identifier for the CGiX Client (e.g., "CLIENT123") |
| companyId | string | The identifier for the CGiX Company |
| externalId | string (guid) | External identifier for the request |
Response Format
[
{
"clientGuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"clientId": "string",
"clientName": "string",
"sortName": "string",
"clientTaxType": "UK_Individual",
"companyId": "string",
"isIncomeClient": true,
"currencyIso": "string",
"incomeTaxRateId": "string",
"taxReportingPeriodName": "string",
"isHmrcReportable": true,
"incomeTypeName": "string",
"incomeSubtypeName": "string",
"taxIdentificationNumber": "string",
"taxFormTypeName": "string",
"taxFormDate": "2026-01-29T12:06:26.932Z",
"relationshipStartDate": "2026-01-29T12:06:26.932Z",
"dateOfBirth": "2026-01-29T12:06:26.932Z",
"placeOfBirth": "string",
"passport1CountryIso": "string",
"passport2CountryIso": "string",
"externalId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"externalProcessedDateTime": "2026-01-29T12:06:26.932Z",
"clientTaxTypeDescription": "string",
"taxYear": "2026-01-29T12:06:26.932Z",
"dateOfExpiry": "2026-01-29T12:06:26.932Z",
"clientNameFormatted": "string",
"status": "string",
"entityCountryIso": "string",
"usTaxIdNumber": "string",
"dateFormSigned": "2026-01-29T12:06:26.932Z",
"dateOfDeath": "2026-01-29T12:06:26.932Z",
"isProbate": true,
"probate": {
"clientGuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"clientId": "string"
}
}
]
π¨ββοΈ Understanding Probate Clients
When isProbate is true, the client represents the estate of a deceased individual
Probate Object Fields:
- probate.clientGuid - The GUID of the probate client
- probate.clientId - The client ID of the probate client
How Probate Works:
- When a client passes away, their
dateOfDeathis recorded - A new probate client is created to represent the estate with
isProbate: true - The
probateobject links back to the original deceased client - Historical data remains with the original client
- New estate transactions are associated with the probate client
Important: When generating tax packs for probate clients, use the
probate.clientGuidnot the deceased client GUID. The probate client will not have an address so this will need to be added.
π§ 1. Creating the Request
Create a new request in Postman as follows:
-
Ensure you have a valid access token retrieved via the authentication process.
-
Change the
HTTP verbfrom GET to POST -
Click on the Authorization tab and set the access token as the
Bearer Tokenthat was retrieved previouslyTo learn how to obtain an authorization token, see Obtaining an Access Token
-
Specify the URL to the
/taxpacks/ukAPI endpoint. For example:https://fslpresales.fslcgix-uat.co.uk/FSLPresales_PhoenixApi/taxpacks/uk -
Navigate to the Body tab, selecting raw as the input type. Then choose JSON from the dropdown on the right hand side. Here the following text is required before making the API call:
{
"clientGuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", //Unique identifier for the client - must exist in the database
"reportingPeriod": "Annual", //Options: Annual, Interim, or other supported periods
"startDate": "2026-01-28T15:02:46.268Z", //Start date of the tax pack reporting period
"endDate": "2026-01-28T15:02:46.268Z", //End date of the tax pack reporting period
"runAsReprint": true, //Set to true to generate as a reprint, false for original
"showDuplicateWatermark": true, //Set to true to display watermark on duplicate copies
"runAsLive": true, //Set to true for live execution, false for test/preview
"calculationExecutionDetails": {
"calculationToDate": "2026-01-28T15:02:46.268Z", //Date up to which calculations should run
"clearCalculationToDateOnCompletion": true //Set to true to reset calculation date after completion
}
}π Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| clientGuid | string (GUID) | Yes | Validated against clients which exist in the database. Must be a valid income client. |
| reportingPeriod | string (enum) | Yes | The reporting frequency (e.g., Annual, Interim). Must match the client's configured reporting period. Dual reporting periods are not supported. |
| startDate | datetime | Yes | Beginning of the tax pack period in ISO 8601 format. Must align with the client's reporting cycle. |
| endDate | datetime | Yes | End of the tax pack period in ISO 8601 format. Must align with the client's reporting cycle and match the date range for the specified reporting period. |
| runAsReprint | boolean | No | When set to true, generates the tax pack as a reprint. Requires that a live report has been previously generated and transactions flagged as reported for this period. |
| showDuplicateWatermark | boolean | No | When set to true, displays a watermark indicating this is a duplicate copy. |
| runAsLive | boolean | Yes | When set to true, executes as a live production run and flags transactions as reported. Set to false for testing or preview purposes. |
| calculationExecutionDetails | object | No | Contains calculation-specific settings. |
| calculationToDate | datetime | No | Specifies the date up to which tax calculations should be performed. |
| clearCalculationToDateOnCompletion | boolean | No | When set to true, resets the calculation date once the pack generation is complete. |
π’ Tax Pack Generation Per Address
Important: The system generates one separate tax pack report for each address associated with the client.
This means:
- If a client has multiple addresses, multiple PDF reports will be generated (one per address)
- Each report will be specific to the transactions and data associated with that particular address
- All generated reports are bundled together in a single ZIP file for download
- The address reference is used to identify and organize each report within the ZIP package
π File Naming Convention
The tax pack file naming is controlled by the TaxPackFileNameConvention company profile setting. This setting can be configured at the company level to customize how tax pack files are named.
βοΈ Default Naming Convention
If the TaxPackFileNameConvention profile setting is not configured or is empty, the system uses the default format:
TaxRep_AddressRef_[TaxYearEndYear]_[Counter].pdf
Example: TaxRep_12345_2026_1.pdf
π― Custom Naming Convention Tokens
When configuring the TaxPackFileNameConvention company profile setting, the following tokens are available:
| Token | Description | Example Output |
|---|---|---|
| ClientID | The client's unique identifier | CLIENT123 |
| ReportingCountry | ISO country code of the reporting country | GB |
| Counter | Sequential number for multiple reports | {0} (replaced with 1, 2, 3, etc.) |
| TaxYearEndYear | Year when the tax year ends | 2026 |
| TaxYearStart | Tax year start date in ddMMyyyy format | 01012025 |
| TaxYearEnd | Tax year end date in ddMMyyyy format | 31122025 |
| CurrentDate | Generation timestamp in yyyyMMddHHmm format | 202601281430 |
| AddressRef | Reference number of the address | 12345 |
| AddressName | Name of the address (if available) | London_Office |
| AddressType | Type of address (spaces replaced with underscores) | Registered_Office |
π‘ Example Profile Setting Values
Here are some example values for the TaxPackFileNameConvention company profile setting:
-
Basic with client and counter:
ClientID_Counter_TaxYearEndYear -
Detailed with dates and country:
ReportingCountry_ClientID_TaxYearStart_TaxYearEnd_AddressType_Counter -
With timestamp and address:
ClientID_AddressRef_TaxYearEndYear_CurrentDate_Counter -
Using address name instead of reference:
ClientID_AddressName_TaxYearEndYear_Counter
β
Validation Requirements
Before generating a tax pack, the following conditions must be met:
π€ Client Validation
- Client must exist: The
clientGuidmust correspond to an existing client in the database. - Income client only: Tax pack generation is only available for income clients. Non-income clients will be rejected.
- Client address required: At least one address must exist for the client.
π
Reporting Period Validation
- Reporting period must be valid: The
reportingPeriodmust be a supported enum value. - Date range must match: The
startDateandendDatemust align with the client's configured reporting cycle. - Dual reporting not supported: Clients with dual reporting periods cannot generate tax packs.
π Reprint Validation
When runAsReprint is set to true:
- Prior live report required: A live report must have been previously generated for this client.
- Reported transactions required: The client must have reported transactions for the specified period (
endDate). - Reported income must be enabled: If the ReportedIncome company profile setting is disabled (set to 0), both
runAsReprintandrunAsLivemust be set tofalse.
π― Live Report Validation
When runAsLive is set to true:
- Reported income must be enabled: If the ReportedIncome company profile setting is disabled (set to 0),
runAsLivemust be set tofalse.
Important Notes
- runAsLive: Setting this to
truewill mark transactions as reported and generate an official tax pack. Usefalsefor review or testing purposes.- runAsReprint: Use this when regenerating a tax pack that has already been produced for the same period. A reprint can only be executed after a live report has been generated.
- Date Format: All dates must be provided in ISO 8601 format with timezone information.
- Calculation consistency: The client's calculation date should remain stable during report generation to ensure consistency.
- Multiple addresses: If the client has multiple addresses, each address will generate its own PDF report, all packaged into a single ZIP file.
- File naming: The naming convention is controlled by the TaxPackFileNameConvention company profile setting and can be customized per company
π 2. Sending the Request
Click the Send button to send the prepared request.
π¬ 3. The Response Body
| Request Status | Description |
|---|---|
| Accepted β | The request has succeeded and the tax pack generation has been scheduled |
| Bad Request β | Indication that there is a client-side error in how the request was formed |
| Unauthorized π | Indicates a lack of valid authentication |
| Not Found π | The requested resource was not found on the server |
π Response Format
This JSON response is returned when a tax pack generation request is successfully scheduled.
{
"correlationGuid": "1f783e3f-e2b8-40d0-a0f7-c0b3b1830fc9",
"requestRoute": "/taxpacks/uk",
"subscriptionMessage": "GenerateTaxPack",
"requestStatus": "Accepted",
"requestStatusDateTime": "2025-03-20T07:41:28.1347242+00:00",
"requestStatusCheckRoute": "/notifications/1f783e3f-e2b8-40d0-a0f7-c0b3b1830fc9",
"entityGuid": null,
"entityCallbackRouteUri": null,
"externalCorrelationId": null,
"externalOperationId": null,
"requestStatusComment": null,
"callbackStatus": null,
"callbackStatusDateTime": null,
"callbackComment": null
}Response Fields:
- correlationGuid: Unique identifier for the scheduled job. Use this to check the status of the request and download the generated ZIP file containing all tax pack reports.
- requestRoute: The API route where the tax pack request was initiated.
- requestStatus: Current status of the request (e.g., Accepted, Processing, Completed).
- requestStatusDateTime: Timestamp indicating when the request status was last updated.
- requestStatusCheckRoute: API route to query the current status of the request.
To check the request status and access the generated tax pack ZIP file, follow the steps outlined in the Access Generated Tax Packs section.
Updated 6 days ago
