Saltar al contenido principal

API de Era

Endpoints, autenticación, paginación y límites de la API de Era, con solicitudes listas para copiar.

Última actualización: 1 de octubre de 2026

Todavía en beta

Estos endpoints funcionan hoy, pero la API todavía está evolucionando, así que algunos detalles pueden cambiar. Consulta la fecha de última actualización en la parte superior para ver cuándo se revisó esta página por última vez.

Inicio rápido

Antes de empezar necesitas una cuenta de Era con al menos una institución conectada: sin conexión no hay nada que estos endpoints puedan devolver.

  1. 1

    Inicia sesión en Era y conecta una institución, si aún no lo has hecho.

  2. 2

    Abre tus claves de API en el panel y crea una. La mayoría de los alcances vienen marcados; los que pueden mover dinero, comprar o vender inversiones, cambiar tu facturación, borrar tus documentos o crear más claves, no. Desmarca los que no necesites. Para leer necesitas banking:read, y para cambiar cualquier cosa, banking:write. También eliges una caducidad; no hay opción de que nunca caduque.

  3. 3

    Copia la clave y guárdala en un lugar seguro, como un gestor de secretos. Solo se muestra una vez, así que si la pierdes, crea una nueva.

  4. 4

    Mándala en un encabezado junto con tu petición.

cURL
curl "https://forge.era.app/api/banking/transactions?page=1&pageSize=20" \
  -H "X-API-Key: fmk_your_key_here"
Respuesta · 200
{
  "transactions": [ … ],
  "pagination": {
    "currentPage": 1,
    "pageSize": 20,
    "totalItems": 412,
    "totalPages": 21
  },
  "historyWindowApplied": true,
  "historyWindowFloorDate": "2026-06-28",
  "historyWindowHiddenCount": 137,
  "historyWindowEarliestDate": "2024-03-02",
  "historyWindowDegraded": false
}

¿Escribes tu propio cliente? Genéralo a partir del documento OpenAPI en https://forge.era.app/api/openapi/public.json. Describe todos los endpoints de esta página —cada campo, cada estado y cada tipo de filtro y acción de reglas—, y lo sirve la propia API, así que no se queda atrás.

Endpoints

Diecisiete endpoints: ocho de lectura y nueve de escritura.

Autenticación

Envía tu clave de una de estas dos formas:

Métodos de autenticación
Encabezado
X-API-Key: fmk_your_key_here
Token Bearer
Authorization: Bearer fmk_your_key_here

Toda petición va cifrada con TLS.

Las claves caducan, y tú eliges qué tan pronto al crearlas. Lo máximo son 90 días en el plan gratis y 365 en uno de pago; no existe la opción de que nunca caduquen, así que lo que construyas sobre esto necesita un plan para rotar la clave antes de que venza.

Encabezados de respuesta

Los encabezados X-RateLimit-* informan tu presupuesto diario, así que solo los verás en un plan que publique uno. Por ahora, solo lo publica el plan gratuito. Incluso ahí, tómalos como opcionales: una respuesta sin ellos significa que el conteo es desconocido, no que algo haya fallado. Todo 429 lleva Retry-After.

Encabezados de respuesta
X-RateLimit-Limit
El presupuesto diario de tu plan. Solo se envía en planes que publican un presupuesto diario, y nunca en un 429 de cualquier otro límite.
X-RateLimit-Remaining
Lo que queda de tu presupuesto diario. Nunca baja de cero. Solo se envía en planes que publican un presupuesto diario, y nunca en un 429 de cualquier otro límite.
X-RateLimit-Reset
Cuándo tu presupuesto diario libera una solicitud más, como marca de tiempo Unix en segundos. No es cuando se recarga el presupuesto entero: el presupuesto se renueva de forma continua, así que las solicitudes vuelven de una en una. Solo se envía en planes que publican un presupuesto diario, y nunca en un 429 de cualquier otro límite. El tope de ráfaga por minuto no tiene encabezado propio. Ver Límites
Retry-Aftersolo en un 429
Todo 429 lleva Retry-After: espera esos segundos y vuelve a intentarlo. Un 429 que además lleva los encabezados X-RateLimit-* lo rechazó el presupuesto diario del plan gratuito. Un 429 sin ellos lo rechazó otro límite, como el tope de ráfaga por minuto. Retry-After puede ir de un segundo a 24 horas. Ver Límites

Errores

La API devuelve estos códigos de estado de error:

  • 400

    Entrada malformada: un parámetro incorrecto, una actualización masiva vacía o con más de 100 elementos, una escritura que establece y borra el mismo campo en la misma llamada, o una regla que no se sostiene. Eliminar, activar o desactivar una regla también rechaza cualquier clave de consulta que no admita, y el 400 la nombra.

  • 401

    Sin clave, o una que no se puede interpretar. Envíala como cabecera X-API-Key o como token bearer.

  • 402

    Una cuota del plan se interpone. Hoy eso solo pasa al crear una categoría o una regla de patrón. Esperar no lo resuelve, pero un plan mayor sí. Llamar demasiado rápido es un 429.

  • 403

    La clave no lleva el alcance que esta llamada necesita — o, en cualquiera de las dos escrituras de transacciones, el id pertenece a otra persona o no existe. La API no distingue entre esos dos casos. Una regla de la biblioteca de Era responde con 403 si intentas eliminarla o cambiar su nombre, descripción, prioridad, fechas o applicationScope. Cambiar sus filtros, acciones o grupo da un 400.

  • 404

    Algo que no existe. El endpoint de saldo lo devuelve sin cuerpo para un accountGroupKey que no nombra ninguna cuenta, o que ni siquiera tiene forma de clave. Los endpoints de reglas lo devuelven para una clave de regla que no es tuya. Las transacciones nunca dan 404 — ver 403.

  • 409

    Algo más cambió la fila mientras escribías — en una regla, eso es una version que ya no es la actual. Léela de nuevo y envía tu escritura de nuevo. En una regla, un 409 también puede significar que sus acciones activarían reglas en bucle; en ese caso, cambia las acciones.

  • 429

    Demasiadas solicitudes. Gastaste tu presupuesto diario en el plan gratuito o llegaste a otro límite, como el tope de ráfaga por minuto. Retry-After dice cuánto esperar, de un segundo a 24 horas, y, a diferencia de un 402, esperar libera tu próxima solicitud. En Límites verás las cifras publicadas y lo que te dice un 429.

Formas de error

