Introduction
UK companies with a registered Company Share Option Plan (CSOP) scheme must file an annual return with HMRC. This return reports all CSOP activity during the tax year, including grants, exercises, settlements, terminations, and expirations.
The deadline for filing is July 6th following the end of the tax year. Ledgy can generate your return in seconds, pre-populated with data from your cap table.
This article explains what the CSOP annual return is, what data you need to prepare, and how to generate and submit your return using Ledgy.
Who can generate returns: You need to be an account admin in Ledgy to generate compliance reports.
What is the CSOP annual return?
The CSOP annual return is an HMRC compliance requirement for companies operating a Company Share Option Plan. CSOP is a tax-advantaged share option scheme that allows companies to grant options up to £60,000 per employee with favourable tax treatment.
What must be reported:
Grants of CSOP options
Option exercises
Cash settlements
Terminations and forfeitures
Expirations of CSOP options
Any other CSOP-related activity during the tax year
Tax year: The UK tax year runs from April 6th to April 5th of the following year.
What Ledgy generates
Ledgy automatically populates 3 of the 8 tabs in HMRC's template:
CSOP_OptionsGranted_V5 - Grant transactions grouped by grant date
CSOP_OptionsRCL_V5 - Cash settlements, terminations, and expirations
CSOP_OptionsExercised_V5 - Exercise transactions from CSOP grants
Note: The remaining 5 tabs are included in the exported file but do not contain data. Ledgy exports the file in the exact format HMRC requires, so you can submit it directly after review.
Important considerations before generating
What Ledgy includes
✅ All published and unpublished (draft) transactions - Ensure there are no draft transactions you don't intend to report
✅ Automatic calculations for most required columns
✅ Optional HMRC reporting fields on exercise and cash settlement transactions
What you may need to adjust manually
❌ Stock split adjustments - Ledgy ignores stock splits in calculations, so manual adjustments may be required
❌ Some columns where Ledgy makes assumptions (see Column guidance below)
❌ Optional HMRC reporting fields if not populated on transactions
Critical requirements
Currency: Monetary values must be reported in GBP. If your company's base currency is not GBP, set the currency of relevant transactions to GBP before generating the return.
File format: Do not change the format of Ledgy's .ods export. Returns that don't match HMRC's template exactly will be rejected.
Data accuracy: Ensure all Ledgy data is up-to-date before generating the return. The report pulls directly from your transaction history.
Save your submission: Returns cannot be retrieved from HMRC once submitted. Save your final submission in a secure location, such as Ledgy's data room.
How to generate your return
Step 1: Use CSOP grant type
This return only includes transactions related to CSOP grants. The grant type is defined at the plan level, so grants must come from a plan with type CSOP.
If you haven't set up a CSOP plan yet, create one in Equity Plans > Plans and select CSOP as the grant type.
Step 2: Prepare your data
Grants
Create grants from a CSOP plan
Include strike price in GBP
Ensure accurate grant dates
Transactions
Exercise, cash settlement, and termination transactions must be recorded
Valuations
Create valuations with type "CSOP (UK)"
Date on or before grant dates, with AMV, UMV, expiry date
Add HMRC reference number if agreed with HMRC
Stakeholder information
Create custom field named "NIN" and populate with National Insurance Numbers
Please see Stakeholder custom field to learn more.
Company information
Add PAYE reference in Company Settings > Company Profile
Optional HMRC reporting fields You can populate these fields on exercise and cash settlement transactions to fully automate your return, or fill them manually in the exported spreadsheet:
Largest share class
Listed on exchange
Tax relief
PAYE operated
Deductible amount
NIC election
Step 3: Generate the report
Go to Reporting > Compliance > CSOP annual return.
Select the desired tax year to filter for events dated within that date range.
Note: The UK tax year runs from April 6th to April 5th.
Step 4: Preview and check
Review the in-app preview and check for warnings about missing data, NIns, valuations, currency settings, or unwanted draft transactions.
Step 5: Download and review
Click Download to get the file. Review all three tabs (CSOP_OptionsGranted_V5, CSOP_OptionsRCL_V5, CSOP_OptionsExercised_V5) and:
Manually populate blank columns (see Column guidance)
Adjust for stock splits if applicable
Verify optional HMRC fields are populated correctly
Important: Do not change the file format. HMRC will reject incorrectly formatted returns.
Step 6: Submit to HMRC
Submit through the HMRC website before July 6th. Use HMRC's checking service, then save a copy to Ledgy's data room.
Column guidance
Ledgy populates automatically:
Largest share class
Based on which share class has the largest share capital in Ledgy
Adjust manually in the export if necessary
Listed on exchange
Ledgy assumes you are a private company and always answers NO
Manually change to YES if your company is publicly traded
Exercise price
Based on the strike price of the grant transaction
HMRC agreed market value
Answers YES if you added an HMRC reference to the relevant CSOP valuation
Answers NO if no HMRC reference is present
Tax relief
Defaults to YES if exercise is between 3-10 years after grant date
Defaults to NO otherwise
Depending on your scheme rules, earlier exercises could still be eligible - adjust on the exercise transaction if necessary
All shares sold
Answers YES if the same number of shares are transferred or decreased from the stakeholder on the same date as the exercise
Answers NO otherwise
You must populate manually:
Any optional HMRC reporting fields not populated on transactions (largest share class, tax relief, PAYE operated, deductible amount, NIC election)
Understanding the report tabs
CSOP_OptionsGranted_V5: Grant transactions grouped by grant date. Grants with different strike prices are split into separate rows.
CSOP_OptionsRCL_V5: Cash settlement, termination, or expiry transactions from CSOP grants. Only cash settlement transactions have monetary value in Ledgy.
CSOP_OptionsExercised_V5: Exercise transactions from CSOP grants, including tax relief and share sale information.
Troubleshooting
Missing data?
Verify the relevant plan and grants are using the CSOP grant type
Create "CSOP (UK)" valuations dated before grant dates
Add "NIN" custom field with National Insurance Numbers
Add PAYE reference in Company Settings > Company Profile
Set transaction currency to GBP
Grants not appearing?
Check that grants come from a plan with grant type CSOP
Ensure grant dates fall within the selected tax year (6 April to 5 April)
Verify transactions are created (not just grants)
FAQs
When is the deadline for filing the CSOP annual return?
The deadline is July 6th following the end of the tax year. For the 2023/24 tax year (6 April 2023 to 5 April 2024), the deadline is 6 July 2024.
What's the difference between CSOP and EMI reporting?
CSOP and EMI are separate tax-advantaged schemes with different reporting requirements. CSOP returns report only CSOP grants, while EMI returns report only EMI grants. Generate separate returns for each scheme type.
Can I edit the file after Ledgy generates it?
Yes, you should review and manually populate certain columns. However, do not change the file format or structure. HMRC will reject returns that don't match their template exactly. Only edit cell contents, not formatting.
How do I populate the optional HMRC reporting fields?
You can add these fields directly to exercise and cash settlement transactions in Ledgy when you create them. Alternatively, you can fill them in manually in the exported spreadsheet. Populating them in Ledgy saves time when generating future returns.
How does Ledgy split stakeholder names into first, second, and last name?
Ledgy uses the full name you entered for stakeholders. The first string becomes "first name," the last string becomes "last name," and everything in between is "second name." Example: "John Michael Smith" → First: John, Second: Michael, Last: Smith.
Do I need to include employees who left during the tax year?
Yes, if they had CSOP activity during the tax year (grants, exercises, terminations), they should be included in the return regardless of whether they're still employed.
What if I had a stock split during the tax year?
Ledgy ignores stock splits when calculating valuations and quantities. You'll need to manually adjust the numbers in the downloaded file to reflect post-split values.
Where should I store my submitted returns?
Upload your final submitted returns to Ledgy's data room for secure storage. This creates an audit trail and ensures you have access to historical submissions if needed.





