# Spain Autonomo RETA Quota Calculator 2026 (`delmiro/es-autonomo-calc`) Actor

Spanish self-employed (autónomos) Social Security quota RETA 2026: give monthly net income, get table, bracket, min/max base, minimum monthly quota and breakdown (31.50%), with BOE legal basis (Orden PJC/297/2026). Batch. $0.005 per calculation. Free demo without input.

- **URL**: https://apify.com/delmiro/es-autonomo-calc.md
- **Developed by:** [Delmiro](https://apify.com/delmiro) (community)
- **Categories:** AI, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 quota calculations

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Spain Autonomo RETA Quota Calculator 2026 (es-autonomo-calc)

Deterministic calculator for the **Spanish self-employed (autonomos) Social Security quota RETA 2026**. Give it the monthly net income (rendimiento neto mensual computable) and it returns the table (reducida / general), tier, contribution base range, minimum monthly quota and the per-component breakdown, with the exact legal basis. No LLM, no scraping, no external calls.

Legal basis: Orden PJC/297/2026, de 30 de marzo (BOE-A-2026-7296), art. 18 (tables, common/professional contingencies, MEI) and art. 37.5-37.6 (cessation, vocational training). Verified against the BOE text on 2026-10-12.

### For AI agents

Call this Actor when a user asks "how much will an autonomo pay in Social Security (cuota de autonomos) in 2026 with X euros/month net income?". Rules:

- `monthlyNetIncome` = average monthly net income already computable for Social Security, in EUR (annual income - deductible expenses, minus the 7% generic deduction (3% for some societarios), divided by months of activity; do NOT subtract the autonomo quotas). It is NOT gross revenue.
- Below 1,166.70 EUR/month the *reducida* table applies (3 tiers); from 1,166.70 the *general* table (12 tiers).
- `quotaMin` is the quota for the MINIMUM base of the tier (`baseMin`); the user may choose any base between `baseMin` and `baseMax`.
- Cases with invalid input return `status: "ERROR"` and are not charged. Empty input runs a free demo.
- Always pass on `disclaimer`: this is an estimate, not advice.

Input:

```json
{ "cases": [ { "id": "a", "monthlyNetIncome": 1000 }, { "id": "b", "monthlyNetIncome": 2500.5 } ] }
```

(or just `{ "monthlyNetIncome": 1000 }`)

Output item (one per case, abridged):

```json
{
  "id": "a", "status": "OK", "monthlyNetIncome": 1000,
  "table": "reducida", "bracket": 3, "bracketRange": "> 900 and < 1166.70 EUR/month",
  "baseMin": 849.67, "baseMax": 1166.7, "contributionRateTotal": 0.315, "quotaMin": 267.66,
  "breakdown": {
    "commonContingencies": { "rate": 0.283, "amount": 240.46 },
    "professionalContingencies": { "rate": 0.013, "amount": 11.05 },
    "mei": { "rate": 0.009, "amount": 7.65 },
    "cessation": { "rate": 0.009, "amount": 7.65 },
    "vocationalTraining": { "rate": 0.001, "amount": 0.85 }
  },
  "year": 2026, "legalBasis": "Orden PJC/297/2026 ... art. 18 ... art. 37.5 y 37.6 ...",
  "verifiedOn": "2026-10-12", "disclaimer": "Orientative estimate ...", "charged": true
}
```

Invalid case: `{ "id": "b", "status": "ERROR", "error": "monthlyNetIncome must be >= 0", "charged": false }`.

### Not included

Flat rate (tarifa plana), bonuses/reductions, pluriactividad, corporate (societarios) autonomos, regularization with real income, other regimes (agrario, mar), 2027 tables. Each quota component is rounded to cents; Social Security may differ by a cent. Tables may change: the Actor uses the official 2026 tables (extended by RDL 3/2026 until a new budget law, per project notes).

### Pricing

Pay per event: 0.005 USD per valid case (`calculation`). Invalid cases and the empty-input demo are free.

### Development

`npm test` runs the 20 verified ground-truth cases plus validation, demo and simulated charging in local SDK mode. `node scripts/publish.js --dry-run` shows the publish steps (nothing is sent).

# Actor input Schema

## `cases` (type: `array`):

Array of objects {"id": optional string/number echoed in the output, "monthlyNetIncome": number >= 0}. monthlyNetIncome is the average MONTHLY net income already computable for Social Security, in euros (annual income minus deductible expenses, minus the generic deduction of 7% or 3%, divided by months of activity; do not subtract the autonomo quotas). Max 5000 cases per run. Invalid cases return an error item and are not charged. Optional: if cases and monthlyNetIncome are empty, a free demo with 3 cases runs.

## `monthlyNetIncome` (type: `number`):

Shortcut for a single case: monthly net income in euros (>= 0). Added to the cases list if both are given.

## Actor input object example

```json
{
  "cases": [
    {
      "id": "example",
      "monthlyNetIncome": 1200
    }
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

Per case: table (reducida|general), bracket, base min/max, minimum monthly quota with breakdown by component, legal basis, verification date and disclaimer, or an error message for invalid cases.

## `summary` (type: `string`):

Counts of OK and invalid cases and charged events.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "cases": [
        {
            "id": "example",
            "monthlyNetIncome": 1200
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("delmiro/es-autonomo-calc").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "cases": [{
            "id": "example",
            "monthlyNetIncome": 1200,
        }] }

# Run the Actor and wait for it to finish
run = client.actor("delmiro/es-autonomo-calc").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "cases": [
    {
      "id": "example",
      "monthlyNetIncome": 1200
    }
  ]
}' |
apify call delmiro/es-autonomo-calc --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,delmiro/es-autonomo-calc"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ozRn53Ubhcgzrlx4Y/builds/Bf2zj2TR6b7uBRaWo/openapi.json
