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
GET /_x/query/checkout-payer
Miembro de la firma Permiso: billing:purchase
checkoutPayer
Parámetros de checkoutPayer Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/checkout-payer?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar 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 Copiar [
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 GET /_x/query/checkout-terms
Miembro de la firma Permiso: billing:purchase
checkoutTerms
Parámetros de checkoutTerms Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/checkout-terms?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar 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 Copiar [
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 GET /v1/credits-balance
Miembro de la firma Permiso: billing:read /v1 · token Bearer Herramienta MCP: creditsBalance
Credits left: one per recipient, used on send. mode free = trial only: never tell the lawyer to buy.
Parámetros de creditsBalance Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/credits-balance?orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar 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 Copiar [
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 GET /v1/ledger-list
Miembro de la firma Permiso: billing:read /v1 · token Bearer Herramienta MCP: ledgerList
The credit statement: grants, consumes, expiries and corrections, newest first.
Parámetros de ledgerList Nombre Dónde Tipo Obligatorio cursorConsulta string 1–64No limitConsulta integer 1–501No orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/ledger-list?orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar 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 Copiar [
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 GET /v1/list-my-invoices
Miembro de la firma Permiso: invoicing:read /v1 · token Bearer Herramienta MCP: listMyInvoices
The firm's DIAN invoices, newest first, with status and amounts (COP minor units).
Parámetros de listMyInvoices Nombre Dónde Tipo Obligatorio limitConsulta integer 1–200No orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/v1/list-my-invoices?orgId=<orgId>' \
-H "authorization: Bearer $NOTIFICADO_TOKEN" TypeScript Copiar 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 Copiar [
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 GET /_x/query/list-my-payments
Miembro de la firma Permiso: payment:read
listMyPayments
Parámetros de listMyPayments Nombre Dónde Tipo Obligatorio limitConsulta integer 1–200No orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/list-my-payments?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar 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 Copiar [
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 GET /_x/query/my-billing-profile
Miembro de la firma Permiso: payment:read
myBillingProfile
Parámetros de myBillingProfile Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/my-billing-profile?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar 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 Copiar [
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 GET /_x/query/my-subscription
Miembro de la firma Permiso: payment:read
mySubscription
Parámetros de mySubscription Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/my-subscription?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar 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 Copiar [
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 GET /_x/query/nequi-source-status
Miembro de la firma Permiso: payment:read
nequiSourceStatus
Parámetros de nequiSourceStatus Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí sourceIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/nequi-source-status?orgId=<orgId>&sourceId=<sourceId>' \
-b cookies.txtTypeScript Copiar 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 Copiar [
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 GET /_x/query/pack-offers
Miembro de la firma Permiso: payment:read
packOffers
Parámetros de packOffers Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/pack-offers?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar 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 Copiar [
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 GET /_x/query/payment-status
Miembro de la firma Permiso: payment:read
paymentStatus
Parámetros de paymentStatus Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí paymentIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/payment-status?orgId=<orgId>&paymentId=<paymentId>' \
-b cookies.txtTypeScript Copiar 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 Copiar [
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 GET /_x/query/plan-offers
Miembro de la firma Permiso: payment:read
planOffers
Parámetros de planOffers Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–500page size; present, the response is the page envelope rather than the bare rows (1 to 500) No _afterConsulta stringthe nextCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/plan-offers?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar 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 Copiar [
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 POST /api/cancel-subscription
Miembro de la firma Permiso: billing:purchase
cancelSubscription
Parámetros de cancelSubscription Nombre Dónde Tipo Obligatorio orgIdCuerpo string (uuid)Sí
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/change-plan
Miembro de la firma Permiso: billing:purchase Idempotency-Key
changePlan
Parámetros de changePlan Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No intervalCuerpo "month" | "year"No orgIdCuerpo string (uuid)Sí planCodeCuerpo string 1–40Sí
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/confirm-payment-return
Miembro de la firma Permiso: billing:purchase
confirmPaymentReturn
Parámetros de confirmPaymentReturn Nombre Dónde Tipo Obligatorio orgIdCuerpo string (uuid)Sí transactionIdCuerpo string 1–64Sí
curl Copiar 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 Copiar 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 Copiar {
"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 POST /v1/download-invoice
Miembro de la firma Permiso: invoicing:read /v1 · token Bearer Herramienta MCP: downloadInvoice
An invoice or credit note as pdf or xml bytes (base64). Recorded.
Parámetros de downloadInvoice Nombre Dónde Tipo Obligatorio creditNoteIdCuerpo string (uuid)No formatCuerpo "pdf" | "xml"Sí invoiceIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/get-referral-link
Miembro de la firma Permiso: billing:read Herramienta MCP: getReferralLink
Returns the caller's firm's customer-referral link (https://www.notificado.co/registro?ref=O-XXXXXXXX) and its code, creating the code on first call. A firm that signs up through the link and makes its first payment earns the caller's firm one free month (a free subscription cycle, or 40 credits without a subscription) after a 30-day hold without refund. Needs billing:read in the given orgId.
Parámetros de getReferralLink Nombre Dónde Tipo Obligatorio orgIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/get-referral-link' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/get-referral-link' , {
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 Copiar {
"code": "<code>",
"url": "<url>"
}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 POST /api/lookup-tax-id
Miembro de la firma Permiso: billing:purchase
lookupTaxId
Parámetros de lookupTaxId Nombre Dónde Tipo Obligatorio dvCuerpo stringNo numberCuerpo string 5–10Sí orgIdCuerpo string (uuid)Sí
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/pay-cycle
Miembro de la firma Permiso: billing:purchase Idempotency-Key
payCycle
Parámetros de payCycle Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No cycleIdCuerpo string (uuid)Sí orgIdCuerpo string (uuid)Sí overageCuerpo booleanNo
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/preview-coupon
Miembro de la firma Permiso: billing:read
previewCoupon
Parámetros de previewCoupon Nombre Dónde Tipo Obligatorio codeCuerpo string 1–40Sí intervalCuerpo "month" | "year"No kindCuerpo "pack" | "plan"Sí orgIdCuerpo string (uuid)Sí subjectCodeCuerpo string 1–40Sí
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/refresh-payment
Miembro de la firma Permiso: billing:purchase
refreshPayment
Parámetros de refreshPayment Nombre Dónde Tipo Obligatorio orgIdCuerpo string (uuid)Sí paymentIdCuerpo string (uuid)Sí
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/register-payment-source
Miembro de la firma Permiso: billing:purchase Idempotency-Key
registerPaymentSource
Parámetros de registerPaymentSource Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No orgIdCuerpo string (uuid)Sí sourceCuerpo object | objectSí termsCuerpo objectSí useForSubscriptionCuerpo booleanNo
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/resume-subscription
Miembro de la firma Permiso: billing:purchase
resumeSubscription
Parámetros de resumeSubscription Nombre Dónde Tipo Obligatorio orgIdCuerpo string (uuid)Sí
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/save-billing-profile
Miembro de la firma Permiso: billing:purchase
saveBillingProfile
Parámetros de saveBillingProfile Nombre Dónde Tipo Obligatorio aceptoEstadoInactivoCuerpo boolean | "" | string 1–8No acknowledgeInactiveRegistryCuerpo booleanNo 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 fiscalResponsibilitiesCuerpo array of string 1–12 | "" | string 1–200No givenNamesCuerpo "" | string 1–100 | nullNo invoiceToCuerpo "" | "self" | "final_consumer"No legalNameCuerpo "" | string 1–200No orgIdCuerpo string (uuid)Sí phoneCuerpo "" | string 1–40 | nullNo returnToCuerpo string 1–240No taxRegimeCuerpo "" | "responsable_iva" | "no_responsable_iva"No
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/start-pack-checkout
Miembro de la firma Permiso: billing:purchase Idempotency-Key
startPackCheckout
Parámetros de startPackCheckout Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No acknowledgeInactiveRegistryCuerpo booleanNo billingProfileCuerpo objectNo captchaTokenCuerpo string 0–4096No cf-turnstile-responseCuerpo string 0–4096No couponCodeCuerpo string 1–40No h-captcha-responseCuerpo string 0–4096No invoiceToCuerpo "self" | "final_consumer"No methodCuerpo object | object | object | objectNo orgIdCuerpo string (uuid)Sí packCodeCuerpo string 1–40Sí payerNameCuerpo string 1–200No payerPhoneCuerpo string 10–15No termsCuerpo objectNo
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/submit-pack-purchase
Miembro de la firma Permiso: billing:purchase Idempotency-Key
submitPackPurchase
Parámetros de submitPackPurchase Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No aceptaDatosCuerpo boolean | "" | string 1–8No aceptaTerminosCuerpo boolean | "" | string 1–8No aceptoEstadoInactivoCuerpo boolean | "" | string 1–8No addressCuerpo "" | string 1–200No captchaTokenCuerpo string 0–4096No celularCuerpo "" | string 1–24No cf-turnstile-responseCuerpo string 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 fiscalResponsibilitiesCuerpo array of string 1–12 | "" | string 1–200No givenNamesCuerpo "" | string 1–100 | nullNo h-captcha-responseCuerpo string 0–4096No intentCuerpo "" | string 1–40No invoiceToCuerpo "" | "self" | "final_consumer"No legalNameCuerpo "" | string 1–200No metodoCuerpo "" | string 1–40No nonceCuerpo string (uuid)No orgIdCuerpo string (uuid)Sí packCuerpo "" | string 1–40No phoneCuerpo "" | string 1–40 | nullNo taxRegimeCuerpo "" | "responsable_iva" | "no_responsable_iva"No
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/submit-subscription
Miembro de la firma Permiso: billing:purchase Idempotency-Key
submitSubscription
Parámetros de submitSubscription Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No aceptoEstadoInactivoCuerpo boolean | "" | 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 fiscalResponsibilitiesCuerpo array 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 orgIdCuerpo string (uuid)Sí phoneCuerpo "" | string 1–40 | nullNo planCuerpo "" | string 1–40No taxRegimeCuerpo "" | "responsable_iva" | "no_responsable_iva"No
curl Copiar 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 Copiar 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 Copiar {
"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 POST /api/subscribe
Miembro de la firma Permiso: billing:purchase Idempotency-Key
subscribe
Parámetros de subscribe Nombre Dónde Tipo Obligatorio Idempotency-KeyEncabezado string ≤ 255Replays the first response for a repeated key. No billingProfileCuerpo objectNo collectionCuerpo "auto" | "link"Sí couponCodeCuerpo string 1–40No intervalCuerpo "month" | "year"Sí orgIdCuerpo string (uuid)Sí paymentSourceIdCuerpo string (uuid)No planCodeCuerpo string 1–40Sí
curl Copiar 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 Copiar 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 Copiar {
"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