All Collections
UK Compliance: CSOP annual return
UK Compliance: CSOP annual return

Make tax season a breeze by generating your annual return in seconds

Product Team avatar
Written by Product Team
Updated over a week ago

Companies with a registered CSOP scheme have to file an annual return with HMRC by July 6th following the end of the tax year. This filing reports activity (grants, exercises, settlements, terminations, expirations) related to CSOP grants during the tax year. You can generate your return in seconds with Ledgy.

Please note:

  • Unpublished transactions are included in the return, so make sure there are no draft transactions you don't intend to report.

  • You must ensure Ledgy data is up-to-date in order to generate an accurate return.

  • Monetary values should be reported in GBP. If your company's base currency is not in GBP, you should set the currency of the relevant transactions to GBP.

  • Ledgy makes assumptions for certain columns that may need manual adjustment. See column guidance for more details.

  • Ledgy's .ods export is designed to match the HMRC template exactly, so please do not change the format. Returns that do not match HMRC's template will be rejected.

  • Returns cannot be retrieved once submitted to HMRC, so we recommend saving your final submission in a secure location, such as Ledgy's data room.
    ​For more info, please see the official guidance from HMRC

Table of contents

How it works

1. Use the CSOP grant type on Ledgy

This return only includes transactions related to CSOP grants. This grant type is defined on the plan level, so grants must come from a plan with the type CSOP.

2. Prepare your valuation, transaction, stakeholder, and company data

The return is populated with information from your transaction history, so this must be comprehensive and accurate. You need to add the following:

  • Grants (type: CSOP) with strike price in GBP

  • Exercise, cash settlement, and termination transactions for any grants where these events have taken place

  • Valuations (type: CSOP (UK)) on or before the grant date with: AMV, UMV, expiry date, and HMRC reference (if agreed with HMRC)

  • Stakeholder custom field named "NIN" to populate national insurance numbers

  • PAYE reference in Company Settings > Company Profile.

Additionally, there are HMRC reporting fields on exercise and cash settlement transactions that can optionally be actioned to fully populate the return. You can fill these out each time you add a transaction so the work is already done when it comes to preparing your return. Alternatively, you can fill these out manually in the exported spreadsheet:

  • Largest share class

  • Listed on exchange

  • Tax relief

  • PAYE operated

  • Deductible amount

  • NIC election

3. Select the appropriate tax year

Now you're ready to generate your return. Navigate to Reports > Compliance > CSOP annual return to view your return. Select the desired tax year to filter for events dated within that date range. FYI: the UK tax year runs from April 6th to April 5th.

4. Preview the report values

You can see the values Ledgy has calculated for each column in-app. Check if any data is missing (see troubleshooting). You may see warnings at the top of the page regarding missing data.

5. Download the return for final review

If you're happy with what you see in-app, you can download the return using the button in the top right of the page. Ledgy exports your return in the exact format of the HMRC template, so it can be submitted right away. However, you should review and populate any columns that Ledgy is unable to answer. See column guidance for more details.

6. Submit to HMRC

Returns are submitted on the HMRC website here. HMRC offers a checking service to catch any formatting errors. You can upload your submitted returns to Ledgy's data room for safe keeping.

Column guidance

Below are notes on Ledgy's support for specific questions/columns in the return:

  • Largest share class - We base this on which share class has the largest share capital on Ledgy. You can adjust this manually in the export if necessary.

  • Listed on exchange - Ledgy assumes you are a private company and always answers NO.

  • Exercise price - This is based on the strike price of the grant transaction.

  • HMRC agreed market value - If you add an HMRC reference to the relevant CSOP valuation this column will be YES, otherwise NO.

  • Tax relief - If the exercise is between 3-10 years after the grant date, this column will be defaulted to YES, otherwise NO. Depending on your scheme rules, grants exercised earlier could still be eligible; you can adjust the value on the relevant exercise transaction if necessary.

  • All shares sold - If a stakeholder S has X amount of EMI exercised on date Y in share class Z, and there are also X shares being transferred or decreased from stakeholder S on date Y in share class Z, this column will be YES, otherwise NO.


If you're not seeing the expected data in the report, please check the following:

  • The relevant plan and grants are using the CSOP grant type.

  • You've added valuations of the type CSOP (UK) on or before each grant date (and the valuations are not expired).

  • Make sure you've created a stakeholder custom field name "NIN" to populate stakeholder national insurance numbers.

  • If PAYE reference is missing, add it in Company Settings > Company Profile.


Which data goes into each sheet?

  • 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.

How are first name, second name, and last name determined?

You enter Full name for stakeholders on Ledgy. For the annual return, we take the first string of the full name as first name, and the last string of the full name as last name. Everything in between will be considered a second name.

Did this answer your question?