La mayoría de los errores vuelven con la misma forma: statusCode, message y un objeto errors que nombra lo que falló. No todos: un 401 y el 404 del endpoint de saldo vuelven sin cuerpo en absoluto, así que lee el estado antes que el cuerpo.

Ejemplo
{
  "statusCode": 403,
  "message": "One or more errors occurred!",
  "errors": {
    "generalErrors": ["Transaction does not belong to the authenticated user"]
  }
}

Errores comunes

  • Establecer un campo y borrarlo en la misma escritura — 400.

  • Más de 100 ids en una actualización masiva — 400, y no se cambia nada. Menos de uno es igual.

  • Una transacción que no es tuya, o que no existe — 403, nunca 404. Así que la respuesta nunca te dice si un id existe, solo que no es tuyo para verlo.

  • Algo más cambió la fila primero — 409.

Límites

Dos de los endpoints documentados limitan cuánto puedes pedir en una sola llamada. El resto no.

Sin tope por llamada no significa ilimitado. Las claves siguen caducando, las escrituras siguen teniendo límites de longitud de campo, crear una categoría o una regla de patrón puede alcanzar una cuota del plan, tu plan puede seguir ocultando historial antiguo y cada llamada cuenta para los límites de uso de tu plan, que se explican abajo.

  • Cuentas, saldo, resumen, las listas de categorías y etiquetas, crear una categoría, crear una etiqueta, la escritura de una sola transacción y todos los endpoints de reglas no tienen límite de volumen por llamada. Recibes el conjunto completo, o la única fila que nombraste — salvo la vista previa de una regla, que cuenta las coincidencias pero devuelve como máximo 50 de sus claves y 10 muestras.

  • pageSize se limita a 100, no se rechaza. Pide más y recibes 100 filas con un 200 — lee pagination.pageSize en la respuesta en vez de confiar en lo que enviaste.

  • La escritura masiva de transacciones está topada en 100 ids, y a diferencia de pageSize se rechaza en vez de limitarse: envía 101 y recibes un 400 sin que cambie nada.

  • Las claves caducan según el plazo que elijas al crearlas — hasta 90 días en el plan gratuito, 365 en uno de pago. No hay opción de que nunca caduquen.

  • Tu plan puede aplicar un límite de ventana de historial que oculta transacciones más antiguas. La respuesta de transacciones lleva los campos historyWindow que te dicen si se aplicó uno y dónde cayó.

Límites de tasa

Era publica dos límites de uso. Todos los planes tienen un tope de ráfaga: un límite de solicitudes en cualquier minuto móvil. El plan gratuito tiene además un presupuesto diario: un límite de solicitudes en cualquier periodo móvil de 24 horas. Una solicitud deja de contar para el tope de ráfaga un minuto después de hacerla, y para el presupuesto diario, un día después. Los planes de pago no tienen presupuesto diario publicado por ahora. Si te pasas de cualquiera de los dos, o de cualquier otro límite que aplique la API, la llamada vuelve con 429.

Los límites son de tu cuenta, no de una clave. Todas las claves REST que creas tiran del mismo tope de ráfaga y, en el plan gratuito, del mismo presupuesto diario, así que una segunda clave no te da más llamadas. Las llamadas a herramientas MCP se cuentan aparte, así que las llamadas REST y las MCP nunca gastan los límites de las otras.

Límites de uso por plan
PlanPresupuesto diarioTope de ráfaga
Básico100 al día10 por minuto
OrganizeNinguno30 por minuto
AutomateNinguno60 por minuto
OptimizeNinguno60 por minuto
OperateNinguno120 por minuto

Por ahora, los planes de pago no tienen presupuesto diario publicado.

Los planes de pago también funcionan con uso razonable: la API está pensada para scripts, tableros e integraciones con tus propios datos financieros, a un volumen propio de una persona.

Ningún encabezado informa el tope de ráfaga en ningún plan, así que guíate por la tabla. En el plan gratuito, X-RateLimit-Remaining puede marcar bastante más de cero justo antes de que una ráfaga vuelva con 429.

Qué te dice un 429

Qué límite te rechazó. Un 429 con los encabezados X-RateLimit-* viene del presupuesto diario del plan gratuito; uno sin ellos, de otro límite, como el tope de ráfaga. El cuerpo es problem-details, y su campo detail indica cuándo se libera tu próxima solicitud. Si te rechazó el presupuesto diario o el tope de ráfaga, además nombra ese límite, lo que permite y el plan que lo sube o lo quita, o que ya estás en el más alto. Está escrito para personas, así que lee los encabezados en lugar de analizarlo.

Respuesta 429, presupuesto diario
{
  "type": "https://httpstatuses.com/429",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "You've used up your daily budget of 100 requests. Your next request frees up at 2026-09-16T09:00:00Z. The Organize plan removes it."
}

Cada 429 lleva además Retry-After: un número entero de segundos, de un segundo a 24 horas. La espera del tope de ráfaga es de un minuto como mucho; el presupuesto diario del plan gratuito puede pedir las 24 horas completas. Una llamada rechazada no cuenta para ningún límite, pero no reintentes antes de tiempo: espera lo que indique Retry-After en cada 429. Con el presupuesto diario y el tope de ráfaga, un reintento anticipado se vuelve a rechazar, y cuando termina la espera se libera una solicitud, no todo el límite. Envíala y mira qué vuelve: otro Retry-After si se rechaza o, en el plan gratuito, los encabezados cuando se sirve.

Los límites de uso no protegen una clave que has perdido de vista. Una clave filtrada descuenta de los mismos límites que todas las demás claves de tu cuenta, y puede hacer todo lo que le permitan sus alcances. Revocarla no te devuelve las llamadas que ya hizo. Si tienes dudas sobre una clave, revócala. Mira Seguridad y gestión de claves más abajo.

Convenciones

Los campos de respuesta van en camelCase. Los nombres de los parámetros de consulta no distinguen mayúsculas de minúsculas, pero fuera de eso tienen que escribirse tal cual aparecen en esta página, así que pageSize y PageSize funcionan igual. La especificación publicada escribe la mayoría en PascalCase. La mayoría de los endpoints ignora una clave de consulta que no admite, así que un filtro mal escrito simplemente no filtra: revisa lo que te regresa. Las llamadas para eliminar, activar y desactivar una regla son la excepción: rechazan cualquier otra clave con un 400 que la nombra. Manda revert_retroactively con el guion bajo (revertRetroactively se rechaza) y solo al eliminar y al desactivar, porque activar solo admite version.

