Terms of service

These terms cover the hosted API at api.attestwire.com, including use, billing, cancellation and liability. The open-source library has a separate agreement: its MIT licence. Read the sections below for the full terms.

1. Who this is between

These terms are between you (the person or company using the API) and Ben Harborne, a sole proprietor in Woodside, California, USA, trading as Attestwire ("we", "us"). There is no company today. If one is formed to operate Attestwire, these terms transfer to it unchanged and we will tell you — see odds and ends.

You accept these terms by creating an API key or by calling the API. If you are agreeing on behalf of a company, you are confirming you may do so.

2. What the service is

An HTTP API that validates and generates electronic invoices against EN 16931 and its national restrictions. What each endpoint does, what it accepts and what it returns is described in the API documentation and on the rule reference, and those documents form part of these terms. Where they conflict with this page, this page wins.

The service does not transmit invoices. We are not a Peppol access point, a French PDP or a KSeF connector, we do not deliver documents to any authority or counterparty, and nothing here should be read as us doing so.

We do not promise an uptime percentage. There is no SLA on any plan today; if you need one, ask and we will tell you what we can commit to.

3. Not a compliance guarantee

This is the most important clause on the page, so it is not buried.

The service performs a technical conformance check. It tells you whether a document satisfies the rules we have implemented, as we have implemented them. It does not and cannot tell you that a tax authority, a portal, an access point or your customer will accept the document.

A result of valid: true means our implemented checks found no fatal error. It does not mean the invoice is correct, that its VAT treatment is right, that the figures are right, or that you have met your obligations in any country. Rules change, portals apply their own additional checks, our coverage is bounded and the bounds are published on the limits page, and the rule pages note where our check is known to be stricter or narrower than the published rule.

Nothing we produce is tax, accounting or legal advice. We are not your adviser. You remain responsible for your invoices and for your compliance, and you should check your obligations with someone qualified in your jurisdiction.

To the extent the law allows, the service is provided "as is", without warranties of merchantability, fitness for a particular purpose, or acceptance by any authority or counterparty.

4. Accounts and API keys

A key is issued to one email address and returned to you once. We keep only its SHA-256 hash, so we cannot show it to you again, and the same address will not be issued a second free key. While you still hold the key you can replace it yourself with POST /v1/keys/rotate.

You authenticate the call with the key you are replacing, your plan and usage carry over, and the old key stops working at once. That key is the entire credential, so anyone else who has a copy can rotate it away from you on the same terms.

If you think it has been exposed, rotate first and investigate afterwards. If a key is lost that route is closed to you, and what is available instead depends on the tier: If you are on a paid plan and the key is gone, email hello@attestwire.com from the address on your Paddle billing receipt.

We check the request against Paddle's record of your subscription rather than against the receipt itself — a receipt can be forwarded, so attaching one proves only that somebody has a copy of it — and the replacement is delivered one way only: as a reply to the billing address on file, whoever did the asking.

Whoever handles it retires the old key and issues the new one. We cannot recover a lost free key — not as a matter of policy, but because we never collected anything that could prove it was yours: a free signup address is never verified, and the key itself only ever existed in one HTTP response.

The practical answer is faster than support anyway. The limit is one free key per email address, so a different address gets you a working free key on the spot, and a plus-alias such as you+attestwire@example.com counts. That limit keeps casual signups to one key each; it is housekeeping rather than a security control, and it was never meant to trap you.

If you would rather we were able to rescue you, that is part of what a paid plan buys: Paddle holds a billing identity we can check. The lost key itself is never recoverable: we store its SHA-256 hash and nothing else, so there is nothing on our side to show you again and every route above ends in a replacement rather than the old key returned.

That is the same property that means a breach of our key store hands over a list of hashes, and that no support conversation can leak your credential, because the support side of it has never held one.

Keep your keys secret; calls made with your key are treated as yours, and you are responsible for usage under it until you tell us it is compromised. Tell us at hello@attestwire.com and we will revoke it — revoking a key you report is not the same thing as replacing one you have lost, and we will do the first for anybody.

Do not share one key across unrelated customers or resell access as if it were your own API without telling us. Ask instead; the answer is usually yes on sensible terms.

5. Acceptable use

Do not:

If something breaks the service or is clearly abusive we may suspend a key immediately and tell you why. For anything less clear-cut, you get a message first.

6. Fees and billing

Prices are in US dollars and billed in advance through Paddle, on the period you chose — monthly or annually. The current plans and their allowances are on the pricing page; if a price changes, section 8 applies.

An annual term buys twelve months of the same monthly allowance, not a year's documents in one bucket: the quota still resets on the 1st and still does not roll over. The Invoice Fix Report is not a subscription at all — it is a single payment for one piece of work, described on its own page, and the refund test that applies to it is on the refund policy.

