Facturación
Una prueba gratis y después un saldo prepago. Las cuentas nuevas publican gratis 7 días desde su primera publicación (como mucho 14 días desde el registro); X y los números de teléfono necesitan saldo. Tras la primera recarga, las cuentas conectadas se cobran día a día y el uso (API de X, mensajes, números, llamadas y SMS) según se produce. Se recarga desde el panel.
Ver el saldo
Sección titulada «Ver el saldo»/v1/billingSaldo, prueba gratis, cuentas conectadas y lo que cuestan. Cuando la prueba termina sin recarga, o el saldo se agota después de pagar, conectar cuentas y publicar o enviar responden 402; las publicaciones programadas de una prueba terminada esperan como paused hasta la primera recarga.
Respuesta 200
data
enabledbooleanobligatorioFalse mientras la facturación no está disponible: no se cobra ni se limita nada.
balancenumberobligatorioSaldo prepago en céntimos de euro (hasta tres decimales):
1250.5son 12,505 €. Negativo si los cargos lo superaron.currencystringobligatorioconnectedAccountsintegerobligatoriotrialobjectLa prueba gratis: conecta cualquier red (X y los números de teléfono necesitan saldo) y publica sin pagar. Si termina sin pagar, las publicaciones programadas se pausan hasta la primera recarga.
trial
statusstringobligatoriopending: aún no ha publicado nada;active: corren los días gratis;expired: terminó sin pagar;converted: pagada.registeredAtstring (date-time)obligatoriostartedAtstring (date-time)Primera publicación: los días gratis cuentan desde aquí.
endsAtstring (date-time)obligatorio7 días después de la primera publicación, y nunca más de 14 días después del registro.
daysLeftinteger | nullobligatorioDías enteros que quedan (0 el último día); null cuando ha terminado o se ha pagado.
trialDaysintegerobligatorioDías gratis cuando empieza: 7, o menos si el límite de 14 días la recorta.
maxAccountsintegerobligatorioCuentas que cubre la prueba (20). Conectar la 21.ª necesita saldo, y la primera recarga termina la prueba.
bannerstringLo que el panel muestra ahora sobre la prueba.
statsobjectobligatoriostats
publishedintegerobligatorioscheduledintegerobligatoriopausedintegerobligatorioPublicaciones programadas en pausa desde que terminó la prueba.
accountsintegerobligatorio
monthlyEstimateintegerobligatorioPrecio mensual de las cuentas conectadas ahora, en céntimos. Se cobra día a día.
dailyEstimatenumberobligatorioLo que cuestan hoy esas cuentas, en céntimos (hasta tres decimales).
daysLeftinteger | nullobligatorioDías completos que cubre el saldo a ese coste; null si no hay cargo diario.
linesobject[]obligatoriolines
fromintegerobligatoriotointeger | nullobligatorioaccountsintegerobligatoriounitAmountintegerobligatorioCéntimos por cuenta y mes.
amountintegerobligatorio
canConnectMorebooleanobligatorioSi ahora mismo se puede conectar una cuenta más.
blockedbooleanobligatorioPublicar está en pausa: la prueba gratis terminó sin recarga o el saldo se agotó. No se borra nada.
cardobjectEl método de pago guardado, para las recargas automáticas.
card
brandstringobligatorioMarca de la tarjeta (
visa,mastercard…) u otro método guardado (link,sepa_debit).last4stringexpMonthintegerexpYearinteger
autoRechargeobjectautoRecharge
enabledbooleanobligatoriothresholdintegerobligatorioRecargar cuando el saldo baje de esto, en céntimos.
amountintegerobligatorioLo que añade cada recarga, en céntimos.
monthlyLimitintegerobligatorioMáximo que añaden las recargas automáticas en un mes natural, en céntimos.
autoRechargeErrorobjectPor qué falló la última recarga automática; se desactivó sola.
autoRechargeError
atstring (date-time)obligatoriomessagestringobligatorio
autoRechargedThisMonthintegerobligatorioLo añadido por recargas automáticas este mes, en céntimos.
topUpobjectobligatorioImportes de recarga permitidos, en céntimos.
topUp
minintegerobligatoriomaxintegerobligatorio
hasPortalbooleanobligatorioSi el portal de facturación (facturas, método de pago) está disponible.
curl "https://api.marsial.dev/v1/billing" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/billing', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/billing", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Listar los movimientos del saldo
Sección titulada «Listar los movimientos del saldo»/v1/billing/movementsRecargas y cargos, del más reciente al más antiguo.
Parámetros
limitinteger
Respuesta 200
data []
idstringobligatoriokindstringobligatorioamountnumberobligatorioCéntimos de euro, hasta tres decimales: positivo suma, negativo descuenta.
-9.678son 0,09678 €.currency"eur"obligatorioLa moneda de
amount(en céntimos).atstring (date-time)obligatoriodaystringDía UTC (YYYY-MM-DD) que cubre un cargo.
accountsintegerCuentas por las que se cobró un día.
familystringTipo de uso de un cargo: API de X, mensajes, números, llamadas, SMS o registro de SMS.
curl "https://api.marsial.dev/v1/billing/movements" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/billing/movements', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/billing/movements", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Añadir saldo
Sección titulada «Añadir saldo»/v1/billing/top-upSolo desde el panelAbre una página de pago. El saldo sube cuando el pago se completa, y la tarjeta queda guardada para las recargas automáticas.
Cuerpo
amountintegerobligatorioSaldo que añadir, en céntimos (impuestos aparte, si los hay). Los límites vienen en GET /v1/billing.
successUrlstring (uri)obligatorioPágina del panel a la que volver tras pagar.
cancelUrlstring (uri)obligatorioPágina del panel a la que volver si el usuario sale de Checkout.
Respuesta 200
data
urlstring (uri)obligatorioManda aquí al usuario.
curl -X POST "https://api.marsial.dev/v1/billing/top-up" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/billing/top-up', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/billing/top-up", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Configurar la recarga automática
Sección titulada «Configurar la recarga automática»/v1/billing/auto-rechargeSolo desde el panelRecarga la tarjeta guardada cuando el saldo baja del umbral, hasta un máximo al mes. Necesita una recarga previa.
Cuerpo
enabledbooleanobligatoriothresholdintegerobligatorioRecargar cuando el saldo baje de esto, en céntimos.
amountintegerobligatorioLo que añade cada recarga, en céntimos.
monthlyLimitintegerobligatorioMáximo que pueden añadir las recargas automáticas en un mes natural, en céntimos.
Respuesta 200
data
enabledbooleanobligatorioFalse mientras la facturación no está disponible: no se cobra ni se limita nada.
balancenumberobligatorioSaldo prepago en céntimos de euro (hasta tres decimales):
1250.5son 12,505 €. Negativo si los cargos lo superaron.currencystringobligatorioconnectedAccountsintegerobligatoriotrialobjectLa prueba gratis: conecta cualquier red (X y los números de teléfono necesitan saldo) y publica sin pagar. Si termina sin pagar, las publicaciones programadas se pausan hasta la primera recarga.
trial
statusstringobligatoriopending: aún no ha publicado nada;active: corren los días gratis;expired: terminó sin pagar;converted: pagada.registeredAtstring (date-time)obligatoriostartedAtstring (date-time)Primera publicación: los días gratis cuentan desde aquí.
endsAtstring (date-time)obligatorio7 días después de la primera publicación, y nunca más de 14 días después del registro.
daysLeftinteger | nullobligatorioDías enteros que quedan (0 el último día); null cuando ha terminado o se ha pagado.
trialDaysintegerobligatorioDías gratis cuando empieza: 7, o menos si el límite de 14 días la recorta.
maxAccountsintegerobligatorioCuentas que cubre la prueba (20). Conectar la 21.ª necesita saldo, y la primera recarga termina la prueba.
bannerstringLo que el panel muestra ahora sobre la prueba.
statsobjectobligatoriostats
publishedintegerobligatorioscheduledintegerobligatoriopausedintegerobligatorioPublicaciones programadas en pausa desde que terminó la prueba.
accountsintegerobligatorio
monthlyEstimateintegerobligatorioPrecio mensual de las cuentas conectadas ahora, en céntimos. Se cobra día a día.
dailyEstimatenumberobligatorioLo que cuestan hoy esas cuentas, en céntimos (hasta tres decimales).
daysLeftinteger | nullobligatorioDías completos que cubre el saldo a ese coste; null si no hay cargo diario.
linesobject[]obligatoriolines
fromintegerobligatoriotointeger | nullobligatorioaccountsintegerobligatoriounitAmountintegerobligatorioCéntimos por cuenta y mes.
amountintegerobligatorio
canConnectMorebooleanobligatorioSi ahora mismo se puede conectar una cuenta más.
blockedbooleanobligatorioPublicar está en pausa: la prueba gratis terminó sin recarga o el saldo se agotó. No se borra nada.
cardobjectEl método de pago guardado, para las recargas automáticas.
card
brandstringobligatorioMarca de la tarjeta (
visa,mastercard…) u otro método guardado (link,sepa_debit).last4stringexpMonthintegerexpYearinteger
autoRechargeobjectautoRecharge
enabledbooleanobligatoriothresholdintegerobligatorioRecargar cuando el saldo baje de esto, en céntimos.
amountintegerobligatorioLo que añade cada recarga, en céntimos.
monthlyLimitintegerobligatorioMáximo que añaden las recargas automáticas en un mes natural, en céntimos.
autoRechargeErrorobjectPor qué falló la última recarga automática; se desactivó sola.
autoRechargeError
atstring (date-time)obligatoriomessagestringobligatorio
autoRechargedThisMonthintegerobligatorioLo añadido por recargas automáticas este mes, en céntimos.
topUpobjectobligatorioImportes de recarga permitidos, en céntimos.
topUp
minintegerobligatoriomaxintegerobligatorio
hasPortalbooleanobligatorioSi el portal de facturación (facturas, método de pago) está disponible.
curl -X PUT "https://api.marsial.dev/v1/billing/auto-recharge" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/billing/auto-recharge', { method: 'PUT', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.put( "https://api.marsial.dev/v1/billing/auto-recharge", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Abrir el portal de facturación
Sección titulada «Abrir el portal de facturación»/v1/billing/portalSolo desde el panelFacturas y método de pago guardado.
Cuerpo
returnUrlstring (uri)obligatorioPágina del panel a la que volver.
Respuesta 200
data
urlstring (uri)obligatorioManda aquí al usuario.
curl -X POST "https://api.marsial.dev/v1/billing/portal" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/billing/portal', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/billing/portal", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]© 2026 Marsial by TWOFACES ·marsial.dev ·Panel ·soporte@twofacesco.com