Un campo que nombra un día del calendario va en YYYY-MM-DD. Un campo que nombra un instante va en ISO 8601 con desfase horario.

Los tamaños de página se recortan, no se rechazan. Pide un pageSize de 500 y recibes 100 filas y un 200, no un error, así que lee de vuelta pagination.pageSize en lugar de confiar en lo que mandaste.

Una respuesta puede traer campos que esta página no lista. Ignora los que no reconozcas en vez de fallar por ellos: eso es lo que mantiene tu cliente funcionando conforme la API va creciendo.

REST es HTTP normal, así que no se necesita ningún SDK para llamarlo: cualquier lenguaje con un cliente HTTP ya sirve. No hay nada que instalar.

Versionado y cambios

La API está en beta, así que lo que está documentado aquí puede cambiar: un endpoint, un campo o cómo se comporta una llamada.

No hay número de versión en la ruta ni encabezado de versión. Cada endpoint tiene una versión activa, y es la que está documentada aquí.

Changelog

Lo que cambió en la Era Developer Platform, incluida la API de Era, de lo más reciente a lo más antiguo. No hay correo ni feed, así que consulta el changelog cuando planees trabajo con la API.

Seguridad y gestión de claves

Aprobar un agente crea una clave

Cuando apruebas un agente por OAuth, Era le crea una clave de API. Aparece en la misma lista del panel que las que creas tú, con un nombre que Era arma a partir del nombre del propio cliente.

Cómo se llama

Auto -- Claude

Lleva exactamente los alcances que aprobaste en esa pantalla, y nada más. Revócala desde el panel y el agente no podrá obtener acceso nuevo hasta que lo apruebes de nuevo. Un token que ya tenga sigue funcionando hasta que venza, como mucho en una hora.

Las escrituras aparecen en tu registro de actividad, las lecturas no

Crear y revocar una clave aparecen en tu registro de actividad, igual que cada llamada a una herramienta que hace un agente por MCP. Una escritura REST también aparece — como el cambio que hizo, por ejemplo una etiqueta creada o una transacción editada. Una lectura REST no genera ninguna entrada. Era registra estas entradas en todos los planes, pero leer el registro completo requiere Organize o superior: por debajo solo ves las entradas más recientes. Las entradas de una escritura muestran tu cuenta, no la clave que hizo el cambio.

Si alguna vez dudas de una clave, revócala. Una clave que creaste tú deja de funcionar en REST y en MCP desde su siguiente petición. La clave de un agente deja de obtener acceso nuevo al instante, y cualquier token que ya tenga vence en menos de una hora. Crear otra te cuesta un minuto.

Más cosas que conviene saber antes de confiar en una clave.
Los alcances son amplios
banking:read cubre mucho más que las lecturas de esta página: el mismo alcance cubre el resto de las lecturas de tu cuenta también — saldos, posiciones, conexiones, gastos. Un solo alcance, no hay opción más estrecha. Los de escritura también están en la lista, igual que los de lectura, así que trata cualquier clave como una contraseña. Actúa como tu cuenta de Era, no como una parte de ella.
banking:write cambia Era, no tu banco
banking:write solo cambia lo que guarda Era, no lo que tiene tu banco. No puede mover dinero ni hacer pagos. Igual que banking:read, banking:write es un solo alcance amplio. Cubre los cambios que puedes hacer tú mismo en Era, como la categoría, el nombre de comercio, la nota y el estado de revisión de una transacción; las categorías, las etiquetas y las reglas de automatización; los nombres que Era muestra para tus cuentas y cuáles ves; y las cuentas manuales con sus saldos y transacciones. Puede iniciar una conexión nueva, pero eres tú quien entra a tu banco, en el flujo del proveedor y no a través de la clave. Puede pedir una sincronización nueva, que solo lee, o desconectar una institución. Al desconectarla se termina el vínculo de Era, y tu cuenta en el banco sigue abierta y sin cambios.
Los alcances no se actualizan
Los alcances de una clave quedan fijos al crearla y no cambian después. Eso importa para todo lo que un alcance cubre y todavía no está disponible: si concedes social:write hoy, la clave lo seguirá teniendo cuando lleguen las vistas compartidas. Concede lo que estés usando ahora, no lo que quizá uses después.
No hace falta aprobación
Crear una clave no pasa por revisión ni lista de espera: nadie en Era aprueba la solicitud. Queda escrito en tu registro de actividad en el momento en que la creas, así que una clave desconocida es fácil de detectar.
El acceso al banco queda fuera de alcance
Una clave no alcanza el acceso a tu banco, porque Era nunca lo tiene. Lo escribes en el flujo de conexión que corre el proveedor de datos, no en una pantalla de Era; lo que Era guarda después es un token de acceso por conexión, cifrado en reposo con AES-256, que puedes tirar desconectando la institución.
Era solo guarda un hash de tu clave
Tu clave son 256 bits de datos aleatorios. Era le aplica SHA-256 y solo guarda el hash, así que si la pierdes, revócala y crea otra.

Recursos principales

Cuentas

GET/banking/accounts
Alcance necesariobanking:read

Todas las cuentas que puedes ver, en cada institución conectada, con el conteo de las que quedan fuera al lado: excludedAccountCount, dividido en tierExcludedAccountCount para las cuentas que deja fuera el límite de cuentas de tu plan y userExcludedAccountCount para las que ocultaste. accountLimit es cuántas cuentas muestra tu plan a la vez, sumando todas tus conexiones. accountLimitLift nombra el plan más barato con espacio para todas las cuentas que no ocultaste, y es null cuando tu plan no deja nada fuera. Cada cuenta lleva su accountGroupKey —el valor que el endpoint de saldo toma en su ruta— y el connectionId al que pertenece, así que esta es la primera llamada que debes hacer. Acepta connectionId para reducirlo a una sola conexión (los conteos se reducen con él; accountLimit y accountLimitLift no), e includeExcluded para incluir las cuentas que tu plan deja fuera y las que ocultaste.

Parámetros de consulta
connectionIdopcional
Reduce la lista a las cuentas de una sola conexión.
includeExcludedopcional
Incluye también las cuentas que tu plan deja fuera y las que ocultaste, con sus saldos retenidos. El campo visibility de cada fila te dice cuál es cuál: tierExcluded o userExcluded, y visible en las demás. El endpoint de saldo escribe estos valores de otra forma, así que no uses el mismo parser para los dos. excludedAccountCount sigue llegando cuando esto es true, y esas cuentas ya están en la lista, así que no sumes las dos cosas. Por defecto, false.
Respuesta · 200
{
  "accounts": [
    {
      "accountGroupKey": "uagr_7f3c9a21",
      "connectionId": "ucon_4b19e02c",
      "name": "Everyday Checking",
      "currentBalance": 4820.16,
      "supportsTransactions": true,
      …
    }
  ],
  "excludedAccountCount": 1
}