Paddle is the merchant of record for the hosted API and for the Invoice Fix Report. It sells them to you on our behalf, takes the payment, and issues the invoice; your contract for the service itself is the one on this page, with us.

Which Paddle entity you contract with for the payment depends on where you are — Paddle.com Inc. in the United States, Paddle.com (Canada) Ltd. in Canada, and Paddle.com Market Limited (England and Wales, company number 8172165) everywhere else — and their Buyer Terms are Paddle's, not ours.

Quota is documents per calendar month, counted per key, resetting at 00:00 UTC on the 1st. A validate, parse or generate call is one document. A call we refuse — a bad key, a rate limit, a malformed request — does not consume a document.

Quota does not roll over and unused documents are not refunded. When you reach the limit, further calls are refused until the reset or an upgrade; we do not silently bill overage.

Prices exclude tax. Because Paddle is the merchant of record it determines and charges any VAT, GST or sales tax due on the sale, and shows it at checkout on top of the price; enter a VAT or tax identifier there and it is applied, including reverse charge where that is the correct treatment.

Paddle's determination is Paddle's, not ours, and none of this is tax advice: your own filing and accounting obligations remain yours.

7. Cancellation and refunds

Cancel any time through the billing portal. You do not have to email us, and there is no retention call or confirmation step. Cancellation takes effect at the end of the period you have already paid for, and your key keeps working until then; after that it falls back to the free tier rather than being deleted.

There is no proration: cancelling partway through a period ends the subscription at the end of that period, and unused documents are not refunded.

Three ways to reach that portal, so losing one email is not a dead end: the billing-portal link in any Paddle receipt we have sent you; GET /v1/billing/portal on the API, authenticated with your key, which mints a fresh link; or hello@attestwire.com, where a person cancels it for you.

Paddle issues its portal links per customer rather than as one public login page, which is why this is a route rather than a bookmark.

If the API materially failed you, ask and we refund the month. An outage, a validation result that was wrong in a way that cost you, a month you paid for and could not use — email hello@attestwire.com and say what happened. We would rather refund a month than argue about one.

This same policy is set out on its own at the refund policy, which is the standalone statement of it, together with the refund test for the one-time Invoice Fix Report.

8. Changes to the API and to prices

Breaking API changes: 30 days' notice by email to the address on the account, before the change takes effect. Additive changes — a new endpoint, a new optional field, a new rule that returns an additional error — are not breaking and ship without notice. Validation coverage improving is the product working, not a breaking change, though we will note significant coverage changes in the documentation.

Price increases: 30 days' notice by email. They never apply to a period you have already paid for, and you can cancel before the new price starts.

We may change these terms; material changes get the same 30 days' notice and the date at the bottom of this page changes.

9. Liability

Our total liability to you, for everything, is capped at the fees you paid us in the 12 months before the claim. On the free tier that is zero, which follows from the tier being free.

Neither of us is liable to the other for indirect or consequential loss — lost profits, lost revenue, lost or corrupted data, business interruption, or a fine or penalty imposed by an authority — even if we were told it was possible.

Nothing here limits liability that cannot lawfully be limited, including for fraud or for death or personal injury caused by negligence. This cap is a deliberate allocation of risk and it is why the price is what it is: read section 3 and decide accordingly.

10. Your data

Invoice payloads are processed in memory and never stored. If you ask for a validation record, its findings (which can quote values from the invoice) are kept for 365 days, as the privacy notice describes. What we do hold, and what our subprocessors touch, is set out on the security page; personal data on this site is covered by the privacy notice.

If you need a GDPR Article 28 processor agreement, one is written and ready: the data processing addendum. Email us with your company details and it is in place.

You keep all rights in everything you send. We claim no licence over your invoice data beyond processing the request you made.

11. Governing law

These terms are governed by the laws of the State of California, USA, without regard to its conflict-of-laws rules. The courts of San Mateo County, California have exclusive jurisdiction, and both of us submit to them.

We know that is a real cost for a European buyer, and we are not going to pretend otherwise: it reflects where the operator is, not a preference for making disputes expensive. Enterprise agreements are negotiable, including this clause.

12. If we stop

If the hosted API is discontinued, every account gets at least 60 days' notice by email before it stops answering, and no further charges after the notice goes out.

The library @attestwire/en16931 is MIT-licensed. That licence is irrevocable for versions already released: the code keeps working, offline, with no account and no calls home, and you or anyone else may fork and maintain it. That is the continuity plan, and it does not depend on our goodwill. More on this on the about page.

Odds and ends

If a clause is unenforceable, the rest still stands. Not enforcing something once does not waive it. You may not assign these terms without us; we may assign them to a company formed to operate Attestwire, or to a buyer of the business, and we will tell you if that happens. These terms plus the documents they reference are the whole agreement about the hosted API.

Questions about any of this go to hello@attestwire.com and reach a person, not a legal department.

Last updated . If this page changes materially we will say so here rather than silently swapping it.