Platica

Planes

Un plan es un presupuesto en una moneda: una lista de partidas de ingreso y gasto que se repiten con cierta frecuencia.

El objeto plan

Campos

iduuid
Identificador del plan.
namestring
Nombre, hasta 100 caracteres.
currencystring
Moneda del plan. No cambia después de crearlo.
accountIduuid | null
Cuenta a la que caen los recordatorios de la agenda. Sin cuenta no hay recordatorios.
positioninteger
Orden en la lista.
itemsPlanItem[]
Solo en GET /plans/:id: las partidas del plan.

La partida

Campos de una partida

kindstring
INGRESO o GASTO.
namestring
Nombre, hasta 100 caracteres.
amountMinorinteger
Monto por ocurrencia en céntimos. 0 si la partida usa entries con montos propios.
frequencystring
MENSUAL, QUINCENAL, SEMANAL, PERSONALIZADO o ANUAL.
timesPerMonthinteger
Veces al mes, para PERSONALIZADO. Por defecto 1.
dayOfMonthinteger | null
Día del mes, 1 a 31.
dayOfMonth2integer | null
Segundo día, solo para QUINCENAL.
dayOfWeekinteger | null
Día de la semana para SEMANAL: 1 es lunes, 7 domingo.
startYearMonthinteger | null
Mes de inicio como AAAAMM, por ejemplo 202607.
endYearMonthinteger | null
Mes final como AAAAMM. null = no termina.
entriesobject[]
Montos y días distintos dentro del mes: { amountMinor, dayOfMonth }.
categoryIdstring | null
Categoría de la partida.
enabledboolean
Si cuenta en el plan.
remindboolean
Si genera recordatorios en la agenda.

Un gasto de una sola vez es una partida MENSUAL con el mismo startYearMonth y endYearMonth.

Listar planes

GET/plans

Plan: ProPermiso de la key: Solo lectura o superior

Devuelve tus planes sin sus partidas, ordenados por posición.

curl "https://api.tuplatica.app/api/platica/plans" \
  -H "Authorization: Bearer $PLATICA_API_KEY"

Respuesta 200

[
  {
    "id": "8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f",
    "name": "Mes normal",
    "currency": "VES",
    "position": 0,
    "accountId": "6f1c2a9e-8b4d-4c1e-9a7f-2d5e8b3c1a40",
    "createdAt": "2026-07-01T12:00:00.000Z",
    "updatedAt": "2026-10-01T12:00:00.000Z"
  }
]

Consultar un plan

GET/plans/:id

Plan: ProPermiso de la key: Solo lectura o superior

Devuelve el plan con todas sus partidas en items.

curl "https://api.tuplatica.app/api/platica/plans/8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f" \
  -H "Authorization: Bearer $PLATICA_API_KEY"

Respuesta 200

{
  "id": "8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f",
  "name": "Mes normal",
  "currency": "VES",
  "position": 0,
  "accountId": "6f1c2a9e-8b4d-4c1e-9a7f-2d5e8b3c1a40",
  "createdAt": "2026-07-01T12:00:00.000Z",
  "updatedAt": "2026-10-01T12:00:00.000Z",
  "items": [
    {
      "id": "5e7f9a1b-3c5d-4e7f-8a9b-1c3d5e7f9a2b",
      "planId": "8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f",
      "kind": "GASTO",
      "name": "Alquiler",
      "categoryId": "expense-housing",
      "categorySource": "manual",
      "amountMinor": 40000,
      "frequency": "MENSUAL",
      "timesPerMonth": 1,
      "dayOfMonth": 5,
      "dayOfMonth2": null,
      "dayOfWeek": null,
      "icon": "",
      "startYearMonth": 202607,
      "endYearMonth": null,
      "enabled": true,
      "remind": true,
      "entries": [],
      "installments": []
    }
  ]
}

Crear un plan

POST/plans

Plan: ProPermiso de la key: Lectura y escritura

Cuerpo

namestringobligatorio
Hasta 100 caracteres.
currencystringobligatorio
VES, USD, USDT, EUR, BRL o COP.
accountIduuid | null
Cuenta tuya para los recordatorios.
positioninteger
Por defecto 0.
iduuid
Tu propio id. Reenviarlo devuelve el plan existente.
curl -X POST "https://api.tuplatica.app/api/platica/plans" \
  -H "Authorization: Bearer $PLATICA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Mes normal",
    "currency": "VES",
    "accountId": "6f1c2a9e-8b4d-4c1e-9a7f-2d5e8b3c1a40"
  }'

Respuesta 201

{
  "id": "8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f",
  "name": "Mes normal",
  "currency": "VES",
  "position": 0,
  "accountId": "6f1c2a9e-8b4d-4c1e-9a7f-2d5e8b3c1a40",
  "createdAt": "2026-07-01T12:00:00.000Z",
  "updatedAt": "2026-10-01T12:00:00.000Z"
}

Editar o eliminar un plan

PATCH/plans/:id

Plan: ProPermiso de la key: Lectura y escritura

Acepta name, position y accountId. Envía "accountId": null para desvincular la cuenta. La moneda no se puede cambiar.

curl -X PATCH "https://api.tuplatica.app/api/platica/plans/8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f" \
  -H "Authorization: Bearer $PLATICA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Mes con vacaciones"
  }'