En una cuenta que has ocultado o que tu plan excluye, los campos de saldo vuelven como null y no como cero: null significa retenido, no vacío. supportsTransactions es null con el mismo sentido: quiere decir que Era no lo puede afirmar, nunca que la respuesta sea no. Lo mismo pasa con los campos del plan: si Era no pudo leer tu plan en esa llamada, tierExcludedAccountCount, userExcludedAccountCount, accountLimit y accountLimitLift vuelven todos como null. accountLimit también es null en un plan sin límite de cuentas, y accountLimitLift cuando ningún plan tiene más espacio o cuando tu plan no deja nada fuera.

Saldo de una cuenta

GET/banking/accounts/{accountId}/balance
Alcance necesariobanking:read

One account's balance, with the credit fields filled in when the account is a liability. The path takes that account's accountGroupKey — the same value /banking/accounts returns for it. The key is not checked for shape before the lookup, so a malformed key and an unknown one answer the same way.

Respuesta · 200
{
  "accountGroupKey": "uagr_7f3c9a21",
  "currentBalance": 4820.16,
  "availableBalance": 4712.03,
  "creditLimit": null,
  "currencyCode": "USD",
  "availableCredit": null,
  "asOf": "2026-08-11T09:32:00Z",
  "visibility": null
}

Una cuenta oculta, o una cuya conexión se cortó, sigue respondiendo 200, con los campos de saldo en null. Un 404 significa que la cuenta de verdad no está, o que la clave no tenía forma de clave. Fíjate aquí en el campo visibility: es null cuando la cuenta está visible, tier_excluded cuando el límite de cuentas de tu plan la deja fuera, user_excluded cuando tú la ocultaste y connection_severed cuando se cortó su conexión. Con tier_excluded, accountLimit es el límite de tu plan y accountLimitLift nombra el plan más barato con espacio para todas las cuentas que no ocultaste, esta incluida. accountLimitLift es null en cualquier otro estado, y con connection_severed accountLimit también es null.

Resumen de cuentas

GET/banking/accounts/summary
Alcance necesariobanking:read

Los totales de las cuentas que puedes ver, por defecto las reales: totalAssets, totalLiabilities y netWorthHint, que es el primero menos el segundo. Pasa simulationModes para elegir qué modos cuentan: la lista de cuentas y los totales abarcan solo los que indiques. includedSimulationModes indica qué modos abarcan, en cada respuesta. simulationExcludedAccountCount cuenta las cuentas que puedes ver y que se dejaron fuera por su modo. totalHiddenCount es una cifra aparte: las cuentas que oculta tu plan o tu propio ajuste de visibilidad, en cualquier modo, y nunca las que simulationModes dejó fuera.

Parámetros de consulta
simulationModesopcional
Qué tipos de cuenta sumar: live para dinero real, paper para la cuenta de prácticas de un bróker, scenario para una hipotética. Repite el parámetro para pedir más de uno, como en simulationModes=live&simulationModes=paper. Si lo omites, solo se suman las cuentas reales. Un valor vacío o desconocido se rechaza con un 400 que lista los permitidos.
Respuesta · 200
{
  "userId": "7d1c0b93a8e24f60",
  "accounts": [ … ],
  "totalVisibleCount": 6,
  "totalHiddenCount": 2,
  "totalAssets": 48210.75,
  "totalLiabilities": 9327.40,
  "netWorthHint": 38883.35,
  "includedSimulationModes": [ "live" ],
  "simulationExcludedAccountCount": 0,
  "computedAt": "2026-08-11T09:32:00Z"
}

netWorthHint solo cuenta las cuentas de esta respuesta, y dos cifras te dicen lo que deja fuera. simulationExcludedAccountCount son las cuentas fuera de los modos que pediste. totalHiddenCount son las cuentas que se te ocultan en cualquier modo. Se divide en dos: tierExcludedAccountCount para las que deja fuera el límite de cuentas de tu plan, y userExcludedAccountCount para las que ocultaste tú. Ambas son null si Era no pudo leer tu plan en esa llamada. accountLimitLift nombra el plan más barato que recupera las primeras, y es null cuando no hay ninguna. Toma netWorthHint como una cifra de partida y no como tu patrimonio neto definitivo.

Transacciones

GET/banking/transactions
Alcance necesariobanking:read

Tus transacciones, de página en página, envueltas junto con los conteos de paginación. Acepta page y pageSize (100 es el tope), además de filtros opcionales por cuenta, rango de fechas, reglas aplicadas y etiquetas asignadas.

Parámetros de consulta
accountIdopcional
Reduce a las transacciones de una cuenta, por su accountGroupKey.
fromDateopcional
Solo transacciones en esta fecha o después.
toDateopcional
Solo transacciones en esta fecha o antes.
pageopcional
Número de página, empieza en 1. Por defecto, 1.
pageSizeopcional
Filas por página. Por defecto, 50; se limita a 100.
sortByopcional
Campo por el que ordenar: transactionDate, amount, description, category o merchantName.
sortDirectionopcional
asc o desc. Por defecto, descendente.
categoryKeysopcional
Only transactions in these categories, by their fcat_ keys. Takes a list, not a single key, and a transaction matches if its effective category is any one of them. Send the literal "uncategorized" to select the transactions that have no category at all.
searchopcional
Búsqueda de texto completo en comercio, descripción, categoría, nombre de cuenta y monto.
ruleIdsopcional
Solo transacciones que tocó una regla de automatización, por la clave de la regla.
tagKeysopcional
Solo transacciones que llevan alguna de estas etiquetas.
reviewStatusesopcional
needs_review, reviewed o flagged. Acepta una lista; una transacción coincide si su estado de revisión es cualquiera de ellos.
includeChildrenopcional
With a category filter set, also include transactions in the subcategories of every key you passed. Defaults to false.
includePendingopcional
Devuelve también los cargos pendientes de los últimos 7 días, marcados con isPending. Por defecto, false. Las filas pendientes son de solo lectura.
Respuesta · 200
{
  "transactions": [ … ],
  "pagination": {
    "currentPage": 1,
    "pageSize": 20,
    "totalItems": 412,
    "totalPages": 21
  },
  "historyWindowApplied": true,
  "historyWindowFloorDate": "2026-06-28",
  "historyWindowHiddenCount": 137,
  "historyWindowEarliestDate": "2024-03-02",
  "historyWindowDegraded": false
}

