How to bulk (import) issue warrants on Capdesk

This article details the different fields of a warrant import file and how to prepare the file.

This article will help to explain how to register and bulk issue warrants on Capdesk. 

Before you can get started, you will need to have the Warrants add-on enabled (if you have not already done so).

1. Enabling the add on 

2. Setting up a warrant plan 

3. Preparing the import file 

To enable the add-on, go on your company's profile, go to "Settings and add-ons" and ensure that "Warrants" is selected. If it isn't, please tick the box by "Warrants Addon" and select save to enable warrants.


Screenshot 2020-05-07 at 10.16.04

After you have enabled the addon, you will be able to see the warrants tab on the left menu, under equity awards. 

Before you can prepare an import file, it is important to add a warrant plan first. This plan is based off the warrant scheme you wish to issue. 

2. Adding the plan
To do so, go to the Warrants page then to "Plans". After this, please click on the green "Add Plan" button.

Screenshot 2020-05-13 at 14.38.31

This will redirect you to the following page where you will need to fill in the origins of the shares, the name of the plan and the share class (if the desired share class is not featured on the drop down, you can add a new share class by clicking the grey "Add" button to the right of the share class field).

When adding a plan, it is important to note that you may need to add an incentive pool first. The incentive pool gives you an overview of all your incentive equity awards that support authorised warrants. If you would like to add an incentive pool, you can read the following support article here.

Choose the origin of shares this plan is using:

1) Directly from Incentive Pool: if the shares has been authorised by the board to an equity pool in general.

2) Authorised specifically for this plan (a portion of the pool): if the shares has been authorised by the board to this plan specifically.

3) Outside Pool (non-incentive shares outside the pool): if no shares has been authorised, but will be upon either granting or exercising.

4) Issued: if the shares are already issued to a shareholder who will be satisfying the awards on exercise.

Screenshot 2020-05-13 at 14.43.31

Once you have inputted the necessary details for the plan, please click save. It will then show on the plans tab, as seen below:

Screenshot 2020-05-13 at 14.48.59

After you have added the plan, you can then download the import sheet.

3. Preparing the import file: 

Preparing the import file for warrants -1

For a bulk import, you will need to fill in the import sheet, which is accessible by clicking the "Import Grants" button, as shown in the screenshot below.

Screenshot 2020-05-07 at 10.30.11

This will take you to the following page where you can download a sample csv file. 

Screenshot 2020-05-07 at 10.54.01

Once downloaded, you can see that we have list examples in the sheet. It is important to delete these examples before you begin inputting details onto the import sheet. 

Screenshot 2020-05-13 at 15.02.24

Note: The order of the columns in the template may differ to the screenshots shown below. This doesn’t matter for importing but if you want you can drag columns around to match the screenshots.

id” (mandatory) - For every warrant grant, there needs to be a unique number filled in the “id” column (it can be as simple as 1, 2, 3, etc.).

security_plan” (mandatory) - Fill in the same warrant plan name from the warrant plan you created on Capdesk earlier (e.g. Warrant/Unapproved.).

date” (mandatory) - The date of the transaction. The date will all need to be in the same format i.e. if you use a (/) or (.) as the separator, all dates will need to be inputted in that format.

Tip: Every cell in the “date” column should always be filled.

"quantity" (mandatory) - The amount of warrant that have been granted.

Screenshot 2020-05-13 at 15.11.15

first_name” (mandatory) - First name of the warrantholder. Only mandatory to fill if the warrantholder is a person.

last_name” (mandatory) - Last name of warrantholder. Only mandatory to fill if the warrantholder is a person.

email” (mandatory) - Email address of warrantholder.
"registration_number" (mandatory if warrantholder is a company) - The registration number if the warrant holder is a company
"company_name" - The name of the company holding the warrants

country” (mandatory) - Country of residence of the warrantholder. Please ensure this is in the format of ISO ALPHA-2 (you can find the full list of countries here).

"address1" (non-mandatory) - The first line of the address for the warrantholder. 
"city" (non-mandatory) - City of residence for the warrantholder.

Tip: You only need to provide personal information in the row where “id” is filled.
Screenshot 2020-05-13 at 15.16.32

Once you have inputted your key information, personal information and warrant details, you then need to insert vesting schedule details. If the vesting schedule is:

Immediate: this means that the warrant grant will vest immediately. Cells to fill:

    • vesting_type” - always input ‘immediate’.
    • vesting_start” - the date the warrant was granted and subsequently vested.

