Quick Start
Get an API key: Email
api@nofee.inc — keys are provisioned instantly. Include your use case and estimated formation volume.
Form a Florida LLC in 3 API calls:
# 1. Check pricing
GET https://nofee.inc/api/v1/pricing
# 2. Form the entity → get Stripe checkout URL
POST https://nofee.inc/api/v1/entities
Authorization: Bearer nf_live_...
Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000
# 3. Poll until active
GET https://nofee.inc/api/v1/entities/{id}
Base URL
https://nofee.inc/api/v1
Authentication
All endpoints (except GET /pricing) require a Bearer token in the Authorization header.
Authorization: Bearer nf_live_xxxxxxxxxxxxxxxxxxxxxxxx
Token format
| Prefix | Environment | Notes |
|---|
nf_live_ | Production | Real filings, real state fees |
nf_test_ | Sandbox | No filings submitted, Stripe test mode |
Request your key: api@nofee.inc — keys are provisioned within minutes.
Idempotency
Send a UUID v4 in the Idempotency-Key header on all POST requests. Duplicate requests with the same key return the original response — safe to retry without double-forming.
Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000
All Endpoints
| Method | Path | Auth | Purpose |
|---|
| GET | /pricing | Public | Services & fees |
| POST | /entities | Required | Form new LLC or Corp |
| GET | /entities | Required | List entities |
| GET | /entities/{id} | Required | Get entity + status |
| POST | /registered-agent | Required | Subscribe to RA service |
| POST | /annual-reports | Required | File annual report |
| GET | /orders | Required | List orders |
| GET | /orders/{id} | Required | Get order status |
POST /entities
Form a new Florida LLC or Corporation. Returns a Stripe checkout_url — your agent or user completes payment to trigger filing.
Request
POST /api/v1/entities
Authorization: Bearer nf_live_...
Content-Type: application/json
Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000
{
"client": {
"full_name": "A. Founder",
"email": "founder@example.com"
},
"entity_name": "Acme Holdings LLC",
"principal_address": {
"street": "1 Main St",
"city": "Miami",
"state": "FL",
"zip": "33101"
},
"members": [{ "name": "A. Founder", "title": "Member" }],
"registered_agent": { "provider": "nofeeinc" },
"add_registered_agent_service": true
}
Response 200 OK
{
"id": "e_01H...",
"entity_id": "e_01H...",
"confirm_token": "tok_...",
"confirm_url": "https://nofee.inc/confirm/tok_...",
"checkout_url": "https://checkout.stripe.com/c/pay/cs_live_...",
"order_id": "o_01H...",
"amount_cents": 22500 // $225.00 = $100 agent fee + $125 LLC state fee
}
Request body fields
| Field | Type | Required | Description |
|---|
client.full_name | string | ✅ | Full legal name of the applicant |
client.email | string | ✅ | Contact email for confirmation |
entity_name | string | ✅ | Full entity name incl. LLC/Corp suffix |
principal_address | object | ✅ | Florida street address for the entity |
members | array | ✅ | Members/officers: name + title each |
registered_agent.provider | string | ✅ | "nofeeinc" or bring your own |
add_registered_agent_service | boolean | — | Subscribe to $75/yr RA service |
mailing_address | object | — | If different from principal address |
purpose | string | — | Entity purpose (default: "Any lawful business") |
effective_date | string | — | ISO date for delayed effective date |
GET /entities/{id}
Poll this endpoint after payment to track formation progress. Poll every 30–60 seconds until status === "active".
GET /api/v1/entities/e_01H...
Authorization: Bearer nf_live_...
Response
{
"id": "e_01H...",
"entity_name": "Acme Holdings LLC",
"entity_type": "LLC",
"state": "FL",
"status": "active",
"document_number": "L24000012345", // Florida SunBiz document number
"created_at": "2024-01-15T10:32:00Z"
}
Entity status values
| Status | Meaning |
|---|
| intake_received | Form submitted, awaiting payment |
| pending_payment | Checkout created, payment not yet complete |
| paid | Payment confirmed, filing queued |
| filing_submitted | Filed with Florida Division of Corporations |
| active | Approved and active — document number assigned |
| rejected | Rejected by state — contact support |
GET /pricing
Public endpoint — no auth required. Returns current service fees and state fees.
GET /api/v1/pricing
// Response
{
"services": [
{ "id": "llc_formation", "agent_fee_cents": 10000, "state_fee_cents": 12500 },
{ "id": "corp_formation", "agent_fee_cents": 10000, "state_fee_cents": 8750 },
{ "id": "registered_agent", "price_cents": 7500, "interval": "year" }
]
}
POST /registered-agent
Subscribe an existing entity to NoFeeInc registered agent service ($75/yr). Use this if the entity was formed elsewhere or if you skipped RA during formation.
POST /api/v1/registered-agent
Authorization: Bearer nf_live_...
{
"entity_name": "Acme Holdings LLC",
"document_number": "L24000012345",
"client": { "full_name": "A. Founder", "email": "founder@example.com" }
}
Orders
Orders track payments. Each entity formation or service subscription creates an order.
# List all orders
GET /api/v1/orders
# Get specific order
GET /api/v1/orders/o_01H...
// Order object
{
"id": "o_01H...",
"status": "paid", // pending | paid | failed | refunded
"amount_cents": 22500,
"entity_id": "e_01H...",
"created_at": "2024-01-15T10:32:00Z"
}
Error Codes
All errors return JSON with a consistent shape:
{
"error": "invalid_input",
"message": "Schema validation failed",
"issues": [...] // Zod validation details when applicable
}
| HTTP Code | error | Meaning |
|---|
| 400 | invalid_json | Request body is not valid JSON |
| 400 | invalid_input | Schema validation failed — check issues |
| 401 | unauthorized | Missing or invalid Bearer token |
| 403 | forbidden | Token lacks required scope |
| 404 | not_found | Entity or order does not exist |
| 429 | rate_limited | Too many requests — see Retry-After header |
| 500 | db_error | Internal server error — contact support |
Rate Limits
Default limits per API key:
| Endpoint | Limit |
|---|
| POST /entities | 60 requests / hour |
| GET /entities, GET /orders | 300 requests / hour |
| GET /pricing | Unlimited (public) |
When rate limited, the response includes a Retry-After header with seconds to wait. Need higher limits? Email api@nofee.inc.
Pricing
Florida LLC Formation
NoFeeInc agent fee$100.00
Florida state filing fee$125.00
Total$225.00
Florida Corp Formation
NoFeeInc agent fee$100.00
Florida state filing fee$87.50
Total$187.50
Registered Agent: $75/year per entity. Optional — add during formation or later via /registered-agent. Required for all active Florida entities.
Webhooks
Coming soon. Webhook support is in development. When available, you'll be able to subscribe to events like
entity.active,
entity.rejected, and
order.paid instead of polling. Email
api@nofee.inc to be notified when webhooks launch.
For now, poll GET /entities/{id} every 30–60 seconds until status === "active". Typical formation time: 1–5 business days.
Use Cases
🤖
AI agents forming entities autonomously
An AI agent receives a task to set up a business for a user. It calls GET /pricing, confirms the cost, calls POST /entities, hands the checkout URL to the user, then polls GET /entities/{id} until active. Zero humans in the loop.
// AI agent flow
const pricing = await fetch('/api/v1/pricing');
const entity = await fetch('/api/v1/entities', { method: 'POST', body, headers });
await redirect(entity.checkout_url); // user pays
// poll until active
while (status !== 'active') {
await sleep(30_000);
status = (await fetch(`/api/v1/entities/${entity.id}`)).status;
}
🏗️
SaaS platforms forming entities during onboarding
A SaaS platform automatically forms a Florida LLC for each new customer as part of their onboarding flow. The entity is created, the checkout link is embedded in the onboarding UI, and the platform tracks status in the background.
⚡
Zapier / Make.com automations for accountants
Connect the API to Zapier or Make.com. When a new client row is added to Airtable or a form is submitted, automatically trigger entity formation via a webhook/HTTP module — no code required.
Ready to integrate?
Email us your use case and we'll provision an API key within minutes.
Request an API Key →