Skip to main content
A Company profile is what your Tenancy states about the company behind it: the legal entity, the market, its time zone, and optionally the name its products go out under and the legal form it is registered as. It is the second half of onboarding, and it is held for screens and for reporting rather than for any calculation. A Tenancy holds one profile. The latest statement is the profile, and no call answers any statement it replaced.

What it carries

Five fields, three of them required. Each is stated by you; the Platform derives none of them. An optional field is stated or absent, never blank. A statement carrying "brand_name": "" or "brand_name": null is refused 422 naming the field; leaving the key out is the ordinary statement, and the answer leaves the field out too rather than returning an empty string.
The Platform holds no tax rate, no address, no tax identifier, no bank account and no officer. A body carrying one is refused 400 naming that field rather than accepted with the field dropped: a Tenancy that sent a value believes the value is held.
vat_rate_bps was a required field until the profile stopped holding a rate. Until 15 January 2027 a statement carrying it is accepted with the field ignored, and the answer carries Deprecation and Sunset headers naming that day, and a Link to the changelog entry. From that day it is refused 400 like any other field the profile does not hold. Remove it from your statements now.

Stating it

You state the whole profile with PUT /v1/tenants/{tenant_id}/company-profile. There is no partial edit: a field you leave out is you saying the company has none. A correction is the same call with the whole profile again. Onboarding and a later correction are the same act performed at different times, so both answer 200 and neither is told apart by its status.
The whole profile, stated
The answer is the profile as recorded, with stated_at added — the moment the Platform recorded it, in UTC.
200
Stating a profile you already hold records nothing and answers what stands, stated_at included. A retry after a lost response is therefore indistinguishable from the attempt it repeats, and the call needs no Reference and no idempotency key.
A statement replaces what the last one said, and no call answers what it replaced. Recovering a value you overwrote means stating it again.

Absence is an answer

A Tenancy that has never stated a profile answers 404 and names the state:
404
That is an answer rather than a fault. Read it as onboarding not being finished and render the form. The Platform never invents an empty profile, because a company with no name and a company that has not been asked yet are different states and a screen has to be able to tell them apart. Another Tenancy’s profile answers 404 too, which keeps a profile that exists elsewhere and one that was never stated indistinguishable from outside.

What the Platform suggests

The Platform has worked four markets out for onboarding and carries a list of legal forms for each. A screen offers them so the operator picks from a filled list instead of typing into an empty field. The registry also answers the tax rules each of these markets admits, as tax_rules. Those are not a suggestion and not part of the profile: they are what a Loan’s tax is held to at issuance. See Markets. Every country carries a suggested time zone, not only the four with a pack: the registry answers suggested_time_zone on every entry, the Console prefills the field from it, and you confirm or change it. A country is not a zone — Mexico spans three — so the suggestion is the one thing the Platform will not apply for you. What a record freezes is the zone you stated. They suggest and constrain nothing. A legal form no list carries is recorded as stated — a list that constrained would make every correction to it a breaking change for companies already registered under an older form. The country is the one field the Platform does hold you to. A code outside the 50 it names is refused 422 naming the country:
422
The 46 countries without a pack are named and carry no legal forms and no tax rules. Stating one is a profile with a market and only its zone prefilled, not a lesser profile.

What it does not govern

No figure the Platform computes reads the profile. Two consequences are worth stating on their own, because both are easy to assume the other way. A Loan’s tax owes nothing to the profile. Tax on a Loan is one of the rules the Platform admits for the Loan’s jurisdiction, chosen in the Loan’s tax and frozen when it is issued. The profile states no rate to differ from it. Mexico lists the rules Mexico admits. The stated country neither opens nor closes lending. Whether the Platform can carry a Loan in a market is decided at issuance, from the rule tables, by name — and decided the same way for a Tenancy that stated nothing. A company that states Spain and issues in Mexico is admitted; a company that states Spain and issues in Spain is refused, because the Platform reads none of Spain’s law. Where a company is and what the Platform is supplied to do there are two statements, and only the second gates anything. The profile is not a precondition for lending. A Tenancy issues Loans, registers Clients and reports Receipts without ever stating one. Facilities and credit decisions are the exception: they read the stated time zone, and are refused no_time_zone until a profile carrying one stands. Reading it back and stating it are Read the company profile and State the company profile.