Saltar al contenido
Notificado

Créditos, pagos y facturación

28 operaciones, cada una con sus parámetros, ejemplos en curl y TypeScript listos para copiar y sus errores.

Las operaciones marcadas /v1 se autentican con un token de agente; las demás, con una sesión del panel. Cómo funcionan ambas está en Autenticación

checkoutPayer

GET/_x/query/checkout-payer

Miembro de la firmaPermiso: billing:purchase

checkoutPayer

Parámetros de checkoutPayer
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/checkout-payer?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/checkout-payer?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

checkoutTerms

GET/_x/query/checkout-terms

Miembro de la firmaPermiso: billing:purchase

checkoutTerms

Parámetros de checkoutTerms
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/checkout-terms?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/checkout-terms?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

creditsBalance

GET/v1/credits-balance

Miembro de la firmaPermiso: billing:read/v1 · token BearerHerramienta MCP: creditsBalance

Credits left: one per recipient, used on send. mode free = trial only: never tell the lawyer to buy.

Parámetros de creditsBalance
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/credits-balance?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
const response = await fetch('https://www.notificado.co/v1/credits-balance?orgId=<orgId>', {
  headers: { authorization: `Bearer ${token}` },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

ledgerList

GET/v1/ledger-list

Miembro de la firmaPermiso: billing:read/v1 · token BearerHerramienta MCP: ledgerList

The credit statement: grants, consumes, expiries and corrections, newest first.

Parámetros de ledgerList
NombreDóndeTipoObligatorio
cursorConsultastring 1–64No
limitConsultainteger 1–501No
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/ledger-list?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
const response = await fetch('https://www.notificado.co/v1/ledger-list?orgId=<orgId>', {
  headers: { authorization: `Bearer ${token}` },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

listMyInvoices

GET/v1/list-my-invoices

Miembro de la firmaPermiso: invoicing:read/v1 · token BearerHerramienta MCP: listMyInvoices

The firm's DIAN invoices, newest first, with status and amounts (COP minor units).

Parámetros de listMyInvoices
NombreDóndeTipoObligatorio
limitConsultainteger 1–200No
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/v1/list-my-invoices?orgId=<orgId>' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN"
TypeScript
const response = await fetch('https://www.notificado.co/v1/list-my-invoices?orgId=<orgId>', {
  headers: { authorization: `Bearer ${token}` },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

listMyPayments

GET/_x/query/list-my-payments

Miembro de la firmaPermiso: payment:read

listMyPayments

Parámetros de listMyPayments
NombreDóndeTipoObligatorio
limitConsultainteger 1–200No
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/list-my-payments?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/list-my-payments?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

myBillingProfile

GET/_x/query/my-billing-profile

Miembro de la firmaPermiso: payment:read

myBillingProfile

Parámetros de myBillingProfile
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/my-billing-profile?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/my-billing-profile?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

mySubscription

GET/_x/query/my-subscription

Miembro de la firmaPermiso: payment:read

mySubscription

Parámetros de mySubscription
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/my-subscription?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/my-subscription?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

nequiSourceStatus

GET/_x/query/nequi-source-status

Miembro de la firmaPermiso: payment:read

nequiSourceStatus

Parámetros de nequiSourceStatus
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
sourceIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/nequi-source-status?orgId=<orgId>&sourceId=<sourceId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/nequi-source-status?orgId=<orgId>&sourceId=<sourceId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

packOffers

GET/_x/query/pack-offers

Miembro de la firmaPermiso: payment:read

packOffers

Parámetros de packOffers
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/pack-offers?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/pack-offers?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

paymentStatus

GET/_x/query/payment-status

Miembro de la firmaPermiso: payment:read

paymentStatus

Parámetros de paymentStatus
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
paymentIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/payment-status?orgId=<orgId>&paymentId=<paymentId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/payment-status?orgId=<orgId>&paymentId=<paymentId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

planOffers

GET/_x/query/plan-offers

Miembro de la firmaPermiso: payment:read

planOffers

Parámetros de planOffers
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500)No
_afterConsultastringthe nextCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/plan-offers?orgId=<orgId>' \
  -b cookies.txt
TypeScript
const response = await fetch('https://www.notificado.co/_x/query/plan-offers?orgId=<orgId>', {
  headers: { cookie: sessionCookie },
});
const result = await response.json();
Ejemplo de respuesta
200
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

cancelSubscription

POST/api/cancel-subscription

Miembro de la firmaPermiso: billing:purchase

cancelSubscription

Parámetros de cancelSubscription
NombreDóndeTipoObligatorio
orgIdCuerpostring (uuid)Sí
curl
curl -X POST 'https://www.notificado.co/api/cancel-subscription' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/cancel-subscription', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "cancelAtPeriodEnd": true,
  "collection": "auto",
  "currentPeriodEnd": "2026-09-25T15:00:00Z",
  "currentPeriodStart": "2026-09-25T15:00:00Z",
  "endedAt": "2026-09-25T15:00:00Z",
  "freeCyclesPending": -9007199254740991,
  "id": "<id>",
  "interval": "month",
  "planId": "<planId>",
  "status": "trialing"
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

changePlan

POST/api/change-plan

Miembro de la firmaPermiso: billing:purchaseIdempotency-Key

changePlan

Parámetros de changePlan
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
intervalCuerpo"month" | "year"No
orgIdCuerpostring (uuid)Sí
planCodeCuerpostring 1–40Sí
curl
curl -X POST 'https://www.notificado.co/api/change-plan' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H "idempotency-key: $(uuidgen)" \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>","planCode":"<planCode>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/change-plan', {
  method: 'POST',
  headers: { 'content-type': 'application/json', 'idempotency-key': crypto.randomUUID(), origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>",
    "planCode": "<planCode>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "change": "upgraded",
  "checkout": {
    "action": "<action>",
    "fields": {},
    "method": "GET"
  },
  "effectiveAt": "2026-09-25T15:00:00Z",
  "payment": {
    "amountGross": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountIva": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountNet": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "approvedAt": "2026-09-25T15:00:00Z",
    "createdAt": "2026-09-25T15:00:00Z",
    "discount": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "id": "<id>",
    "method": "CARD",
    "purpose": "pack",
    "reference": "<reference>",
    "status": "created",
    "statusAt": "2026-09-25T15:00:00Z",
    "subjectId": "<subjectId>"
  }
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 409 X_IDEMPOTENCY_CONFLICT
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

confirmPaymentReturn

POST/api/confirm-payment-return

Miembro de la firmaPermiso: billing:purchase

confirmPaymentReturn

Parámetros de confirmPaymentReturn
NombreDóndeTipoObligatorio
orgIdCuerpostring (uuid)Sí
transactionIdCuerpostring 1–64Sí
curl
curl -X POST 'https://www.notificado.co/api/confirm-payment-return' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>","transactionId":"<transactionId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/confirm-payment-return', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>",
    "transactionId": "<transactionId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "asyncPaymentUrl": "<asyncPaymentUrl>",
  "payment": {
    "amountGross": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountIva": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountNet": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "approvedAt": "2026-09-25T15:00:00Z",
    "createdAt": "2026-09-25T15:00:00Z",
    "discount": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "id": "<id>",
    "method": "CARD",
    "purpose": "pack",
    "reference": "<reference>",
    "status": "created",
    "statusAt": "2026-09-25T15:00:00Z",
    "subjectId": "<subjectId>"
  }
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

downloadInvoice

POST/v1/download-invoice

Miembro de la firmaPermiso: invoicing:read/v1 · token BearerHerramienta MCP: downloadInvoice

An invoice or credit note as pdf or xml bytes (base64). Recorded.

Parámetros de downloadInvoice
NombreDóndeTipoObligatorio
creditNoteIdCuerpostring (uuid)No
formatCuerpo"pdf" | "xml"Sí
invoiceIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
curl
curl -X POST 'https://www.notificado.co/v1/download-invoice' \
  -H "authorization: Bearer $NOTIFICADO_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"format":"pdf","invoiceId":"<invoiceId>","orgId":"<orgId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/v1/download-invoice', {
  method: 'POST',
  headers: { authorization: `Bearer ${token}`, 'content-type': 'application/json' },
  body: JSON.stringify({
    "format": "pdf",
    "invoiceId": "<invoiceId>",
    "orgId": "<orgId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "bytes": 0,
  "contentBase64": "<contentBase64>",
  "contentType": "<contentType>",
  "filename": "<filename>",
  "format": "pdf",
  "number": "<number>",
  "sha256": "<sha256>"
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

lookupTaxId

POST/api/lookup-tax-id

Miembro de la firmaPermiso: billing:purchase

lookupTaxId

Parámetros de lookupTaxId
NombreDóndeTipoObligatorio
dvCuerpostringNo
numberCuerpostring 5–10Sí
orgIdCuerpostring (uuid)Sí
curl
curl -X POST 'https://www.notificado.co/api/lookup-tax-id' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"number":"<number>","orgId":"<orgId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/lookup-tax-id', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "number": "<number>",
    "orgId": "<orgId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "chamber": "<chamber>",
  "dvMatches": true,
  "found": true,
  "name": "<name>",
  "source": "rues-open-data",
  "status": "active",
  "statusText": "<statusText>",
  "updatedAt": "<updatedAt>"
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

payCycle

POST/api/pay-cycle

Miembro de la firmaPermiso: billing:purchaseIdempotency-Key

payCycle

Parámetros de payCycle
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
cycleIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
overageCuerpobooleanNo
curl
curl -X POST 'https://www.notificado.co/api/pay-cycle' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H "idempotency-key: $(uuidgen)" \
  -H 'content-type: application/json' \
  -d '{"cycleId":"<cycleId>","orgId":"<orgId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/pay-cycle', {
  method: 'POST',
  headers: { 'content-type': 'application/json', 'idempotency-key': crypto.randomUUID(), origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "cycleId": "<cycleId>",
    "orgId": "<orgId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "checkout": {
    "action": "<action>",
    "fields": {},
    "method": "GET"
  },
  "payment": {
    "amountGross": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountIva": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountNet": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "approvedAt": "2026-09-25T15:00:00Z",
    "createdAt": "2026-09-25T15:00:00Z",
    "discount": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "id": "<id>",
    "method": "CARD",
    "purpose": "pack",
    "reference": "<reference>",
    "status": "created",
    "statusAt": "2026-09-25T15:00:00Z",
    "subjectId": "<subjectId>"
  }
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 409 X_IDEMPOTENCY_CONFLICT
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

previewCoupon

POST/api/preview-coupon

Miembro de la firmaPermiso: billing:read

previewCoupon

Parámetros de previewCoupon
NombreDóndeTipoObligatorio
codeCuerpostring 1–40Sí
intervalCuerpo"month" | "year"No
kindCuerpo"pack" | "plan"Sí
orgIdCuerpostring (uuid)Sí
subjectCodeCuerpostring 1–40Sí
curl
curl -X POST 'https://www.notificado.co/api/preview-coupon' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{
  "code": "<code>",
  "kind": "pack",
  "orgId": "<orgId>",
  "subjectCode": "<subjectCode>"
}'
TypeScript
const response = await fetch('https://www.notificado.co/api/preview-coupon', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "code": "<code>",
    "kind": "pack",
    "orgId": "<orgId>",
    "subjectCode": "<subjectCode>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "coupon": {
    "amountOff": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "appliesTo": "pack",
    "code": "<code>",
    "cycles": -9007199254740991,
    "duration": "once",
    "kind": "percent",
    "percentBps": -9007199254740991,
    "validTo": "2026-09-25T15:00:00Z"
  },
  "discount": {
    "currency": "<currency>",
    "minor": -9007199254740991,
    "scale": 0
  },
  "gross": {
    "currency": "<currency>",
    "minor": -9007199254740991,
    "scale": 0
  },
  "iva": {
    "currency": "<currency>",
    "minor": -9007199254740991,
    "scale": 0
  },
  "net": {
    "currency": "<currency>",
    "minor": -9007199254740991,
    "scale": 0
  }
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

refreshPayment

POST/api/refresh-payment

Miembro de la firmaPermiso: billing:purchase

refreshPayment

Parámetros de refreshPayment
NombreDóndeTipoObligatorio
orgIdCuerpostring (uuid)Sí
paymentIdCuerpostring (uuid)Sí
curl
curl -X POST 'https://www.notificado.co/api/refresh-payment' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>","paymentId":"<paymentId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/refresh-payment', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>",
    "paymentId": "<paymentId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "asyncPaymentUrl": "<asyncPaymentUrl>",
  "payment": {
    "amountGross": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountIva": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountNet": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "approvedAt": "2026-09-25T15:00:00Z",
    "createdAt": "2026-09-25T15:00:00Z",
    "discount": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "id": "<id>",
    "method": "CARD",
    "purpose": "pack",
    "reference": "<reference>",
    "status": "created",
    "statusAt": "2026-09-25T15:00:00Z",
    "subjectId": "<subjectId>"
  }
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

registerPaymentSource

POST/api/register-payment-source

Miembro de la firmaPermiso: billing:purchaseIdempotency-Key

registerPaymentSource

Parámetros de registerPaymentSource
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
orgIdCuerpostring (uuid)Sí
sourceCuerpoobject | objectSí
termsCuerpoobjectSí
useForSubscriptionCuerpobooleanNo
curl
curl -X POST 'https://www.notificado.co/api/register-payment-source' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H "idempotency-key: $(uuidgen)" \
  -H 'content-type: application/json' \
  -d '{
  "orgId": "<orgId>",
  "source": {
    "token": "<token>",
    "type": "CARD"
  },
  "terms": {
    "acceptanceToken": "<acceptanceToken>",
    "personalDataToken": "<personalDataToken>"
  }
}'
TypeScript
const response = await fetch('https://www.notificado.co/api/register-payment-source', {
  method: 'POST',
  headers: { 'content-type': 'application/json', 'idempotency-key': crypto.randomUUID(), origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>",
    "source": {
      "token": "<token>",
      "type": "CARD"
    },
    "terms": {
      "acceptanceToken": "<acceptanceToken>",
      "personalDataToken": "<personalDataToken>"
    }
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "id": "<id>",
  "label": "<label>",
  "status": "<status>",
  "type": "<type>"
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 409 X_IDEMPOTENCY_CONFLICT
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

resumeSubscription

POST/api/resume-subscription

Miembro de la firmaPermiso: billing:purchase

resumeSubscription

Parámetros de resumeSubscription
NombreDóndeTipoObligatorio
orgIdCuerpostring (uuid)Sí
curl
curl -X POST 'https://www.notificado.co/api/resume-subscription' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/resume-subscription', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "cancelAtPeriodEnd": true,
  "collection": "auto",
  "currentPeriodEnd": "2026-09-25T15:00:00Z",
  "currentPeriodStart": "2026-09-25T15:00:00Z",
  "endedAt": "2026-09-25T15:00:00Z",
  "freeCyclesPending": -9007199254740991,
  "id": "<id>",
  "interval": "month",
  "planId": "<planId>",
  "status": "trialing"
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

saveBillingProfile

POST/api/save-billing-profile

Miembro de la firmaPermiso: billing:purchase

saveBillingProfile

Parámetros de saveBillingProfile
NombreDóndeTipoObligatorio
aceptoEstadoInactivoCuerpoboolean | "" | string 1–8No
acknowledgeInactiveRegistryCuerpobooleanNo
addressCuerpo"" | string 1–200No
cityCodeCuerpo"" | string 1–120No
docNumberCuerpo"" | string 3–20No
docTypeCuerpo"" | "CC" | "NIT" | "CE" | "PP"No
dvCuerpo"" | string 1–1 | nullNo
emailCuerpo"" | string (email) ≤ 254No
familyNamesCuerpo"" | string 1–100 | nullNo
fiscalResponsibilitiesCuerpoarray of string 1–12 | "" | string 1–200No
givenNamesCuerpo"" | string 1–100 | nullNo
invoiceToCuerpo"" | "self" | "final_consumer"No
legalNameCuerpo"" | string 1–200No
orgIdCuerpostring (uuid)Sí
phoneCuerpo"" | string 1–40 | nullNo
returnToCuerpostring 1–240No
taxRegimeCuerpo"" | "responsable_iva" | "no_responsable_iva"No
curl
curl -X POST 'https://www.notificado.co/api/save-billing-profile' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/save-billing-profile', {
  method: 'POST',
  headers: { 'content-type': 'application/json', origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "address": "<address>",
  "cityCode": "<cityCode>",
  "docNumber": "<docNumber>",
  "docType": "CC",
  "dv": "<dv>",
  "email": "<email>",
  "fiscalResponsibilities": [
    "<fiscalResponsibilities>"
  ],
  "invoiceTo": "self",
  "legalName": "<legalName>",
  "taxRegime": "responsable_iva",
  "updatedAt": "2026-09-25T15:00:00Z"
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

startPackCheckout

POST/api/start-pack-checkout

Miembro de la firmaPermiso: billing:purchaseIdempotency-Key

startPackCheckout

Parámetros de startPackCheckout
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
acknowledgeInactiveRegistryCuerpobooleanNo
billingProfileCuerpoobjectNo
captchaTokenCuerpostring 0–4096No
cf-turnstile-responseCuerpostring 0–4096No
couponCodeCuerpostring 1–40No
h-captcha-responseCuerpostring 0–4096No
invoiceToCuerpo"self" | "final_consumer"No
methodCuerpoobject | object | object | objectNo
orgIdCuerpostring (uuid)Sí
packCodeCuerpostring 1–40Sí
payerNameCuerpostring 1–200No
payerPhoneCuerpostring 10–15No
termsCuerpoobjectNo
curl
curl -X POST 'https://www.notificado.co/api/start-pack-checkout' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H "idempotency-key: $(uuidgen)" \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>","packCode":"<packCode>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/start-pack-checkout', {
  method: 'POST',
  headers: { 'content-type': 'application/json', 'idempotency-key': crypto.randomUUID(), origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>",
    "packCode": "<packCode>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "asyncPaymentUrl": "<asyncPaymentUrl>",
  "checkout": {
    "action": "<action>",
    "fields": {},
    "method": "GET"
  },
  "payment": {
    "amountGross": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountIva": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountNet": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "approvedAt": "2026-09-25T15:00:00Z",
    "createdAt": "2026-09-25T15:00:00Z",
    "discount": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "id": "<id>",
    "method": "CARD",
    "purpose": "pack",
    "reference": "<reference>",
    "status": "created",
    "statusAt": "2026-09-25T15:00:00Z",
    "subjectId": "<subjectId>"
  },
  "transactionId": "<transactionId>"
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 409 X_IDEMPOTENCY_CONFLICT
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

submitPackPurchase

POST/api/submit-pack-purchase

Miembro de la firmaPermiso: billing:purchaseIdempotency-Key

submitPackPurchase

Parámetros de submitPackPurchase
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
aceptaDatosCuerpoboolean | "" | string 1–8No
aceptaTerminosCuerpoboolean | "" | string 1–8No
aceptoEstadoInactivoCuerpoboolean | "" | string 1–8No
addressCuerpo"" | string 1–200No
captchaTokenCuerpostring 0–4096No
celularCuerpo"" | string 1–24No
cf-turnstile-responseCuerpostring 0–4096No
cityCodeCuerpo"" | string 1–120No
cuponCuerpo"" | string 1–80No
docNumberCuerpo"" | string 3–20No
docTypeCuerpo"" | "CC" | "NIT" | "CE" | "PP"No
dvCuerpo"" | string 1–1 | nullNo
emailCuerpo"" | string (email) ≤ 254No
familyNamesCuerpo"" | string 1–100 | nullNo
fiscalResponsibilitiesCuerpoarray of string 1–12 | "" | string 1–200No
givenNamesCuerpo"" | string 1–100 | nullNo
h-captcha-responseCuerpostring 0–4096No
intentCuerpo"" | string 1–40No
invoiceToCuerpo"" | "self" | "final_consumer"No
legalNameCuerpo"" | string 1–200No
metodoCuerpo"" | string 1–40No
nonceCuerpostring (uuid)No
orgIdCuerpostring (uuid)Sí
packCuerpo"" | string 1–40No
phoneCuerpo"" | string 1–40 | nullNo
taxRegimeCuerpo"" | "responsable_iva" | "no_responsable_iva"No
curl
curl -X POST 'https://www.notificado.co/api/submit-pack-purchase' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H "idempotency-key: $(uuidgen)" \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/submit-pack-purchase', {
  method: 'POST',
  headers: { 'content-type': 'application/json', 'idempotency-key': crypto.randomUUID(), origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "location": "<location>",
  "paymentId": "<paymentId>"
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 409 X_IDEMPOTENCY_CONFLICT
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

submitSubscription

POST/api/submit-subscription

Miembro de la firmaPermiso: billing:purchaseIdempotency-Key

submitSubscription

Parámetros de submitSubscription
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
aceptoEstadoInactivoCuerpoboolean | "" | string 1–8No
addressCuerpo"" | string 1–200No
cityCodeCuerpo"" | string 1–120No
cobroCuerpo"" | string 1–10No
cuponCuerpo"" | string 1–80No
docNumberCuerpo"" | string 3–20No
docTypeCuerpo"" | "CC" | "NIT" | "CE" | "PP"No
dvCuerpo"" | string 1–1 | nullNo
emailCuerpo"" | string (email) ≤ 254No
familyNamesCuerpo"" | string 1–100 | nullNo
fiscalResponsibilitiesCuerpoarray of string 1–12 | "" | string 1–200No
fuenteCuerpo"" | string 1–40No
givenNamesCuerpo"" | string 1–100 | nullNo
intentCuerpo"" | string 1–40No
intervalCuerpo"" | string 1–10No
invoiceToCuerpo"" | "self" | "final_consumer"No
legalNameCuerpo"" | string 1–200No
orgIdCuerpostring (uuid)Sí
phoneCuerpo"" | string 1–40 | nullNo
planCuerpo"" | string 1–40No
taxRegimeCuerpo"" | "responsable_iva" | "no_responsable_iva"No
curl
curl -X POST 'https://www.notificado.co/api/submit-subscription' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H "idempotency-key: $(uuidgen)" \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>"}'
TypeScript
const response = await fetch('https://www.notificado.co/api/submit-subscription', {
  method: 'POST',
  headers: { 'content-type': 'application/json', 'idempotency-key': crypto.randomUUID(), origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "orgId": "<orgId>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "location": "<location>",
  "subscriptionId": "<subscriptionId>"
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 409 X_IDEMPOTENCY_CONFLICT
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds

subscribe

POST/api/subscribe

Miembro de la firmaPermiso: billing:purchaseIdempotency-Key

subscribe

Parámetros de subscribe
NombreDóndeTipoObligatorio
Idempotency-KeyEncabezadostring ≤ 255Replays the first response for a repeated key.No
billingProfileCuerpoobjectNo
collectionCuerpo"auto" | "link"Sí
couponCodeCuerpostring 1–40No
intervalCuerpo"month" | "year"Sí
orgIdCuerpostring (uuid)Sí
paymentSourceIdCuerpostring (uuid)No
planCodeCuerpostring 1–40Sí
curl
curl -X POST 'https://www.notificado.co/api/subscribe' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H "idempotency-key: $(uuidgen)" \
  -H 'content-type: application/json' \
  -d '{
  "collection": "auto",
  "interval": "month",
  "orgId": "<orgId>",
  "planCode": "<planCode>"
}'
TypeScript
const response = await fetch('https://www.notificado.co/api/subscribe', {
  method: 'POST',
  headers: { 'content-type': 'application/json', 'idempotency-key': crypto.randomUUID(), origin: 'https://www.notificado.co', cookie: sessionCookie },
  body: JSON.stringify({
    "collection": "auto",
    "interval": "month",
    "orgId": "<orgId>",
    "planCode": "<planCode>"
  }),
});
const result = await response.json();
Ejemplo de respuesta
200
{
  "checkout": {
    "action": "<action>",
    "fields": {},
    "method": "GET"
  },
  "cycle": {
    "amountGross": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountIva": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountNet": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "attempts": -9007199254740991,
    "discount": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "id": "<id>",
    "nextAttemptAt": "2026-09-25T15:00:00Z",
    "periodEnd": "2026-09-25T15:00:00Z",
    "periodStart": "2026-09-25T15:00:00Z",
    "status": "due",
    "subscriptionId": "<subscriptionId>"
  },
  "payment": {
    "amountGross": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountIva": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "amountNet": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "approvedAt": "2026-09-25T15:00:00Z",
    "createdAt": "2026-09-25T15:00:00Z",
    "discount": {
      "currency": "<currency>",
      "minor": -9007199254740991,
      "scale": 0
    },
    "id": "<id>",
    "method": "CARD",
    "purpose": "pack",
    "reference": "<reference>",
    "status": "created",
    "statusAt": "2026-09-25T15:00:00Z",
    "subjectId": "<subjectId>"
  },
  "subscription": {
    "cancelAtPeriodEnd": true,
    "collection": "auto",
    "currentPeriodEnd": "2026-09-25T15:00:00Z",
    "currentPeriodStart": "2026-09-25T15:00:00Z",
    "endedAt": "2026-09-25T15:00:00Z",
    "freeCyclesPending": -9007199254740991,
    "id": "<id>",
    "interval": "month",
    "planId": "<planId>",
    "status": "trialing"
  }
}

Errores

  • 400 X_INPUT_INVALID
  • 401 X_UNAUTHENTICATED — no credential, or one that did not resolve
  • 403 policy denied
  • 409 X_IDEMPOTENCY_CONFLICT
  • 422 X_BODY_INVALID
  • 429 X_RATE_LIMITED — retry after Retry-After seconds