Tu plan puede aplicar un límite de ventana de historial, que oculta las transacciones más antiguas que él. Por eso la respuesta trae los campos historyWindow: historyWindowApplied te dice que el límite sí ocultó algo, historyWindowFloorDate es dónde cayó, historyWindowHiddenCount cuántas filas quedaron detrás, e historyWindowEarliestDate hasta dónde llega de verdad tu historial. Sin ellos, un resultado corto es indistinguible de una cuenta sin transacciones más antiguas. Dos de ellos cambian lo que escribes: historyWindowHiddenCount puede llegar como null aunque el límite sí se haya aplicado, así que lee null como desconocido y no como cero; y cuando historyWindowDegraded es true, Era no pudo confirmar tu plan en esa lectura, así que la fecha del límite es una suposición, no un hecho. En una lectura de pago confirmada no se aplica ningún límite y historyWindowApplied vuelve como false. El límite de cuentas de tu plan también deja transacciones fuera: tierExcludedAccountCount te dice cuántas de tus cuentas quedan fuera de esta lectura por ese límite, y userExcludedAccountCount cuántas ocultaste, las dos reducidas a la cuenta por la que filtras, si filtras por una. Las dos son null cuando Era no pudo leer tu plan en esa llamada.

Recorrer un historial largo página por página gasta solicitudes. Tu plan limita qué tan rápido puedes llamar y, en el plan gratuito, cuántas llamadas tienes al día; los planes de pago funcionan con uso razonable. En Límites están las cifras por plan, los encabezados de límite y lo que te dice un 429.

Cambiar una transacción

Hay cuatro cosas en una transacción que puedes anular: su categoría, el nombre de comercio, una nota propia y su estado de revisión. Manda solo las que estés cambiando —lo que omitas se queda como está. El id de la ruta es la clave utgr_ de la transacción. Necesita banking:write en vez de banking:read, pero solo cambia la copia de Era de la transacción: la de tu banco se queda como estaba.

PUT/banking/transactions/{id}
Alcance necesariobanking:write
Cuerpo de la solicitud
categoryKeyopcional
La clave fcat_ de la categoría que quieres asignar. Si la omites, la transacción conserva la categoría que tiene.
merchantNameopcional
Un nombre de comercio propio, de hasta 1000 caracteres. Si lo omites, se mantiene el nombre actual.
descriptionopcional
Una nota propia sobre esta transacción, de hasta 5000 caracteres. Si la omites, se mantiene la nota actual.
clearCategoryopcional
Quita tu categoría manual, así que vuelve a mandar la categorización propia de Era. Por defecto, false.
clearMerchantNameopcional
Quita tu nombre de comercio manual, así que vuelve el nombre que mandó tu banco. Por defecto, false.
clearDescriptionopcional
Quita tu descripción manual, así que vuelve la descripción que mandó tu banco. Por defecto, false.
reviewStatusopcional
Márcala como needs_review, reviewed o flagged.
clearReviewStatusopcional
Quita tu estado de revisión manual. Por defecto, false.
Respuesta · 200
{
  "transaction": { … }
}

Recibes de vuelta la transacción completa actualizada, en la misma forma que devuelve la lista de arriba —no se reimprime aquí, porque es grande y todavía cambia mientras la API esté en beta. Definir un campo y limpiarlo en la misma llamada devuelve 400. Una transacción que no es tuya, o que no existe, devuelve 403 —la API no distingue entre esos dos casos. Y si algo más cambió la misma fila mientras escribías, recibes 409: léela otra vez y mándala otra vez.

Cambiar hasta 100 a la vez

Las mismas cuatro anulaciones, aplicadas a una lista de transacciones en una sola llamada. Cada id de la lista recibe los mismos cambios —no hay variación por transacción. Necesita banking:write en vez de banking:read, pero solo cambia las copias de Era de esas transacciones: las de tu banco se quedan como estaban.

PUT/banking/transactions/bulk
Alcance necesariobanking:write
Cuerpo de la solicitud
transactionIds
Las claves utgr_ de las transacciones que quieres cambiar. Al menos una, y no más de 100. Pasar de 100 se rechaza en vez de recortarse —a diferencia de pageSize arriba, recibes un 400 y no cambia nada.
categoryKeyopcional
La clave fcat_ de la categoría que quieres asignar. Si la omites, la transacción conserva la categoría que tiene.
merchantNameopcional
Un nombre de comercio propio, de hasta 1000 caracteres. Si lo omites, se mantiene el nombre actual.
descriptionopcional
Una nota propia sobre esta transacción, de hasta 5000 caracteres. Si la omites, se mantiene la nota actual.
clearCategoryopcional
Quita tu categoría manual, así que vuelve a mandar la categorización propia de Era. Por defecto, false.
clearMerchantNameopcional
Quita tu nombre de comercio manual, así que vuelve el nombre que mandó tu banco. Por defecto, false.
clearDescriptionopcional
Quita tu descripción manual, así que vuelve la descripción que mandó tu banco. Por defecto, false.
reviewStatusopcional
Márcala como needs_review, reviewed o flagged.
clearReviewStatusopcional
Quita tu estado de revisión manual. Por defecto, false.
Respuesta · 200
{
  "transactions": [ … ]
}

Recibes de vuelta las transacciones actualizadas, en la misma forma que devuelve la lista de arriba. Definir un campo y limpiarlo en la misma llamada devuelve 400, y también una lista vacía. Una lista que incluye una transacción que no es tuya, o que no existe, devuelve 403 para toda la llamada —no se cambia nada. Si algo más cambió alguna de esas filas mientras escribías, recibes 409: léelas otra vez y mándalas otra vez.

Categorías

GET/banking/categories
Alcance necesariobanking:read

Toda la taxonomía de categorías: cada conjunto de categorías, con sus subcategorías anidadas dentro. La taxonomía es compartida, no por cuenta.

Respuesta · 200
{
  "packs": [
    {
      "packSlug": "default",
      "packName": "Era default categories",
      "isDefault": true,
      "categories": [
        {
          "projectionKey": "fcat_food_dining",
          "categoryName": "Food & dining",
          "isTopLevel": true,
          "children": [ … ]
        }
      ]
    }
  ],
  "meterLimit": 25,
  "canCreateCustomCategories": true
}