DELETE/plans/:id

Elimina el plan y deja de mostrarlo en la app. Responde 204 sin cuerpo.

Agregar una partida

POST/plans/:planId/items

Plan: ProPermiso de la key: Lectura y escritura

Cuerpo

kindstringobligatorio
INGRESO o GASTO.
namestringobligatorio
Hasta 100 caracteres.
amountMinorintegerobligatorio
Céntimos por ocurrencia, o 0 si usas entries.
frequencystring
Por defecto MENSUAL.
dayOfMonth, dayOfMonth2, dayOfWeekinteger
Según la frecuencia.
timesPerMonthinteger
Para PERSONALIZADO, 1 a 31.
startYearMonth, endYearMonthinteger
Vigencia como AAAAMM.
entriesobject[]
Montos por día dentro del mes. Cada uno: amountMinor (o null) y dayOfMonth (o null).
categoryIdstring
Categoría que coincida con el tipo. Si la omites, se sugiere a partir del nombre.
enabledboolean
Por defecto true.
remindboolean
Por defecto false. Con true, aparece en la agenda.
iduuid
Tu propio id.
curl -X POST "https://api.tuplatica.app/api/platica/plans/8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f/items" \
  -H "Authorization: Bearer $PLATICA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "GASTO",
    "name": "Alquiler",
    "amountMinor": 40000,
    "frequency": "MENSUAL",
    "dayOfMonth": 5,
    "startYearMonth": 202607,
    "remind": true
  }'

Respuesta 201

{
  "id": "5e7f9a1b-3c5d-4e7f-8a9b-1c3d5e7f9a2b",
  "planId": "8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f",
  "kind": "GASTO",
  "name": "Alquiler",
  "categoryId": "expense-housing",
  "categorySource": "manual",
  "amountMinor": 40000,
  "frequency": "MENSUAL",
  "timesPerMonth": 1,
  "dayOfMonth": 5,
  "dayOfMonth2": null,
  "dayOfWeek": null,
  "icon": "",
  "startYearMonth": 202607,
  "endYearMonth": null,
  "enabled": true,
  "remind": true,
  "entries": [],
  "installments": []
}

Las cuotas ya no van en planes

Enviar installments responde 409 con código PLAN_INSTALLMENTS_DEPRECATED. Para compras a crédito, préstamos o ventas fiadas usa obligaciones.

Editar o eliminar una partida

PATCH/plan-items/:id

Plan: ProPermiso de la key: Lectura y escritura

Mismos campos que al crear, todos opcionales. Si envías entries, reemplazan la lista completa. "categoryId": null vuelve a sugerir la categoría desde el nombre.

curl -X PATCH "https://api.tuplatica.app/api/platica/plan-items/5e7f9a1b-3c5d-4e7f-8a9b-1c3d5e7f9a2b" \
  -H "Authorization: Bearer $PLATICA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amountMinor": 45000
  }'
DELETE/plan-items/:id

Elimina la partida. Responde 204 sin cuerpo.

Proyección mes a mes

GET/plans/:id/forecast

Plan: ProPermiso de la key: Solo lectura o superior

Calcula el neto y el acumulado del plan para los próximos meses, con las mismas reglas que la app.

Parámetros de consulta

fromintegerobligatorio
Mes inicial como AAAAMM.
monthsintegerobligatorio
Cuántos meses proyectar, 1 a 60.
curl "https://api.tuplatica.app/api/platica/plans/8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f/forecast?from=202611&months=3" \
  -H "Authorization: Bearer $PLATICA_API_KEY"

Respuesta 200

[
  {
    "yearMonth": 202611,
    "netMinor": 160000,
    "cumulativeMinor": 160000,
    "endingNames": []
  },
  {
    "yearMonth": 202612,
    "netMinor": 160000,
    "cumulativeMinor": 320000,
    "endingNames": [
      "Curso de inglés"
    ]
  },
  {
    "yearMonth": 202701,
    "netMinor": 185000,
    "cumulativeMinor": 505000,
    "endingNames": []
  }
]

endingNames lista las partidas que terminan ese mes.

Flujo diario

GET/plans/:id/daily-flow

Plan: ProPermiso de la key: Solo lectura o superior

Lista cada ocurrencia del mes con su fecha y el saldo que va quedando.

Parámetros de consulta

yearMonthintegerobligatorio
Mes como AAAAMM.
startBalanceMinorintegerobligatorio
Saldo con el que empieza el mes, en céntimos.
curl "https://api.tuplatica.app/api/platica/plans/8c2d4e6f-1a3b-4c5d-9e7f-0a2b4c6d8e1f/daily-flow?yearMonth=202611&startBalanceMinor=100000" \
  -H "Authorization: Bearer $PLATICA_API_KEY"

Respuesta 200

[
  {
    "occurrence": {
      "date": "2026-11-01",
      "amountMinor": 200000,
      "itemName": "Salario",
      "kind": "INGRESO"
    },
    "runningBalanceMinor": 300000
  },
  {
    "occurrence": {
      "date": "2026-11-05",
      "amountMinor": 40000,
      "itemName": "Alquiler",
      "kind": "GASTO"
    },
    "runningBalanceMinor": 260000
  }
]

¿Dudas o algo no funciona? Escríbenos a [email protected]

Actualizado el 18 de octubre de 2026