Bring a company's records in by pasting JSON
Add a company with its officers, share register, SAFEs, option grants, contracts and filings in one step, from a JSON document.
Companies has Import JSON in its page bar. It adds a new company from a JSON document, with everything you list: its details, officers, share classes, holders, every issue and transfer of shares, SAFEs and notes, option plans with their grants, contracts and filings. Use it to bring in records you keep in a spreadsheet or another app: give the export to an assistant with Copy the prompt, paste its answer into the box, and choose Preview.
The preview lists every record the import would make and every problem it found, such as a transfer from a holder who has too few shares on that date, a share class that is not in the document, or a date written the wrong way. Nothing is saved until there are no problems and you choose Import.
Importing always makes a new company. It never adds to or changes a company you already keep.
Shares are recorded in date order, whatever order the document lists them in, and each issue gets the next certificate number of its class unless the document gives one.
The document
{
"company": {
"legalName": "Example Robotics Ltd",
"entityKind": "private_limited",
"country": "GB",
"registrationNumber": "01234567",
"incorporatedOn": "2024-01-10",
"financialYearEnd": "03-31",
"currency": "GBP"
},
"officers": [
{ "name": "Jane Doe", "role": "director", "appointedOn": "2024-01-10" }
],
"shareClasses": [
{ "name": "Ordinary", "parValue": "0.0001" }
],
"holders": [
{ "name": "Jane Doe" },
{ "name": "Example Ventures LP", "kind": "entity" }
],
"transactions": [
{ "kind": "issue", "date": "2024-01-10", "class": "Ordinary", "to": "Jane Doe", "shares": "6000000", "pricePerShare": "0.0001" },
{ "kind": "transfer", "date": "2025-06-01", "class": "Ordinary", "from": "Jane Doe", "to": "Sam Sample", "shares": "500000" }
],
"convertibles": [
{ "kind": "safe_post_money", "holder": "Example Ventures LP", "amount": "250000", "date": "2025-09-01", "valuationCap": "10000000" }
],
"optionPlans": [
{
"name": "2025 Share Option Plan", "class": "Ordinary", "pool": "1000000", "adoptedOn": "2025-02-01",
"grants": [
{ "holder": "Sam Sample", "options": "48000", "exercisePrice": "0.10", "grantedOn": "2025-03-01", "cliffMonths": 12, "vestingMonths": 48,
"exercises": [ { "date": "2026-04-01", "options": "12000" } ] }
]
}
],
"contracts": [
{ "title": "Office lease", "counterparty": "Example Properties Ltd", "kind": "lease",
"terms": [ { "startsOn": "2025-01-01", "endsOn": "2027-12-31", "noticeDays": 90, "value": "1500", "per": "month" } ] }
],
"filings": [
{ "name": "Confirmation statement", "authority": "Companies House", "dueOn": "2027-01-24", "rule": "after_incorporation_anniversary", "days": 14 }
]
}
company is required, with at least its legalName. Every other part is
optional. Dates are written YYYY-MM-DD. Numbers of shares, amounts and prices
may be written as text or as numbers; amounts are in the company's currency.
The company
| Field | Notes |
|---|---|
legalName |
Required. The name as registered. |
entityKind |
sole_trader, partnership, private_limited, public_limited, llc, corporation, nonprofit or other. |
country |
Two letters, such as GB or US. |
region |
A state or province. |
registrationNumber |
|
incorporatedOn |
A date. |
financialYearEnd |
The month and day, written MM-DD, such as 03-31. |
currency |
Three letters, such as GBP or USD. |
registeredAddress, businessAddress |
One line of the address per line of text. |
website, notes |
Officers
Each has name, role (director, secretary, president,
chief_executive, treasurer, registered_agent or other; director when
left out), an optional title, appointedOn (required) and, for one who has
left, resignedOn.
Share classes and holders
A class has name, kind (common or preferred), parValue,
authorisedShares and certificatePrefix, all but name optional.
A holder has name, kind (person or entity) and email. A name used
in a transaction, a SAFE or a grant that is not listed here is added as a
person.
Transactions
Each has kind (issue, transfer, repurchase or cancellation), date,
class (the name of one of shareClasses), shares, and to for an issue
or a transfer, from for everything but an issue. pricePerShare,
certificate and note are optional.
SAFEs and notes
Each has kind (safe_post_money, safe_pre_money or convertible_note),
holder, amount, date, and optionally valuationCap, discountPercent,
interestPercent, maturesOn (required for a note), mfn and proRata
(true or false).
Option plans and grants
A plan has name, class, pool (the shares set aside), adoptedOn and
grants. A grant has holder, options, grantedOn, and optionally
exercisePrice, vestingStartsOn (the grant date when left out),
cliffMonths, vestingMonths, frequency (monthly, quarterly or
yearly), expiresOn and exercises, each a date and a number of
options. An exercise is recorded as an issue of shares from the pool.
Contracts
Each has title, counterparty, kind (customer, supplier, lease,
employment, insurance, subscription, loan, confidentiality,
partnership or other), optional keyTerms and reviewOn, and terms,
at least one, oldest first. A term has startsOn, and optionally endsOn,
autoRenews (true or false), renewalMonths, noticeDays, value and
per (one_off, month, quarter or year).
Filings and renewals
Each has name, dueOn (the next due date), and optionally kind (filing,
tax, licence, insurance, registration, permit, membership,
domain or other), authority, and rule with months and days:
| Rule | Next date |
|---|---|
none |
Once only. |
yearly_same_day |
The same day each year. |
every_n_months |
Every months months. |
after_fye |
months and days after each financial year end. |
after_incorporation_anniversary |
months and days after each anniversary of incorporation. |
after_completion |
months and days after the last one is done. |
These rules are how Magpie works out the next date; they are not advice about when a filing is due. Check each date with the authority.
If an import is refused for a reason you can't work out, Contact support.
Ask Magpie support
Send Magpie staff a question about anything this article does not answer.