Skip to main content
Retrieve information about all available subscription plans, including pricing and feature limits. This endpoint requires authentication and provides the same data as the public plans endpoint.
There is also a public version of this endpoint at GET /api/subscription/public-plans that doesn’t require authentication, useful for displaying pricing on landing pages.

Authentication

Requires a valid JWT token in the Authorization header.
Authorization: Bearer YOUR_JWT_TOKEN

Query Parameters

billing
string
default:"monthly"
Billing frequency to display prices for: “monthly” or “annual”. Annual billing shows discounted prices.

Response

plans
array
Array of available subscription plans.
id
string
Plan identifier: “FREE”, “BASIC”, “PRO”, or “ENTERPRISE”.
name
string
Plan name.
price
number
Plan price in MXN. For annual billing, this is the total annual price.
originalPrice
number
Original price before annual discount (only present for annual billing).
billing
string
Billing frequency: “monthly” or “annual”.
trialDays
number
Number of trial days available for this plan (30 for BASIC and PRO, null for others).
limits
object
Feature limits for this plan.
profiles
number
Maximum number of profiles (null = unlimited).
invoicesPerMonth
number
Maximum invoices per month (null = unlimited).
expensesPerMonth
number
Maximum expenses per month (null = unlimited).
exportPDF
boolean
PDF export enabled.
exportExcel
boolean
Excel export enabled.
reports
string
Report level: “basic”, “complete”, or “advanced”.
support
string
Support level: “none”, “email”, “priority”, or “dedicated”.
apiAccess
boolean
API access enabled.
satBasicSearchesPerMonth
number
SAT catalog basic searches per month (null = unlimited).
satAISearchesPerMonth
number
SAT catalog AI-powered searches per month (null = unlimited).
satMaxResults
number
Maximum results per SAT search (null = unlimited).
satHasAIExplanations
boolean
AI explanations for SAT suggestions.
satHasHistory
boolean
Search history enabled.
satHasFavorites
boolean
Favorites feature enabled.
satHasAlerts
boolean
Tax alerts enabled.
satHasLearning
boolean
Learning by RFC enabled.
satHasAdvancedRanking
boolean
Advanced ranking algorithm enabled.
billing
string
The billing frequency for the returned prices: “monthly” or “annual”.

Plan Comparison

FREE Plan

  • Price: $0 MXN/month
  • Profiles: 1
  • Invoices/Expenses: Unlimited
  • Exports: None
  • Reports: Basic
  • Support: None
  • API Access: No
  • SAT AI Searches: 5/month
  • SAT Results: Up to 2

BASIC Plan

  • Price: 299MXN/month(299 MXN/month (2,999 MXN/year)
  • Profiles: 5
  • Invoices/Expenses: Unlimited
  • Exports: PDF only
  • Reports: Complete
  • Support: Email
  • API Access: No
  • Public Reports: Yes (10 active tokens)
  • SAT AI Searches: 100/month
  • SAT Results: Up to 5
  • Trial: 30 days

PRO Plan

  • Price: 799MXN/month(799 MXN/month (7,999 MXN/year)
  • Profiles: 20
  • Invoices/Expenses: Unlimited
  • Exports: PDF + Excel
  • Reports: Advanced
  • Support: Priority
  • API Access: Yes
  • Public Reports: Yes (50 active tokens)
  • SAT Download: Yes (FIEL)
  • SAT AI Searches: Unlimited
  • SAT Results: Unlimited
  • All SAT Features: Yes
  • Trial: 30 days

ENTERPRISE Plan

  • Price: 1,499MXN/month(1,499 MXN/month (14,999 MXN/year)
  • Profiles: Unlimited
  • Invoices/Expenses: Unlimited
  • Exports: PDF + Excel
  • Reports: Advanced
  • Support: Dedicated
  • API Access: Yes
  • Public Reports: Unlimited tokens
  • SAT Download: Yes (FIEL)
  • SAT AI Searches: Unlimited
  • SAT Results: Unlimited
  • All SAT Features: Yes

Example Request (Monthly)

cURL
curl -X GET "https://api.tresacontafy.com/api/subscription/plans?billing=monthly" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Example Request (Annual)

cURL
curl -X GET "https://api.tresacontafy.com/api/subscription/plans?billing=annual" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Example Response

{
  "plans": [
    {
      "id": "FREE",
      "name": "FREE",
      "price": 0,
      "originalPrice": null,
      "billing": "monthly",
      "trialDays": null,
      "limits": {
        "profiles": 1,
        "invoicesPerMonth": null,
        "expensesPerMonth": null,
        "exportPDF": false,
        "exportExcel": false,
        "reports": "basic",
        "support": "none",
        "apiAccess": false,
        "satBasicSearchesPerMonth": null,
        "satAISearchesPerMonth": 5,
        "satMaxResults": 2,
        "satHasAIExplanations": false,
        "satHasHistory": false,
        "satHasFavorites": false,
        "satHasAlerts": false,
        "satHasLearning": false,
        "satHasAdvancedRanking": false
      }
    },
    {
      "id": "PRO",
      "name": "PRO",
      "price": 799,
      "originalPrice": null,
      "billing": "monthly",
      "trialDays": 30,
      "limits": {
        "profiles": 20,
        "invoicesPerMonth": null,
        "expensesPerMonth": null,
        "exportPDF": true,
        "exportExcel": true,
        "reports": "advanced",
        "support": "priority",
        "apiAccess": true,
        "satBasicSearchesPerMonth": null,
        "satAISearchesPerMonth": null,
        "satMaxResults": null,
        "satHasAIExplanations": true,
        "satHasHistory": true,
        "satHasFavorites": true,
        "satHasAlerts": true,
        "satHasLearning": true,
        "satHasAdvancedRanking": true
      }
    }
  ],
  "billing": "monthly"
}

Error Responses

401
error
Unauthorized - Invalid or missing JWT token.
500
error
Internal server error.

Public Endpoint

For unauthenticated access (e.g., pricing page), use:
cURL
curl -X GET "https://api.tresacontafy.com/api/subscription/public-plans?billing=annual"
The response format is identical to the authenticated endpoint.

Build docs developers (and LLMs) love