Architecture
How it is built, and why it is built that way.
Not a white paper. A straightforward account of what runs where, what we can and cannot reach, and what would have to change on the day a regulated sterling stablecoin exists. Written for the technical person your business will ask.
The money runs across the top and never enters the middle. Everything Ceodore produces is built from public chain data plus what you have told it about your own business.
The shape of it
Small services, split where things fail differently.
Ceodore is a set of services rather than one application, divided along the lines where failure behaves differently. The chain indexer holds long-lived connections and is the most likely thing to fall over, so it cannot take the payment path with it. Document rendering is memory-hungry and spiky, so it runs on its own and is fed from a queue. Outbound webhooks are isolated so one merchant's dead endpoint cannot exhaust anyone else's capacity.
All of it runs in London. Application, database, object storage and backups are in the United Kingdom, under UK law and UK data protection.
Core API
Organisations, members, customers, suppliers, invoices, quotes, products, reporting. Stateless and horizontally scaled. It never does heavy work inline; anything slow is published to a queue and picked up elsewhere.
Chain indexer
Watches the public addresses you have connected or asked us to watch. Backfills on connection, then follows continuously, handling reorganisations and keeping its own cursor. Every chain sits behind the same interface, so adding one is an implementation rather than a rewrite.
Payments
Builds payment requests, generates the payload behind a code or an NFC tag, and holds the live connection that turns the till green. Latency matters here and nowhere else, so it scales on its own.
Documents
Invoices, quotes, statements and year-end packs, rendered to PDF from the same templates the web pages use. Queue-fed, never called from a request path.
Workers
Reminders, recurring invoices, reconciliation passes, capital gains recalculation, scheduled reports, retention jobs.
Market data
The single point at which we ask anyone for a price, cached for everything else. It exists so a valuation is taken once, consistently, and recorded rather than recalculated later.
Public site
Business profiles, the directory and the map. Read-only, cached, and served from a replica so consumer traffic can never contend with a till taking a payment.
The boundary
Three credential systems that never touch each other.
This is the part worth understanding, because everything else follows from it.
Signing in
A passkey, verified by our server. Gets you into Ceodore. Recoverable by email and a second factor, because losing access to your books should not be catastrophic.
Data at rest
A key per organisation, held in a managed key service with separately audited access. We can decrypt while legitimately operating. A stolen database alone cannot.
Your wallet
Credentials our servers cannot see at all. Keys are generated and encrypted on your device and never transmitted. There is no recovery path that runs through us.
Privacy
The chain is public. The part that says who you are is not.
Every transaction on a public blockchain is visible to everyone, for ever. What turns an address into a person is the mapping between them, and that mapping is the only thing worth protecting. It is the thing we encrypt, and mostly it is the thing we never collect.
We do not ask who you are
Signing up takes an email address and a way to pay for the subscription. No identity documents, no proof of address, no selfie holding a passport. Verifying your company against Companies House is optional and exists only because some businesses want the badge on their public profile. Data not collected cannot be lost, leaked, or asked for.
The linkage layer is encrypted
Customer and supplier identities, contact details, addresses, the labels you give wallet addresses, invoice line descriptions and document text are encrypted at the field level before they are written, under a key belonging to your organisation alone. Anyone reading the raw database sees transactions against addresses, with no way to tell whose they are.
Per organisation, so nothing correlates
Fields that need looking up carry a keyed hash alongside the ciphertext, so exact-match search still works without the value being readable. The key is per organisation, which means the same email address in two different businesses produces two different hashes. Nothing can be matched across the platform, by us or by anyone else.
Amounts and dates stay readable, deliberately
Numbers and timestamps are not the sensitive part, and keeping them readable is what lets your VAT return and your capital gains be calculated on the server rather than in your browser. Encrypting them would buy nothing and cost you the reporting that is the reason to use Ceodore at all.
Where people shop stays theirs
A customer using the Ceodore app can see everything they have bought, everywhere. No merchant can see that. A business sees the customers who bought from it and nothing beyond, and the cross-merchant view is held under the customer's own key. It is the most sensitive dataset in the product and it is treated as such.
And nothing is sold
No data sold, no data shared with advertisers, no data used to train machine learning models, no advertising trackers in the product or on this website. Everything stays in the United Kingdom, and you can export or delete it yourself without asking anyone.
The same payment at three levels. Anyone can read the middle column out of a stolen database and learn nothing about who was involved.
Why it is built this way
Not a way round the rules. A consequence of which rules apply.
We collect less because we owe less
Customer due diligence is an obligation that attaches to particular activities: exchanging one asset for another, holding assets for someone else, operating a venue where people trade. Ceodore does none of those. We sell accounting and payments software to businesses, and a software company has no more standing to demand your passport than your email provider does.
Collecting identity documents we have no obligation to hold would create a database worth stealing and a liability worth nothing. Data minimisation is a principle of UK data protection law, not a loophole in it.
And the same logic drives the encryption
Because we are never in the payment flow, what we hold is a record rather than a balance. That record is only sensitive where it links a public address to a real person, so that is the layer that gets encrypted and the layer that gets a key per business.
Everything else follows the same rule. We looked at what each regulated activity is defined by, built the product so it does not do those things, and then protected what was left. The architecture came out of reading the rules rather than working around them.
Where identity checks do happen
Identity checks in this market sit at the edges, where money enters and leaves the system. Acquiring stablecoins in the first place, and converting them back into fiat currency in a bank account, are regulated activities carried out by regulated firms, and those firms will verify you.
So a business can use Ceodore without telling us who it is, and will still be checked by its exchange or its off-ramp provider when it cashes out. We would rather set that expectation at the start than have anyone discover it at the point of needing the money. Ceodore is not, and is not intended as, a way to avoid an obligation that applies to somebody else.
A payment, end to end
What happens between a tap and a line in the ledger.
1. The request
Your till asks for a payment request. We build one: amount, asset, reference, and your own receiving address. It is written to an NFC tag or rendered as a code, and it expires on a short timer so a tag left on the counter cannot pay for the previous order.
2. The approval
The customer's wallet opens with the amount already filled in. They approve with their own biometric on their own device. The transaction is signed there and broadcast from there. Ceodore constructs; it never signs.
3. Settlement
Funds move from the customer's wallet to yours, directly, on a public network. No intermediary account, no pooled balance, nothing of ours in the path. Settlement is final and cannot be reversed by us or by anyone.
4. Observation
The indexer sees it and the payments service tells the till, which is why the screen turns green in about a second. Both are watching the chain, not each other.
5. The record
The transaction is matched to the invoice or till sale, valued in sterling at that timestamp, classified against a nominal code, added to your Section 104 pool at that cost, and queued for Xero. The sterling valuation is captured here because it cannot be reconstructed accurately afterwards, and it is the figure VAT is due on.
What we never do
Hold the funds at any point. Hold or generate a key on a server. Route the payment through an account of ours. Take a fee from the transaction. Swap one asset for another. Each of those would change what Ceodore is in the eyes of a regulator, which is rather the point.
The accounting engine
Tax rules are implementations, not settings.
The naive way to build this is to hardcode VAT and Section 104 and deal with other countries later. We did not, because the two are structurally different kinds of thing and retrofitting either is a rewrite.
Indirect tax
Sits behind an interface with one implementation today: UK VAT. Rates, thresholds, filing frequency and return format are data. Place-of-supply and reverse-charge logic are code. Adding Ireland would be largely data; the United States is a different tax type entirely and would be an integration with a specialist provider rather than something we would build.
Cost basis
Also an interface, also with one implementation: Section 104 pooling with same-day and thirty-day matching. This is a genuinely different algorithm from the per-wallet FIFO the United States requires, or the average-cost approaches used elsewhere, which is why it is a strategy rather than a flag. Each organisation records which method applies to it.
Ready for a sterling stablecoin
Adding one is a database row, not a release.
There is no regulated sterling stablecoin yet. The Bank of England published its regime in June 2026 and issuers will follow. When one is authorised, this is what has to happen at our end.
The asset registry
Every asset Ceodore handles is a row describing it: chain, address, symbol, decimals, what it is denominated in, and who issues it. Support for a new coin is an entry in that table. Nothing is compiled in, and no deployment is required to accept one.
Issuer and regulatory status
The registry carries optional fields for the issuer, its authorisation and a link to the public register entry. They are empty today because nothing qualifies. When a coin does, the merchant-facing marks appear on their own, because the interface renders what is populated rather than what is switched on.
Par status
The Bank's regime replaced holding limits with a temporary cap on how much of a coin may be issued, and acknowledges this creates some risk of the secondary price drifting from par. A merchant accepting at face value against a sterling invoice carries that difference. So the registry has a field for a machine-readable par feed, and when an issuer publishes one we can show peg status at the moment of acceptance. We asked the Bank to require that in our response to the consultation.
Sterling end to end
A sterling-denominated, par-redeemable coin removes the valuation problem almost entirely, because the sterling value of a sterling stablecoin at the point of supply is not in dispute. The accounting layer gets simpler, not harder.
And other chains
The first authorised sterling coin may well launch on Ethereum or a layer two rather than on Solana. Every chain sits behind the same adapter, so that is an implementation of an existing interface rather than a second product.
Why it is compliant
The architecture is the regulatory position.
Most of what makes Ceodore lawful to operate without authorisation is not policy. It is the absence of capabilities we deliberately never built.
No custodySafeguarding cryptoassets, or the means of access to them, is a regulated activity. We hold neither, and no server-side code path exists that could. That is why there is no recovery service and never will be.
Not in the payment flowFunds never pass through an account of ours, which keeps us out of payment services and e-money territory.
No trading venue, no dealingWe do not match buyers and sellers, quote prices, or deal as principal or agent.
No fee on transactionsA fee referable to a transaction in cryptoassets starts to look like arranging deals in them. Revenue is a flat subscription, and there is no fee parameter in the payment code to switch on.
No swapsConverting one asset to another is exchange activity. If a merchant wants it, they do it in their own wallet or through a regulated partner who is the regulated actor.
Business-facingWe sell software to businesses. We do not promote any asset to consumers, and the consumer app rewards spending at merchants rather than holding anything.
Check it rather than take our word for it
A wallet created in Ceodore is a standard one. Take the recovery phrase, open it in Phantom or on a Ledger, and you will find your funds exactly where we said they were. That is the test, and it is the one we would apply.
We also publish an offline recovery tool, openly, that opens your encrypted backup on your own computer with no internet connection and no account. Reaching your own money never depends on this company continuing to exist.
Nothing on this page is a regulatory determination. It is a description of how the software is built and why, and we would rather publish it and be corrected than describe it vaguely.
Questions we have not answered here?
If you are evaluating Ceodore for a business and something above is not enough detail, ask. We would rather have the technical conversation than have you guess.
Ceodore is software. It is not a bank, a payment institution, an electronic money institution, a custodian, an exchange or a trading venue, and it is not authorised or registered by the Financial Conduct Authority, because the activities it carries on do not require it to be. It does not provide financial, investment, tax or legal advice.
Ceodore does not carry out customer due diligence, because it does not perform any activity to which that obligation attaches. Identity verification in this market is performed by the regulated firms at the edges of it. Acquiring cryptoassets, and converting them into fiat currency, are activities carried on by exchanges and off-ramp providers who are registered for the purpose and who will verify their customers in the ordinary way. Nothing about using Ceodore removes, reduces or defers an obligation that applies to those firms or to you.
Businesses remain responsible for their own tax affairs. Reports produced by Ceodore are prepared from the data available to it and are your records rather than our opinion; what you file and what you claim remains yours to decide, with your accountant.
This page describes how the software is built and why, as at the date of writing. It is not a regulatory determination and should not be relied on as legal advice. Ceodore is a trading name of Echo Thirteen Capital Ltd, registered in England and Wales at 128 City Road, London EC1V 2NX.