Plan
Plan, renovación y límites.
Privacidad y analítica
Utilizamos cookies técnicas necesarias y, solo si das tu consentimiento, analítica y pixels de marketing para mejorar la web y medir campañas.
Plan, renovación y límites.
Solo lectura en todas las puertas.
Plan actual, estado, renovación y cuánto se ha usado de cada límite (trabajos, almacenamiento, personas). El gasto de IA no se muestra a la marca. Solo lectura: cambiar de plan se hace en su pantalla.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/subscriptions.read |
| Herramienta MCP | subscriptions_read |
| Alcance | subscriptions.read |
| Rol mínimo | Facturación |
| Confirmación humana | No |
| Puertas | Nödo, Voz, MCP, API, Chat, Pantallas, Apps |
| Estado | Disponible |
| Widget | usage |
Entrada
{}Salida
{
plan: string | null
status: string | null
renewsAt: string | null
limits: Array<{
key: string
label: string
used: number | null
limit: number | null
unit: string | null
}>
}Todo lo que se cobra solo cada periodo: el plan, los servicios contratados y lo comprado en la tienda, con su próximo cobro, importe con IVA, estado y quién cobra; y el método de pago guardado (marca y 4 últimas cifras).
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/subscriptions.screen.list |
| Herramienta MCP | subscriptions_screen_list |
| Alcance | subscriptions.read |
| Rol mínimo | Facturación |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
subscriptions: Array<{
id: string
kind: "plan" | "service" | "store"
name: string
planName: string | null
summary: string
cadence: {
interval: "day" | "week" | "month" | "year"
count: integer // 1–9007199254740991
}
| null
currency: string
amount: {
netMinor: integer // -9007199254740991–9007199254740991
taxMinor: integer // -9007199254740991–9007199254740991
grossMinor: integer // -9007199254740991–9007199254740991
}
| null
nextChargeAt: string | null
endsAt: string | null
status: "active" | "ending" | "paused" | "past_due" | "trialing" | "canceled"
channel: "stripe_auto" | "holded" | "manual" | "stripe" | null
}>
nextCharge: {
subscriptionId: string
name: string
date: string
grossMinor: integer // -9007199254740991–9007199254740991
currency: string
}
| null
monthlyGrossMinor: integer // -9007199254740991–9007199254740991
currency: string
paymentMethod: {
kind: "card" | "sepa_debit" | "other"
brand: string | null
last4: string | null
wallet: string | null
}
| null
}Una suscripción de servicios con sus líneas (cantidad y precio), el importe de cada periodo con IVA, el próximo cobro, quién cobra, el método de pago y sus últimos cobros.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/subscriptions.screen.get |
| Herramienta MCP | subscriptions_screen_get |
| Alcance | subscriptions.read |
| Rol mínimo | Facturación |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
subscriptionId: string // uuid
}Salida
{
subscription: {
id: string
kind: "plan" | "service" | "store"
name: string
planName: string | null
summary: string
cadence: {
interval: "day" | "week" | "month" | "year"
count: integer // 1–9007199254740991
}
| null
currency: string
amount: {
netMinor: integer // -9007199254740991–9007199254740991
taxMinor: integer // -9007199254740991–9007199254740991
grossMinor: integer // -9007199254740991–9007199254740991
}
| null
nextChargeAt: string | null
endsAt: string | null
status: "active" | "ending" | "paused" | "past_due" | "trialing" | "canceled"
channel: "stripe_auto" | "holded" | "manual" | "stripe" | null
startedAt: string | null
lines: Array<{
key: string
title: string
quantity: number
unit: string
unitNetMinor: integer | null
netMinor: integer | null
}>
charges: Array<{
orderId: string // uuid
periodStart: string | null
periodEnd: string | null
grossMinor: integer // -9007199254740991–9007199254740991
state: "paid" | "due" | "overdue" | "processing" | "scheduled" | "refunded"
}>
}
paymentMethod: {
kind: "card" | "sepa_debit" | "other"
brand: string | null
last4: string | null
wallet: string | null
}
| null
}Lo que la marca usa de su plan este mes (créditos de Nödo, voz, personas y Biblioteca), sus últimas facturas del plan con su estado y el PDF, y quién cobra el plan: si es App Store o Google Play, dónde se cambia o cancela, cuándo se renueva y lo que cobró la tienda; y, si un cobro falló, hasta cuándo dura la gracia; y lo que sus trabajos incluyeron este mes sin gastar del plan (imágenes y pasos de Nödo).
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/subscriptions.screen.plan |
| Herramienta MCP | subscriptions_screen_plan |
| Alcance | subscriptions.read |
| Rol mínimo | Facturación |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
invoices?: integer // 0–24 · default 3
}Salida
{
credits: {
mode: "credits"
available: number
monthly: number | null
resetsAt: string
}
| {
mode: "percent"
usedPercent: number | null
enabled: boolean
resetsAt: string
}
| null
voice: {
usedMinutes: number
includedMinutes: number | null
}
| null
people: {
used: number
included: number | null
}
| null
storage: {
usedMb: number
includedMb: number | null
maxFileMb: number | null
}
invoices: Array<{
id: string
date: string
number: string | null
concept: string
interval: "month" | "year" | null
grossMinor: integer // -9007199254740991–9007199254740991
currency: string
status: "paid" | "open" | "void" | "uncollectible" | "draft"
pdfUrl: string | null
}>
invoicesAvailable: boolean
payer: {
name: string
legalName: string | null
taxId: string | null
email: string | null
address: string | null
}
| null
paidBy: {
kind: "brand"
}
| {
kind: "workspace"
name: string
canPay: boolean
}
currency: string // default "EUR"
provider: "stripe" | "apple" | "google" | "manual" // default "stripe"
store: {
provider: "apple" | "google"
manageUrl: string
storeProductId: string | null
state: "active" | "grace" | "billing_retry" | "paused" | "pending" | "expired" | "revoked" | null
interval: "month" | "year" | null
renewsAt: string | null
autoRenew: boolean | null
price: {
grossMinor: integer // -9007199254740991–9007199254740991
currency: string
chargedAt: string
}
| null
sandbox: boolean
}
| null // default null
graceEndsAt: string | null // default null
includedInWorks: {
images: integer // -9007199254740991–9007199254740991
nodoSteps: integer // -9007199254740991–9007199254740991
works: integer // -9007199254740991–9007199254740991
}
| null // default null
}Cada función del plan de la marca con su valor, de dónde sale (el plan, una excepción o la prueba) y, en las excepciones, hasta cuándo. La misma puerta que usan la app, la API, el MCP y Nödo.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/subscriptions.plan.access |
| Herramienta MCP | subscriptions_plan_access |
| Alcance | subscriptions.read |
| Rol mínimo | Facturación |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
planId: string | null
planVersion: integer | null
features: Array<{
key: string
name: string
category: string
kind: "switch" | "limit" | "metered" | null
unit: string | null
reset: "week" | "month" | "year" | null
value: boolean | number | null
planValue: boolean | number | null
used: number
source: "plan" | "grant" | "trial" | "default"
grantEndsAt: string | null
resetsAt: string | null
}>
}El método de pago guardado de quien paga la marca (marca de tarjeta o domiciliación y 4 últimas cifras) y los próximos cobros automáticos, con su importe con IVA y si alguno falló o pide confirmarlo.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/subscriptions.screen.payment |
| Herramienta MCP | subscriptions_screen_payment |
| Alcance | subscriptions.read |
| Rol mínimo | Facturación |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
canManage: boolean
method: {
id: string
methodType: string
}
| null
charges: Array<{
subscriptionId: string
name: string
grossMinor: integer // -9007199254740991–9007199254740991
currency: string
}>
}Actualizado el 1 de enero de 1970