Cada ejemplo supone una sesión iniciada; cómo obtenerla está en Autenticación
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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor 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 403 policy denied GET /_x/query/credits-balance
Miembro de la firma Permiso: billing:read Herramienta MCP: creditsBalance
Credits balance of the caller's org: `balance` is how many recipients can still be notified (one credit per recipient, consumed on send), and `nextExpiryAt`/`nextExpiryCredits` say when the soonest batch of credits expires (UTC). Read before sending to more recipients than the balance covers.
Parámetros de creditsBalance Nombre Dónde Tipo Obligatorio orgIdConsulta string (uuid)Sí _firstConsulta integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/credits-balance?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/credits-balance?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 403 policy denied GET /_x/query/ledger-list
Miembro de la firma Permiso: billing:read
ledgerList
Parámetros de ledgerList Nombre Dónde Tipo Obligatorio limitConsulta integer 1–500No orgIdConsulta string (uuid)Sí _firstConsulta integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/ledger-list?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/ledger-list?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 403 policy denied GET /_x/query/list-my-invoices
Miembro de la firma Permiso: invoicing:read Herramienta MCP: listMyInvoices
Lists your organization's DIAN electronic invoices, newest first: status (queued, issued, rejected), DIAN number, CUFE, net, discount, IVA and gross amounts in COP minor units (centavos), due date for credit invoices, and whether the PDF / XML is ready for downloadInvoice.
Parámetros de listMyInvoices Nombre Dónde Tipo Obligatorio limitConsulta integer 1–200No orgIdConsulta string (uuid)Sí _firstConsulta integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/list-my-invoices?orgId=<orgId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/list-my-invoices?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 403 policy denied 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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor 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 403 policy denied GET /_x/query/my-affiliate
Miembro de la firma Permiso: affiliate:self
myAffiliate
Parámetros de myAffiliate Nombre Dónde Tipo Obligatorio userIdConsulta string (uuid)Sí _firstConsulta integer 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor a previous page answered; needs _first No
curl Copiar curl 'https://www.notificado.co/_x/query/my-affiliate?userId=<userId>' \
-b cookies.txtTypeScript Copiar const response = await fetch('https://www.notificado.co/_x/query/my-affiliate?userId=<userId>' , {
headers : { cookie : sessionCookie },
});
const result = await response.json();Ejemplo de respuesta 200 Copiar [
null
]Errores
400 X_INPUT_INVALID or X_CURSOR_INVALID 403 policy denied 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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor 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 403 policy denied 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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor 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 403 policy denied 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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor 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 403 policy denied 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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor 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 403 policy denied 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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor 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 403 policy denied 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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000) No _afterConsulta stringthe endCursor 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 403 policy denied POST /api/affiliate-kycs/submit
Miembro de la firma Permiso: affiliate:self
submitAffiliateKyc
Parámetros de submitAffiliateKyc Nombre Dónde Tipo Obligatorio bankCertDocumentIdCuerpo string (uuid)Sí declarantCuerpo boolean | "on" | "true" | "false" | "off"No declares383Cuerpo boolean | "on" | "true" | "false" | "off"No docNumberCuerpo string 3–24Sí docTypeCuerpo "CC" | "NIT" | "CE"Sí dvCuerpo string 1–1No ivaResponsibleCuerpo boolean | "on" | "true" | "false" | "off"No legalEntityCuerpo boolean | "on" | "true" | "false" | "off"No payoutDestinationCuerpo string 4–120Sí payoutMethodCuerpo "bank" | "nequi" | "daviplata" | "breb"Sí rutDocumentIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/affiliate-kycs/submit' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"bankCertDocumentId": "<bankCertDocumentId>",
"docNumber": "<docNumber>",
"docType": "CC",
"payoutDestination": "<payoutDestination>",
"payoutMethod": "bank",
"rutDocumentId": "<rutDocumentId>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/affiliate-kycs/submit' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"bankCertDocumentId" : "<bankCertDocumentId>" ,
"docNumber" : "<docNumber>" ,
"docType" : "CC" ,
"payoutDestination" : "<payoutDestination>" ,
"payoutMethod" : "bank" ,
"rutDocumentId" : "<rutDocumentId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"kycId": "<kycId>",
"status": "pending",
"submittedAt": "2026-09-25T15:00:00Z"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/affiliate-support-documents/download
Miembro de la firma Permiso: affiliate:self
downloadAffiliateSupportDocument
Parámetros de downloadAffiliateSupportDocument Nombre Dónde Tipo Obligatorio formatCuerpo "pdf" | "xml"No payoutIdCuerpo string (uuid)Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/affiliate-support-documents/download' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"payoutId":"<payoutId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/affiliate-support-documents/download' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"payoutId" : "<payoutId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"contentBase64": "<contentBase64>",
"contentType": "<contentType>",
"filename": "<filename>",
"sha256": "<sha256>"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/affiliates/apply
Miembro de la firma Permiso: affiliate:self
applyAffiliate
Parámetros de applyAffiliate Nombre Dónde Tipo Obligatorio Idempotency-KeyConsulta string ≤ 255Replays the first response for a repeated key. No disclosureAckCuerpo boolean | "on" | "true" | "false" | "off"No termsVersionCuerpo string 1–40Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/affiliates/apply' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"termsVersion":"<termsVersion>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/affiliates/apply' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"termsVersion" : "<termsVersion>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"code": "<code>",
"disclosureAck": true,
"id": "<id>",
"link": "<link>",
"status": "applied",
"termsAcceptedAt": "2026-09-25T15:00:00Z",
"termsVersion": "<termsVersion>"
}Errores
400 X_INPUT_INVALID 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID POST /api/approvals/request
Miembro de la firma Permiso: billing:grant Herramienta MCP: requestApproval
Staff only (billing:grant). Files a four-eyes request to grant (credits.grant, needs invoiceRef) or adjust (credits.adjust) more than 100 credits for a customer org. A different staff member must approve it in the console; it then executes by itself. Returns the request.
Parámetros de requestApproval Nombre Dónde Tipo Obligatorio creditsCuerpo integer -100000–100000Sí invoiceRefCuerpo string 1–120No kindCuerpo "credits.grant" | "credits.adjust"Sí orgIdCuerpo string (uuid)Sí packageCodeCuerpo string 1–40No reasonCuerpo string 1–1000Sí validDaysCuerpo integer 1–3650No
curl Copiar curl -X POST 'https://www.notificado.co/api/approvals/request' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"credits": -100000,
"kind": "credits.grant",
"orgId": "<orgId>",
"reason": "<reason>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/approvals/request' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"credits" : -100000 ,
"kind" : "credits.grant" ,
"orgId" : "<orgId>" ,
"reason" : "<reason>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"amount": {
"currency": "<currency>",
"minor": -9007199254740991
},
"credits": -9007199254740991,
"decidedAt": "2026-09-25T15:00:00Z",
"decidedBy": "<decidedBy>",
"decisionReason": "<decisionReason>",
"executedRef": "<executedRef>",
"expiresAt": "2026-09-25T15:00:00Z",
"failureReason": "<failureReason>",
"id": "<id>",
"kind": "<kind>",
"payload": {},
"payloadSha256": "<payloadSha256>",
"reason": "<reason>",
"requestedAt": "2026-09-25T15:00:00Z",
"requestedBy": "<requestedBy>",
"status": "<status>",
"subjectOrgId": "<subjectOrgId>"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/billing-profiles/save
Miembro de la firma Permiso: billing:purchase
saveBillingProfile
Parámetros de saveBillingProfile Nombre Dónde Tipo Obligatorio addressCuerpo string 1–200Sí cityCodeCuerpo string 5–5Sí docNumberCuerpo string 3–20Sí docTypeCuerpo "CC" | "NIT" | "CE" | "PP"Sí dvCuerpo "" | string 1–1 | nullSí emailCuerpo string (email) ≤ 254Sí fiscalResponsibilitiesCuerpo array of string 1–12 | "" | string 1–200Sí legalNameCuerpo string 1–200Sí orgIdCuerpo string (uuid)Sí returnToCuerpo string 1–240No taxRegimeCuerpo "responsable_iva" | "no_responsable_iva" | "simple"Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/billing-profiles/save' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"address": "<address>",
"cityCode": "<cityCode>",
"docNumber": "<docNumber>",
"docType": "CC",
"dv": "",
"email": "<email>",
"fiscalResponsibilities": [],
"legalName": "<legalName>",
"orgId": "<orgId>",
"taxRegime": "responsable_iva"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/billing-profiles/save' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"address" : "<address>" ,
"cityCode" : "<cityCode>" ,
"docNumber" : "<docNumber>" ,
"docType" : "CC" ,
"dv" : "" ,
"email" : "<email>" ,
"fiscalResponsibilities" : [],
"legalName" : "<legalName>" ,
"orgId" : "<orgId>" ,
"taxRegime" : "responsable_iva"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"address": "<address>",
"cityCode": "<cityCode>",
"docNumber": "<docNumber>",
"docType": "CC",
"dv": "<dv>",
"email": "<email>",
"fiscalResponsibilities": [
"<fiscalResponsibilities>"
],
"legalName": "<legalName>",
"taxRegime": "responsable_iva",
"updatedAt": "2026-09-25T15:00:00Z"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/coupons/preview
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/coupons/preview' \
-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/coupons/preview' , {
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 403 policy denied 422 X_BODY_INVALID POST /api/credits/adjust
Miembro de la firma Permiso: billing:grant
adjustCredits
Parámetros de adjustCredits Nombre Dónde Tipo Obligatorio deltaCuerpo integer -100000–100000Sí orgIdCuerpo string (uuid)Sí reasonCuerpo string 1–120Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/credits/adjust' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"delta":-100000,"orgId":"<orgId>","reason":"<reason>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/credits/adjust' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"delta" : -100000 ,
"orgId" : "<orgId>" ,
"reason" : "<reason>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"createdAt": "2026-09-25T15:00:00Z",
"delta": -9007199254740991,
"expiresAt": "2026-09-25T15:00:00Z",
"id": "<id>",
"kind": "<kind>"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/credits/grant
Miembro de la firma Permiso: billing:grant
grantCredits
Parámetros de grantCredits Nombre Dónde Tipo Obligatorio creditsCuerpo integer -9007199254740991–9007199254740991 | string 0–12Sí invoiceRefCuerpo string 1–120Sí orgIdCuerpo string 1–64Sí packageCodeCuerpo string 0–40No validDaysCuerpo integer -9007199254740991–9007199254740991 | string 0–12No
curl Copiar curl -X POST 'https://www.notificado.co/api/credits/grant' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{
"credits": -9007199254740991,
"invoiceRef": "<invoiceRef>",
"orgId": "<orgId>"
}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/credits/grant' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"credits" : -9007199254740991 ,
"invoiceRef" : "<invoiceRef>" ,
"orgId" : "<orgId>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"createdAt": "2026-09-25T15:00:00Z",
"delta": -9007199254740991,
"expiresAt": "2026-09-25T15:00:00Z",
"id": "<id>",
"kind": "<kind>"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/cycles/pay
Miembro de la firma Permiso: billing:purchase
payCycle
Parámetros de payCycle Nombre Dónde Tipo Obligatorio Idempotency-KeyConsulta 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/cycles/pay' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"cycleId":"<cycleId>","orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/cycles/pay' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , 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 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID POST /api/invoices/download
Miembro de la firma Permiso: invoicing:read Herramienta MCP: downloadInvoice
Returns the bytes (base64, with filename, content type and SHA-256) of the PDF or XML of one DIAN electronic invoice of your organization (format "pdf" or "xml"), or of one of its credit notes when creditNoteId is given. Every call is recorded in the audit log. Fails X_INVOICE_FILE_NOT_READY while the document is not issued yet (listMyInvoices shows its status).
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/api/invoices/download' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"format":"pdf","invoiceId":"<invoiceId>","orgId":"<orgId>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/invoices/download' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
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 403 policy denied 422 X_BODY_INVALID POST /api/pack-checkouts/start
Miembro de la firma Permiso: billing:purchase
startPackCheckout
Parámetros de startPackCheckout Nombre Dónde Tipo Obligatorio Idempotency-KeyConsulta string ≤ 255Replays the first response for a repeated key. No billingProfileCuerpo objectNo captchaTokenCuerpo string 0–4096No cf-turnstile-responseCuerpo string 0–4096No couponCodeCuerpo string 1–40No h-captcha-responseCuerpo string 0–4096No 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/pack-checkouts/start' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"orgId":"<orgId>","packCode":"<packCode>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/pack-checkouts/start' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , 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 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID POST /api/payment-returns/confirm
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/payment-returns/confirm' \
-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/payment-returns/confirm' , {
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 403 policy denied 422 X_BODY_INVALID POST /api/payment-sources/register
Miembro de la firma Permiso: billing:purchase
registerPaymentSource
Parámetros de registerPaymentSource Nombre Dónde Tipo Obligatorio Idempotency-KeyConsulta 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/payment-sources/register' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-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/payment-sources/register' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , 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 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID POST /api/payments/refresh
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/payments/refresh' \
-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/payments/refresh' , {
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 403 policy denied 422 X_BODY_INVALID POST /api/plans/change
Miembro de la firma Permiso: billing:purchase
changePlan
Parámetros de changePlan Nombre Dónde Tipo Obligatorio Idempotency-KeyConsulta 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/plans/change' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"orgId":"<orgId>","planCode":"<planCode>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/plans/change' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , 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 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID POST /api/referral-clicks/track
Miembro de la firma Permiso: affiliate:track-click
trackReferralClick
Parámetros de trackReferralClick Nombre Dónde Tipo Obligatorio codeCuerpo string 1–40Sí landingPathCuerpo string 1–300Sí
curl Copiar curl -X POST 'https://www.notificado.co/api/referral-clicks/track' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-H 'content-type: application/json' \
-d '{"code":"<code>","landingPath":"<landingPath>"}' TypeScript Copiar const response = await fetch('https://www.notificado.co/api/referral-clicks/track' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , origin : 'https://www.notificado.co' , cookie : sessionCookie },
body : JSON.stringify({
"code" : "<code>" ,
"landingPath" : "<landingPath>"
}),
});
const result = await response.json();Ejemplo de respuesta 200 Copiar {
"outcome": "recorded"
}Errores
400 X_INPUT_INVALID 403 policy denied 422 X_BODY_INVALID POST /api/referral-links/get
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/referral-links/get' \
-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/referral-links/get' , {
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 403 policy denied 422 X_BODY_INVALID POST /api/subscribes/invoke
Miembro de la firma Permiso: billing:purchase
subscribe
Parámetros de subscribe Nombre Dónde Tipo Obligatorio Idempotency-KeyConsulta 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/subscribes/invoke' \
-b cookies.txt \
-H 'origin: https://www.notificado.co' \
-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/subscribes/invoke' , {
method : 'POST' ,
headers : { 'content-type' : 'application/json' , 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 403 policy denied 409 X_IDEMPOTENCY_CONFLICT 422 X_BODY_INVALID POST /api/subscriptions/cancel
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/subscriptions/cancel' \
-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/subscriptions/cancel' , {
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 403 policy denied 422 X_BODY_INVALID POST /api/subscriptions/resume
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/subscriptions/resume' \
-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/subscriptions/resume' , {
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 403 policy denied 422 X_BODY_INVALID