Agregar una categoría

Una categoría definida por el usuario bajo un padre existente. Necesita banking:write en vez de banking:read, pero solo cambia tus categorías en Era: en tu banco no cambia nada.

POST
Alcance necesariobanking:write
Cuerpo de la solicitud
slug
Identificador apto para URL: letras minúsculas, números y guiones, de 2 a 50 caracteres.
parentCategoryKey
La clave fcat_ de la categoría bajo la que se anida esta.
name
Nombre para mostrar.
descriptionopcional
Descripción opcional.
iconNameopcional
Nombre de ícono opcional.
spendingTypeopcional
Clasificación de gasto opcional.
displayOrderopcional
Posición de orden opcional entre sus hermanas.
assignmentEligibilityopcional
Regla opcional sobre a qué transacciones se puede asignar esta categoría.
sourceSystemKeysopcional
Lista opcional de claves de categorías existentes cuyas transacciones deben enrutarse aquí de ahora en adelante.
applyRetroactivelyopcional
Si es true, también reevalúa las transacciones pasadas contra el nuevo enrutado. Por defecto, false.
Respuesta · 201
{
  "categoryKey": "fcat_side_hustle_9f2a",
  "overlayProjectionKey": "fcov_9f2a1c",
  "action": "created",
  "isQuotaExceeded": false,
  "createdMappingRuleKeys": [ … ],
  …
}

La respuesta también lleva retroactiveAffectedCount, mergeSourcesHiddenCount y mergeSourcesTotalCount, que esta página no cubre, además de isQuotaExceeded, quotaExceededMessage y meterGate, que en una categoría creada siempre valen false, null y null. Si la cuota de tu plan rechaza la creación, recibes un 402 sin ninguno de esos campos: su cuerpo es statusCode, message y errors.generalErrors, cuya única entrada te dice qué límite alcanzaste.

Etiquetas

GET/banking/tags
Alcance necesariobanking:read

Todas las etiquetas de tu cuenta, en una sola lista. Sin paginación: una sola respuesta te las devuelve todas.

Parámetros de consulta
tagTypeopcional
Filtra por origen de la etiqueta: user, system o auto.
includeDeletedopcional
Incluye las etiquetas eliminadas. Por defecto, false.
Respuesta · 200
{
  "tags": [
    {
      "tagKey": "utag_9c2f01ab",
      "name": "business-expense",
      "displayName": "Business expense",
      "tagType": "user",
      "color": "#6DC6BA",
      "transactionCount": 42
    }
  ]
}

Crear una etiqueta

Una etiqueta nueva, normalizada en minúsculas. Necesita banking:write en vez de banking:read, pero solo cambia tus etiquetas en Era: en tu banco no cambia nada. Las etiquetas de sistema no se pueden crear con la API; las de tipo user y auto, sí.

POST
Alcance necesariobanking:write
Cuerpo de la solicitud
name
El nombre canónico de la etiqueta.
displayNameopcional
Nombre para mostrar opcional. Por defecto, el nombre canónico.
tagTypeopcional
user or auto. Defaults to user. system is refused — it is reserved for tags Era creates itself.
coloropcional
Color hexadecimal opcional para mostrar.
iconopcional
Nombre de ícono opcional.
Respuesta · 201
{
  "tag": {
    "tagKey": "utag_9c2f01ab",
    "name": "business-expense",
    "displayName": "Business expense",
    "tagType": "user",
    "version": 1,
    "createdAt": "2026-08-26T09:15:00Z"
  }
}

Reglas

GET/banking/rules
Alcance necesariobanking:read

Todas las reglas de automatización de tu cuenta —las que creaste y las que Era te configuró a partir de su biblioteca de reglas—, cada una con sus condiciones (filters), lo que hace (actions), si está activada y su versión. Sin paginación: una sola respuesta te las devuelve todas. Las reglas desactivadas no aparecen, a menos que las pidas.

Parámetros de consulta
includeInactiveopcional
Devuelve también las reglas desactivadas. Por defecto, false.
Respuesta · 200
{
  "rules": [
    {
      "id": "rule_4c1e7a90",
      "ruleName": "Coffee shops",
      "isActive": true,
      "version": 3,
      "priority": 10,
      "filters": [{ "type": "merchant_match", "pattern": "Blue Bottle", "mode": "contains" }],
      "actions": [{ "type": "set_category", "categoryKey": "fcat_coffee_shops", "categoryDisplayName": "Coffee shops" }],
      "source": "user",
      "matchedTransactionCount": 42,
      …
    }
  ]
}

filters y actions son listas de objetos tipados. Cada uno indica su tipo en un campo type —merchant_match o category entre los filtros, set_category o add_tag entre las acciones—, y el documento OpenAPI enlazado en el inicio rápido enumera todos los tipos y los campos que admite cada uno.

Crear una regla

Una nueva regla de automatización: condiciones que seleccionan transacciones y lo que le pasa a cada una que las cumple. Se aplica a cada transacción nueva a partir de entonces y, si lo pides, también a las que ya tienes. Necesita banking:write en vez de banking:read, pero solo cambia tus reglas y transacciones en Era: en tu banco no cambia nada.

