Service

Service scope, data handling and security

A plain description of what this service is, what happens to the data you send it, and how to report a security problem. Written to be checkable, not to be impressive.

Updated 2026-08-07 · 5 min read · by the FaturaPDF team

What this service is

FaturaPDF is an HTTP API that receives a JSON payload describing an issuer, a customer and a list of line items, and returns the bytes of a PDF: either a fatura (invoice) or a recibo (receipt), formatted the way Brazilian documents are formatted.

It applies the following, which you can verify against the output of any request:

  • CPF and CNPJ are validated with the Brazilian mod-11 check-digit algorithm. An invalid document causes an HTTP 400 naming the offending party; it is not printed on the PDF.
  • Money is formatted R$ 1.234,56 and totals are computed in integer cents.
  • Dates are printed DD/MM/AAAA.
  • On a receipt the amount is spelled out in Portuguese.
  • If you supply a PIX BR Code in pix_copia_cola, it is rendered as a QR code on the document.

What this service is not

This is not a Nota Fiscal Eletrônica (NF-e or NFS-e) issuer

It produces a formatted commercial document, not a tax-authority-authorized fiscal record. A real NF-e must be signed with an ICP-Brasil digital certificate belonging to the issuing company and authorized in advance by a state (SEFAZ) or municipal system. No API can do that on your behalf without your certificate. Do not present a document generated here to a customer, an accountant or an auditor as if it were a nota fiscal. The document types are explained in full here.

Two further scope limits, stated so you are not surprised later:

  • It does not mint PIX codes. It renders a BR Code string you supply. Generating one would imply a claim about who owns a PIX key, which is not ours to make. See the BR Code format guide if you want to build one yourself.
  • The layout is fixed. Custom logos, colours and templates are not supported in this version. If you need brand-exact documents, the comparison of approaches is honest about when to build your own instead.

What happens to the data you send

The generation endpoints are stateless. Concretely, in the code path that handles POST /invoice and POST /receipt:

  • Nothing is written to a database, a blob store or a disk. The payload is parsed, validated, rendered to PDF bytes, returned in the HTTP response, and then it is gone when the function invocation ends.
  • Generated PDFs are not retained. There is no archive, no URL where a previously generated document can be fetched, and no way for us to reproduce one you generated.
  • Payload contents are not logged. If rendering fails, the error object is written to the platform log so the failure can be diagnosed; the request body is not.
  • Requests reach the API through the RapidAPI gateway, which applies its own logging and metering under its own terms. Traffic is served from Netlify's infrastructure, which handles it under its own terms. Both are outside our control and worth reading if your data is sensitive.
A consequence worth planning for

Because nothing is stored, you are responsible for retaining any document you need later. Store the bytes when you generate them. This is also the right practice for its own sake: an invoice or receipt is a record of what was true at the time, and regenerating it months later from live data can silently produce a different document from the one your customer received.

The public website separately keeps aggregate page-view counters (visible at /stats) and the hostnames of external sites that link to or embed a page. These are counts and hostnames only — no personal data, no cookies set by us, no cross-site tracking. The free browser tools (generator, CPF/CNPJ, PIX) run entirely on your device: the data you type into them is never transmitted anywhere.

Accounts, billing and quota

There is no FaturaPDF account. Subscription, API keys, metering and payment are handled entirely by the RapidAPI listing, under RapidAPI's terms. We never see a payment method, and we cannot adjust, refund or inspect a subscriber's quota — those requests go to RapidAPI.

The free plan allows 20 documents per month and does not require a credit card. When a plan's quota is exhausted, the gateway returns HTTP 429 before the request reaches the API.

Availability

Honest version: this runs on serverless functions on a free hosting tier, and no uptime guarantee is offered. It is not an SLA-backed service and should not be placed in a path where an outage causes real harm without a fallback.

Practical advice, which applies to any third-party document API: keep generation behind an interface of your own, retry transient failures (500, 502, 503, 504) with backoff, and have a plan for month-end when volume spikes. The integration guides include a retry implementation. /health is public, unauthenticated and not counted as billed usage, so you can poll it freely.

Acceptable use

Do not use this service to produce documents intended to deceive: forged receipts, documents presented as notas fiscais, or documents bearing a CPF/CNPJ that is not yours to use. Do not use it to process data you have no legal basis to process. Automated use is expected and welcome — it is an API — within the quota of your plan.

Reporting a security issue

Responsible disclosure is welcome. Machine-readable policy: /.well-known/security.txt (RFC 9116).

  • Contact: leo.sanchees2014+arenaalfa@gmail.com
  • In scope: faturapdf.com and its endpoints (/invoice, /receipt, /health, /stats, /hit).
  • Out of scope: the RapidAPI gateway and marketplace (report those to RapidAPI), and denial-of-service testing of any kind.
  • Please do not include real personal data in a report. Synthetic, check-digit-valid test documents can be generated at the CPF/CNPJ tool.

There is no paid bug bounty. Please allow a reasonable window before public disclosure.

Machine-readable descriptors

For agents and directories, the same facts are published in structured form:

ArtifactWhat it describes
/openapi.yamlThe full request/response contract, every field and every status code.
/apis.jsonAPIs.json 0.16 discovery index: base URL, docs, pricing, sign-up, sample output.
/.well-known/api-onboardingOnboarding descriptor: plans, auth mechanism, a runnable two-step flow, and an explicit list of the service's gaps.
/.well-known/security.txtSecurity contact and scope (RFC 9116).
/llms.txtPlain-language summary for language models, including the NF-e disclaimer.

The gaps array in the onboarding descriptor lists the service's known limitations deliberately, so an agent evaluating it can see them without reading marketing copy.

Changes

This page is versioned with the site and carries the date it was last updated at the top. Material changes to scope or data handling will change that date.

Frequently asked questions

Do you store the invoices I generate?

No. The generation path writes nothing to a database, blob store or disk — the payload is validated, rendered and returned, then discarded when the function invocation ends. There is no archive and no URL where a previously generated document can be retrieved. Store the bytes on your side when you generate them.

Is a document generated here a valid nota fiscal?

No. It is a formatted commercial document (fatura or recibo). A valid NF-e or NFS-e must be signed with an ICP-Brasil certificate belonging to the issuing company and authorized by a tax authority. See the explainer for what that means in practice.

Is there an uptime guarantee?

No. This runs on a free serverless tier and offers no SLA. Retry transient failures with backoff and keep generation behind your own interface so an outage is recoverable. /health is public and free to poll.

How do I cancel or get a refund?

Through RapidAPI, which owns the subscription, the payment method and the billing relationship. FaturaPDF has no billing system of its own and cannot process a refund or adjust a quota.

Read the technical documentation

The guides cover the request contract, error handling and the Brazilian formatting rules the API applies — free to read, no signup.

Get an API key on RapidAPI → Or try the free browser generator

Related guides