Automatic: the standard vesting schedule i.e. warrants that vest over 48 months, with a 12 month cliff, vests 25% at end of cliff then vests monthly. However, we have 4 different types of automatic schedules to accommodate for rounding (if there is fractional vesting). Cells to fill:

    • vesting_type”:
      - Automatic (Distribute Evenly, Round Up): Rounds first tranche then distributes evenly. You will need to input 'automatic_equal_round_up'.
      - Automatic (Distribute Evenly, Round Down): Rounds down first tranche then distributes evenly. You will need to input 'automatic_equal_round_down'.
      - Automatic (Round Up): Rounds up any fractional vesting each tranche and removes any difference in last tranche. You will need to input 'automatic_round_up'.
      - Automatic (Round Down): Rounds down any fractional vesting each tranche and adds any difference at the last tranche. You will need to input 'automatic_round_down'.
    • vesting_on” - this corresponds to the day the vesting starts. You can enter that every time the warrant vests, it can vest on the same day as the vesting start date, the first of the month or the last of the month. Input 'same_date', 'first_of_month', or 'last_of_month' respectively.
    • vesting_start” - the date the warrant grant starts vesting
    • vesting_months” - the total vesting period in months including any cliff e.g. if it vests over 4 years, you input 48.
    • vesting_cliff” - this is the period (in months) where no warrants are vested. This can be 0 if the warrants starts vesting immediately / no cliff.
    • vesting_percentage” - (if applicable) at the end of the cliff period, a % amount will have vested. E.g. 6 warrants vested out of 24 in total (6/24 = 25%).
    • vesting_interval” - how often the warrants will vest either or after the cliff period. If monthly, input 1. If quarterly, it'll be 3. If annually, it’ll be 12 etc.

Custom: if the warrant grant has special conditions i.e. it vests on certain dates. Cells to fill:

    • vesting_type” - input ‘custom’.
    • scheduled_quantity”:
      - The quantity of warrants vested on a specific date
      - This is separate from the warrant grant row and you will need to insert a new row. You will also need to input “grant_id” with the “id” of the warrant grant.
      - You will also need to input the “date” (back at cell E) on the same row as the transaction.
      • vested_quantity” - if the date of vesting has taken place then you can input the amount that is vested on that date.
      • "date" - the date of when the warrants will vest.
      • vesting_start” - the date of when vesting starts (can also be the same date as the date of grant).

    Other vesting conditions: if the warrant grant has vesting conditions based on milestones, performances or market conditions i.e. vests upon an exit event.

    Similar to the Custom schedule, you will need to enter a scheduled quantity and then fill in the condition field (input vests upon exit, etc). You do not need to enter a date.

    The vesting type will be 'vesting_condition'.

    Screenshot 2020-05-13 at 15.52.06


    The two below are only relevant when you want to record secondary transactions (see more info below):

    reason” (non-mandatory)

    • This is separate from the warrant grant row and will need to insert a new row. You will need to input grant_id with the id of the warrant grant in the new row.
    • Fill this column with the transaction reason i.e. if there has been an exercise or lapse.
    • If exercise, please input "exercise".
    • If lapse, we have a list of cancellation reasons to input into this cell: registration_fault / buyback / expiration / share_capital_variation / death / disability / leave_involuntarily / leave_voluntarily / retirement / release / other.

    note” (non-mandatory)

    • If you have listed one of the cancellation reasons, you will need to include a note i.e. "lapsed".
    • You can use this field to include any additional notes for the warrantholder to see.

    The remaining columns are all optional but if you want to use them, please feel free to reach out to support for further help at

    How to record an exercise or lapse:

    To record an exercise you will have to fill out these specific fields:

    grant_id” - input the “id” of the warrant holder.

    date” - the date of the exercise.

    registered” - the date the shares are entered into the share register. Can be left blank.

    quantity” - the amount that is exercised.

    reason” - always enter exercise.

    Screenshot 2020-05-13 at 16.09.10


    To record a lapse you will have to fill out these specific fields 

    grant_id” - input the “id” of the warrantholder.

    date” - the date of the lapse.

    quantity” - the amount to be lapsed.

    reason” - reason for the lapse. We have a list of cancellation reasons to input into this cell:

    • registration_fault
    • buyback
    • expiration
    • share_capital_variation
    • death
    • disability
    • leave_involuntarily
    • leave_voluntarily
    • retirement
    • release
    • other.

    note” - additional note about the reason for cancellation/lapse. (It does not have to be "Lapsed")

    Screenshot 2020-05-13 at 16.14.47


    How to upload the import file

    Once you have completed the import file, you will then need to import it to Capdesk.

    To import, you need to download your sheet as a csv file.

    You can do this by clicking on the “File” tab -> “Save as” -> “comma-separated values (csv, current sheet)”.

    Screenshot 2020-05-13 at 16.19.54

    You’ll then need to go back onto Capdesk and to the page where you downloaded the template (“Warrants” tab -> “Import Grants”).

    However, once directed, this time click on “Select File to Import” and select the csv file you have just downloaded.

    You’ll then have to wait a moment while the file uploads.


    If import upload failed:

    If your csv file fails to upload you will need to download the “Download Processed CSV” to see what errors have occurred.

    Once you have established the errors and corrected your import file, download the updated csv file and try and upload it again by clicking “Reimport CSV File”.

    If you are unsure of the errors, please feel free to contact support at


    If import is successful:

    Once you have imported the file, you should be able to see it on warrants page:

    Screenshot 2020-05-13 at 16.56.41

    If you need further assistance, you can reach out by submitting a support article here.