POST
Alcance necesariobanking:write
Cuerpo de la solicitud
ruleName
Un nombre para la regla.
descriptionopcional
Una nota opcional sobre para qué sirve la regla.
priorityopcional
Dónde se ejecuta la regla entre las demás: la más alta va primero, y cuando dos reglas establecerían lo mismo en una transacción, gana la más alta. Por defecto, cero.
filters
Las condiciones, como una lista de objetos de filtro tipados: cada uno indica su tipo en un campo type. Una transacción tiene que cumplirlas todas; anida filtros and, or y not para combinarlas de otra forma. Al menos una. Un filtro account_type que indica tipos de cuenta solo funciona en una regla de patrón; en una regla de transacción se rechaza con un 400.
actions
Lo que le pasa a cada transacción que cumple la regla, como una lista de objetos de acción tipados: asignar una categoría, agregar o quitar una etiqueta, renombrar el comercio, reescribir la descripción, fijar un estado de revisión, ocultarla o marcarla como transferencia. Al menos una, y no más de una de cada tipo, salvo las acciones de etiquetas. Cada etiqueta tiene que existir ya, y solo puede aparecer una vez.
isActiveopcional
Si la regla empieza activada. Por defecto, true.
applyRetroactivelyopcional
Aplica la regla también a las transacciones que ya tienes, no solo a las nuevas. Solo tiene efecto si la regla empieza activada. Por defecto, false.
appliesFromopcional
Solo transacciones de esta fecha o posteriores.
appliesToopcional
Solo transacciones de esta fecha o anteriores.
applicationScopeopcional
Cuándo se ejecuta la regla: prospective solo para transacciones nuevas, retroactive cuando se aplica sobre las existentes, o both. Por defecto, both.
ruleScopeopcional
transaction, el valor por defecto, evalúa las transacciones de una en una. pattern detecta un patrón entre varias —un cargo recurrente, un par de transferencias— descrito por patternSpec.
triggerModeopcional
En una regla de patrón, cuándo buscar el patrón: onEachTransaction, onBatchComplete, onSchedule u onDemand. Por defecto, onEachTransaction.
patternSpecopcional
En una regla de patrón, el patrón que se busca, como objeto tipado. Obligatorio cuando ruleScope es pattern.
windowDaysopcional
En una regla de patrón, cuántos días hacia atrás buscar el resto del patrón, entre 1 y 365. Obligatorio cuando ruleScope es pattern.
windowLookaheadDaysopcional
En una regla de patrón, cuántos días hacia adelante buscar el resto del patrón.
windowExcludeTriggerAccountopcional
En una regla de patrón, deja fuera de la búsqueda la cuenta de la transacción que inició la comprobación. Por defecto, false.
groupopcional
El grupo en el que se archiva la regla: spendingHabits, problemsAndAnomalies, incomeAndTransfers, subscriptionsAndRecurring o taxAndRecordKeeping. Omítelo para no archivarla en ninguno. categoryMapping está reservado para reglas que crea la propia Era y se rechaza con un 400.
Respuesta · 201
{
  "rule": { … },
  "retroactiveStatus": "completed",
  "affectedTransactionCount": 18
}

retroactiveStatus es null salvo que hayas pedido a la llamada que aplique la regla a transacciones que ya tenías, o que deshaga lo que hizo. completed significa que ese trabajo terminó antes de la respuesta; in_progress, que sigue en marcha, así que affectedTransactionCount aún no es definitivo; queue_full, que la cola estaba llena y no llegó a empezar, aunque el cambio de la regla sí se guardó; partial_success, que solo una parte salió adelante: algunos cambios no se guardaron, o solo se puso en cola parte del trabajo.

Probar una regla

Prueba las condiciones de una regla con tus transacciones recientes y te dice lo que cumplirían, sin guardar nada: cuántas coincidieron de cuántas se revisaron, hasta 50 de las claves de las coincidencias y hasta 10 muestras. Una regla de transacción revisa los últimos 90 días, como máximo 5,000 transacciones, y sus muestras llevan comercio, monto y fecha. Las muestras de una regla de patrón llevan detectionReason, el motivo por el que se detectó el patrón (que puede venir vacío), y ni comercio, ni monto, ni fecha. No se escribe nada, así que basta con banking:read.

POST/banking/rules/preview
Alcance necesariobanking:read
Cuerpo de la solicitud
filters
Las condiciones, como una lista de objetos de filtro tipados: cada uno indica su tipo en un campo type. Una transacción tiene que cumplirlas todas; anida filtros and, or y not para combinarlas de otra forma. Al menos una. Un filtro account_type que indica tipos de cuenta solo funciona en una regla de patrón; en una regla de transacción se rechaza con un 400.
ruleScopeopcional
transaction, el valor por defecto, evalúa las transacciones de una en una. pattern detecta un patrón entre varias —un cargo recurrente, un par de transferencias— descrito por patternSpec.
patternSpecopcional
En una regla de patrón, el patrón que se busca, como objeto tipado. Obligatorio cuando ruleScope es pattern.
windowDaysopcional
En una regla de patrón, cuántos días hacia atrás buscar el resto del patrón, entre 1 y 365. Obligatorio cuando ruleScope es pattern.
Respuesta · 200
{
  "matchCount": 12,
  "totalEvaluated": 418,
  "matchingGroupKeys": ["utgr_5d0e2b77", … ],
  "sampleMatches": [
    {
      "groupKey": "utgr_5d0e2b77",
      "merchantName": "Blue Bottle Coffee",
      "amount": -6.25,
      "currency": "USD",
      "transactionDate": "2026-09-12"
    },
    …
  ]
}

Cambiar una regla

Reemplaza la definición de una regla por la que envías, así que envía todos los campos que quieras conservar, no solo los que cambias. El ruleId de la ruta es el id que devuelve la lista de reglas, y version tiene que ser la que leíste por última vez. En una regla de la biblioteca de Era solo puede cambiar userOverrides: envía todo lo demás tal como lo devolvió la lista. Necesita banking:write en vez de banking:read, pero solo cambia tus reglas y transacciones en Era: en tu banco no cambia nada.

PUT/banking/rules/{ruleId}
Alcance necesariobanking:write
Cuerpo de la solicitud
versionopcional
La versión de la regla tal como la leíste por última vez. Tiene que coincidir con la versión actual de la regla o la llamada se rechaza con un 409, así que omitirla no se salta la comprobación: la hace fallar.
ruleName
Un nombre para la regla.
descriptionopcional
Una nota opcional sobre para qué sirve la regla.
priorityopcional
Dónde se ejecuta la regla entre las demás: la más alta va primero, y cuando dos reglas establecerían lo mismo en una transacción, gana la más alta. Por defecto, cero.
filters
Las condiciones, como una lista de objetos de filtro tipados: cada uno indica su tipo en un campo type. Una transacción tiene que cumplirlas todas; anida filtros and, or y not para combinarlas de otra forma. Al menos una. Un filtro account_type que indica tipos de cuenta solo funciona en una regla de patrón; en una regla de transacción se rechaza con un 400.
actions
Lo que le pasa a cada transacción que cumple la regla, como una lista de objetos de acción tipados: asignar una categoría, agregar o quitar una etiqueta, renombrar el comercio, reescribir la descripción, fijar un estado de revisión, ocultarla o marcarla como transferencia. Al menos una, y no más de una de cada tipo, salvo las acciones de etiquetas. Cada etiqueta tiene que existir ya, y solo puede aparecer una vez.
applyRetroactivelyopcional
Vuelve a aplicar la regla cambiada a las transacciones que ya tienes, deshaciendo antes lo que la versión anterior les hizo. Por defecto, false.
appliesFromopcional
Solo transacciones de esta fecha o posteriores.
appliesToopcional
Solo transacciones de esta fecha o anteriores.
applicationScopeopcional
Cuándo se ejecuta la regla: prospective solo para transacciones nuevas, retroactive cuando se aplica sobre las existentes, o both. Por defecto, both.
userOverridesopcional
En una regla de la biblioteca de Era, tus propios valores para los ajustes que te deja modificar, como un objeto tipado del mismo tipo que el patrón de la regla. Se ignora en las reglas que creaste.
groupopcional
El grupo en el que se archiva la regla, de la misma lista que acepta la creación. El cambio reemplaza la definición entera, así que omitirlo borra el grupo de la regla: envía su grupo actual para conservarlo. En una regla de la biblioteca de Era, omítelo o envía el grupo que ya tiene.
Respuesta · 200
{
  "rule": { … },
  "retroactiveStatus": null,
  "affectedTransactionCount": 0
}

