Context
On June 2, 2025 Argyle’s reports were upgraded to improve usability and clarity:- Updated report designs — a cleaner, consistent format across all report types with employment details easier to access.
- API updates — a new process to generate reports and restructured report details centered around employments rather than accounts.
Generating reports
On October 6, 2025 the legacy endpoint — where
{type} is not required as a path parameter — will stop receiving updates. After January 5, 2026, this legacy endpoint will be retired; all report generation must use the updated endpoint after this date.Key changes
- Report
typewill now be required as a path parameter when generating reports. - In the updated endpoint,
file_urlhas been changed to a direct download link of the report PDF.
Argyle authentication headers are now required to retrieve report PDFs via
— Signed Google Cloud Storage links are no longer returned.
— The URL can no longer be accessed directly in a browser or automation script without the appropriate headers.
file_url— Signed Google Cloud Storage links are no longer returned.
— The URL can no longer be accessed directly in a browser or automation script without the appropriate headers.
- We have added a new
json_urlfield to the response payloads. This link should be used to retrieve reports in JSON.
Argyle authentication headers are now required to retrieve report JSONs via
json_urlRetrieving reports in JSON
Only applicable if retrieving reports in JSON format.
- Report JSON’s should now be retrieved using the value of
json_urlreturned in the response payload after generating a report.
Updated JSON Schema
Report JSON’s have been re-oriented around employments rather than accounts:voe comparison
voe comparison
voie comparison
voie comparison
voe-mortgage comparison — previously voe-d1c
voe-mortgage comparison — previously voe-d1c
voie-mortgage comparison — previously voie-d1c
voie-mortgage comparison — previously voie-d1c
voe and voie report types
voe and voie report types
- The
accountsarray has been restructured as anemploymentsarray. - A new
created_atfield has been added. - The following fields have been added to the
employmentsobject:
employment— unique employment IDlast_synced_at— timestamp of when the employment was most recently scanned for new data prior to report generationlength_of_work— object representing the number ofyearsandmonthsthe user has been employed at this employmentmonthly_income— object containing Argyle’s monthly income calculation for this employment (not available on report PDF)
- The following adjustments have been made:
- The income period has been reduced from YTD + prior 2 years (e.g. 2025YTD, 2024, and 2023) to YTD + prior year (e.g. 2025YTD and 2024)
- Values within the
incomeandincome_totalsobjects have been changed from numbers to strings. - When all nested values within an object are
null, the object itself will returnnull. This impacts: - Existing objects:
employee_address,employer_address, andbase_pay - New objects:
length_of_workandmonthly_income
- The following fields have been removed:
generated_ataccounts.income.employerincome_totals.period_total_gross_pay.{...}
voe-mortgage and voie-mortgage report types — previously voe-d1c and voie-d1c
voe-mortgage and voie-mortgage report types — previously voe-d1c and voie-d1c
- The
accountsarray has been restructured as anemploymentsarray. - A new
created_atfield has been added. - The following fields have been added to the
employmentsobject:
employment— unique employment IDlast_synced_at— timestamp of when the employment was most recently scanned for new data prior to report generationlength_of_work— object representing the number ofyearsandmonthsthe user has been employed at this employmentmonthly_income— object containing Argyle’s monthly income calculation for this employment (not available on report PDF)
- The following adjustments have been made:
metadatahas been updated to provide a consistent structure, regardless of GSE eligibility:metadata.d1c_report.statusandmetadata.aim_report.statusrepresent the status of their respective GSE reports. Possible values:available— The report is eligible for GSE submission.not eligible— The report is not eligible for GSE submission.metadata.d1c_report.accountsandmetadata.aim_report.accountsrepresent the account IDs contained in the GSE submission.metadata.d1c_report.employmentsandmetadata.aim_report.employmentsrepresent the employment IDs contained in the GSE submission.- Values within the
incomeandincome_totalsobjects have been changed from numbers to strings. - When all nested values within an object are
null, the object itself will returnnull. This impacts: - Existing objects:
employee_address,employer_address, andbase_pay - New objects:
length_of_workandmonthly_income
- The following fields have been removed:
generated_atd1c_idmetadata.d1c_report.idmetadata.aim_report.idmetadata.d1c_report.ssnmetadata.aim_report.ssnaccounts.income.employerincome_totals
Unmapped payroll documents
Only applicable if retrieving documents using the
/v2/paystubs or /v2/payroll-documents endpoints.To ensure the highest data quality, Argyle’s new reports only include data linked to complete employment records where information on identity, employment, and income is available.
- In rare cases (less than 5%), documents from multiple employments may be retrieved from a single connection if those employments share the same payroll system.
- If those documents are not mapped to a complete employment record, they are excluded from the new reports.
- These unmapped documents (e.g. paystubs, W-2s) can be identified if
paystubs.employmentorpayroll-documents.employmentarenull, and can be filtered out when retrieving documents via either method below:
- List employments by user ID to retrieve a list of employment IDs
- List paystubs or list payroll documents by these employment IDs
employment = null
- List paystubs or list payroll documents
- Ignore documents with
employment=null