retroactiveStatus es null salvo que hayas pedido a la llamada que aplique la regla a transacciones que ya tenías, o que deshaga lo que hizo. completed significa que ese trabajo terminó antes de la respuesta; in_progress, que sigue en marcha, así que affectedTransactionCount aún no es definitivo; queue_full, que la cola estaba llena y no llegó a empezar, aunque el cambio de la regla sí se guardó; partial_success, que solo una parte salió adelante: algunos cambios no se guardaron, o solo se puso en cola parte del trabajo.

Activar una regla

Vuelve a activar una regla para que se aplique de nuevo a las transacciones nuevas. Activar una regla que ya está activada no cambia nada. Las reglas de la biblioteca de Era se pueden activar y desactivar igual que las tuyas. Necesita banking:write en vez de banking:read, pero solo cambia tus reglas y transacciones en Era: en tu banco no cambia nada.

POST/banking/rules/{ruleId}/enable
Alcance necesariobanking:write
Parámetros de consulta
versionopcional
La versión de la regla tal como la leíste por última vez. Omítela para saltarte la comprobación; si la envías, la llamada se rechaza con un 409 cuando la regla cambió desde entonces.
Respuesta · 200
{
  "rule": { … },
  "retroactiveStatus": null,
  "affectedTransactionCount": 0
}

Desactivar una regla

Desactiva una regla para que deje de aplicarse a las transacciones nuevas. Conserva su definición, y lo que ya hizo se mantiene, a menos que lo pidas de vuelta con revert_retroactively. Desactivar una regla que ya está desactivada la deja desactivada. Necesita banking:write en vez de banking:read, pero solo cambia tus reglas y transacciones en Era: en tu banco no cambia nada.

POST/banking/rules/{ruleId}/disable
Alcance necesariobanking:write
Parámetros de consulta
versionopcional
La versión de la regla tal como la leíste por última vez. Omítela para saltarte la comprobación; si la envías, la llamada se rechaza con un 409 cuando la regla cambió desde entonces.
revert_retroactivelyopcional
Deshace también lo que la regla ya hizo en tus transacciones: las categorías, etiquetas y otros cambios que aplicó. Por defecto, false, lo que deja esos cambios como están.
Respuesta · 200
{
  "rule": { … },
  "retroactiveStatus": null,
  "affectedTransactionCount": 0
}

retroactiveStatus es null salvo que hayas pedido a la llamada que aplique la regla a transacciones que ya tenías, o que deshaga lo que hizo. completed significa que ese trabajo terminó antes de la respuesta; in_progress, que sigue en marcha, así que affectedTransactionCount aún no es definitivo; queue_full, que la cola estaba llena y no llegó a empezar, aunque el cambio de la regla sí se guardó; partial_success, que solo una parte salió adelante: algunos cambios no se guardaron, o solo se puso en cola parte del trabajo.

Eliminar una regla

Elimina una regla para siempre. Para detener una regla sin perderla, desactívala. El ruleId de la ruta es el id que devuelve la lista de reglas, y version tiene que ser la que leíste por última vez. Las reglas de la biblioteca de Era no se pueden eliminar, solo desactivar. Necesita banking:write en vez de banking:read, pero solo cambia tus reglas y transacciones en Era: en tu banco no cambia nada. Pedir a una eliminación que haga revert_retroactively es un único intento: si vuelve con queue_full, la regla ya no existe y no queda nada contra lo que reintentar. Para eliminar una regla y deshacer lo que hizo, desactívala primero con revert_retroactively — puedes repetirlo hasta que se acepte — y después elimínala.

DELETE/banking/rules/{ruleId}
Alcance necesariobanking:write
Parámetros de consulta
versionopcional
La versión de la regla tal como la leíste por última vez. Tiene que coincidir con la versión actual de la regla o la llamada se rechaza con un 409, así que omitirla no se salta la comprobación: la hace fallar.
revert_retroactivelyopcional
Deshace también lo que la regla ya hizo en tus transacciones: las categorías, etiquetas y otros cambios que aplicó. Por defecto, false, lo que deja esos cambios como están.
Respuesta · 200
{
  "success": true,
  "retroactiveStatus": null,
  "affectedTransactionCount": 0
}

retroactiveStatus es null salvo que hayas pedido a la llamada que aplique la regla a transacciones que ya tenías, o que deshaga lo que hizo. completed significa que ese trabajo terminó antes de la respuesta; in_progress, que sigue en marcha, así que affectedTransactionCount aún no es definitivo; queue_full, que la cola estaba llena y no llegó a empezar, aunque el cambio de la regla sí se guardó; partial_success, que solo una parte salió adelante: algunos cambios no se guardaron, o solo se puso en cola parte del trabajo.

Era Financial Advisors LLC es un asesor de inversiones registrado ante la SEC (CRD #334404). El registro no implica un nivel particular de habilidad o formación. Los servicios de asesoría de inversión son discrecionales y asistidos por IA; no sustituyen el asesoramiento financiero personalizado. Los servicios de corretaje y custodia los proporciona Alpaca Securities LLC, una entidad separada y miembro de FINRA/SIPC. Las cuentas de Era Thesis y Era Agency solo están disponibles actualmente para residentes de EE. UU.; Era Context conecta cuentas en EE. UU., el Reino Unido, Canadá, Francia, Alemania, España y más de 40 países en total. Nada en este sitio web constituye una oferta o solicitud de compra o venta de valores. El rendimiento pasado no garantiza resultados futuros. Revisa nuestro Form ADV, Form CRS antes de invertir.

Descárgalo en el App StoreDisponible en Google Play
era© 2026 Tinwell Labs Inc. DBA Era