Saltar al contenido

Referencia de la API

Créditos, pagos y facturación

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

Cada ejemplo supone una sesión iniciada; cómo obtenerla está en Autenticación

checkoutTerms

GET/_x/query/checkout-terms

Miembro de la firmaPermiso: billing:purchase

checkoutTerms

Parámetros de checkoutTerms
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor 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
  • 403 policy denied

creditsBalance

GET/_x/query/credits-balance

Miembro de la firmaPermiso: billing:readHerramienta 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
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/credits-balance?orgId=<orgId>' \
  -b cookies.txt
TypeScript
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
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

ledgerList

GET/_x/query/ledger-list

Miembro de la firmaPermiso: billing:read

ledgerList

Parámetros de ledgerList
NombreDóndeTipoObligatorio
limitConsultainteger 1–500No
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/ledger-list?orgId=<orgId>' \
  -b cookies.txt
TypeScript
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
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

listMyInvoices

GET/_x/query/list-my-invoices

Miembro de la firmaPermiso: invoicing:readHerramienta 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
NombreDóndeTipoObligatorio
limitConsultainteger 1–200No
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/list-my-invoices?orgId=<orgId>' \
  -b cookies.txt
TypeScript
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
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor 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
  • 403 policy denied

myAffiliate

GET/_x/query/my-affiliate

Miembro de la firmaPermiso: affiliate:self

myAffiliate

Parámetros de myAffiliate
NombreDóndeTipoObligatorio
userIdConsultastring (uuid)Sí
_firstConsultainteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor a previous page answered; needs _firstNo
curl
curl 'https://www.notificado.co/_x/query/my-affiliate?userId=<userId>' \
  -b cookies.txt
TypeScript
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
[
  null
]

Errores

  • 400 X_INPUT_INVALID or X_CURSOR_INVALID
  • 403 policy denied

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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor 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
  • 403 policy denied

mySubscription

GET/_x/query/my-subscription

Miembro de la firmaPermiso: payment:read

mySubscription

Parámetros de mySubscription
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor 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
  • 403 policy denied

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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor 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
  • 403 policy denied

packOffers

GET/_x/query/pack-offers

Miembro de la firmaPermiso: payment:read

packOffers

Parámetros de packOffers
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor 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
  • 403 policy denied

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–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor 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
  • 403 policy denied

planOffers

GET/_x/query/plan-offers

Miembro de la firmaPermiso: payment:read

planOffers

Parámetros de planOffers
NombreDóndeTipoObligatorio
orgIdConsultastring (uuid)Sí
_firstConsultainteger 1–10000page size; present, the response is the page envelope rather than the bare rows (1 to 10000)No
_afterConsultastringthe endCursor 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
  • 403 policy denied

submitAffiliateKyc

POST/api/affiliate-kycs/submit

Miembro de la firmaPermiso: affiliate:self

submitAffiliateKyc

Parámetros de submitAffiliateKyc
NombreDóndeTipoObligatorio
bankCertDocumentIdCuerpostring (uuid)Sí
declarantCuerpoboolean | "on" | "true" | "false" | "off"No
declares383Cuerpoboolean | "on" | "true" | "false" | "off"No
docNumberCuerpostring 3–24Sí
docTypeCuerpo"CC" | "NIT" | "CE"Sí
dvCuerpostring 1–1No
ivaResponsibleCuerpoboolean | "on" | "true" | "false" | "off"No
legalEntityCuerpoboolean | "on" | "true" | "false" | "off"No
payoutDestinationCuerpostring 4–120Sí
payoutMethodCuerpo"bank" | "nequi" | "daviplata" | "breb"Sí
rutDocumentIdCuerpostring (uuid)Sí
curl
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
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
{
  "kycId": "<kycId>",
  "status": "pending",
  "submittedAt": "2026-09-25T15:00:00Z"
}

Errores

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

downloadAffiliateSupportDocument

POST/api/affiliate-support-documents/download

Miembro de la firmaPermiso: affiliate:self

downloadAffiliateSupportDocument

Parámetros de downloadAffiliateSupportDocument
NombreDóndeTipoObligatorio
formatCuerpo"pdf" | "xml"No
payoutIdCuerpostring (uuid)Sí
curl
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
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
{
  "contentBase64": "<contentBase64>",
  "contentType": "<contentType>",
  "filename": "<filename>",
  "sha256": "<sha256>"
}

Errores

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

applyAffiliate

POST/api/affiliates/apply

Miembro de la firmaPermiso: affiliate:self

applyAffiliate

Parámetros de applyAffiliate
NombreDóndeTipoObligatorio
Idempotency-KeyConsultastring ≤ 255Replays the first response for a repeated key.No
disclosureAckCuerpoboolean | "on" | "true" | "false" | "off"No
termsVersionCuerpostring 1–40Sí
curl
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
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
{
  "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

requestApproval

POST/api/approvals/request

Miembro de la firmaPermiso: billing:grantHerramienta 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
NombreDóndeTipoObligatorio
creditsCuerpointeger -100000–100000Sí
invoiceRefCuerpostring 1–120No
kindCuerpo"credits.grant" | "credits.adjust"Sí
orgIdCuerpostring (uuid)Sí
packageCodeCuerpostring 1–40No
reasonCuerpostring 1–1000Sí
validDaysCuerpointeger 1–3650No
curl
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
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
{
  "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

saveBillingProfile

POST/api/billing-profiles/save

Miembro de la firmaPermiso: billing:purchase

saveBillingProfile

Parámetros de saveBillingProfile
NombreDóndeTipoObligatorio
addressCuerpostring 1–200Sí
cityCodeCuerpostring 5–5Sí
docNumberCuerpostring 3–20Sí
docTypeCuerpo"CC" | "NIT" | "CE" | "PP"Sí
dvCuerpo"" | string 1–1 | nullSí
emailCuerpostring (email) ≤ 254Sí
fiscalResponsibilitiesCuerpoarray of string 1–12 | "" | string 1–200Sí
legalNameCuerpostring 1–200Sí
orgIdCuerpostring (uuid)Sí
returnToCuerpostring 1–240No
taxRegimeCuerpo"responsable_iva" | "no_responsable_iva" | "simple"Sí
curl
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
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
{
  "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

previewCoupon

POST/api/coupons/preview

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/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
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
{
  "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

adjustCredits

POST/api/credits/adjust

Miembro de la firmaPermiso: billing:grant

adjustCredits

Parámetros de adjustCredits
NombreDóndeTipoObligatorio
deltaCuerpointeger -100000–100000Sí
orgIdCuerpostring (uuid)Sí
reasonCuerpostring 1–120Sí
curl
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
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
{
  "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

grantCredits

POST/api/credits/grant

Miembro de la firmaPermiso: billing:grant

grantCredits

Parámetros de grantCredits
NombreDóndeTipoObligatorio
creditsCuerpointeger -9007199254740991–9007199254740991 | string 0–12Sí
invoiceRefCuerpostring 1–120Sí
orgIdCuerpostring 1–64Sí
packageCodeCuerpostring 0–40No
validDaysCuerpointeger -9007199254740991–9007199254740991 | string 0–12No
curl
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
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
{
  "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

payCycle

POST/api/cycles/pay

Miembro de la firmaPermiso: billing:purchase

payCycle

Parámetros de payCycle
NombreDóndeTipoObligatorio
Idempotency-KeyConsultastring ≤ 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/cycles/pay' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"cycleId":"<cycleId>","orgId":"<orgId>"}'
TypeScript
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
{
  "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

downloadInvoice

POST/api/invoices/download

Miembro de la firmaPermiso: invoicing:readHerramienta 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
NombreDóndeTipoObligatorio
creditNoteIdCuerpostring (uuid)No
formatCuerpo"pdf" | "xml"Sí
invoiceIdCuerpostring (uuid)Sí
orgIdCuerpostring (uuid)Sí
curl
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
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
{
  "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

startPackCheckout

POST/api/pack-checkouts/start

Miembro de la firmaPermiso: billing:purchase

startPackCheckout

Parámetros de startPackCheckout
NombreDóndeTipoObligatorio
Idempotency-KeyConsultastring ≤ 255Replays the first response for a repeated key.No
billingProfileCuerpoobjectNo
captchaTokenCuerpostring 0–4096No
cf-turnstile-responseCuerpostring 0–4096No
couponCodeCuerpostring 1–40No
h-captcha-responseCuerpostring 0–4096No
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/pack-checkouts/start' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>","packCode":"<packCode>"}'
TypeScript
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
{
  "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

confirmPaymentReturn

POST/api/payment-returns/confirm

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/payment-returns/confirm' \
  -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/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
{
  "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

registerPaymentSource

POST/api/payment-sources/register

Miembro de la firmaPermiso: billing:purchase

registerPaymentSource

Parámetros de registerPaymentSource
NombreDóndeTipoObligatorio
Idempotency-KeyConsultastring ≤ 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/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
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
{
  "id": "<id>",
  "label": "<label>",
  "status": "<status>",
  "type": "<type>"
}

Errores

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 409 X_IDEMPOTENCY_CONFLICT
  • 422 X_BODY_INVALID

refreshPayment

POST/api/payments/refresh

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/payments/refresh' \
  -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/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
{
  "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

changePlan

POST/api/plans/change

Miembro de la firmaPermiso: billing:purchase

changePlan

Parámetros de changePlan
NombreDóndeTipoObligatorio
Idempotency-KeyConsultastring ≤ 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/plans/change' \
  -b cookies.txt \
  -H 'origin: https://www.notificado.co' \
  -H 'content-type: application/json' \
  -d '{"orgId":"<orgId>","planCode":"<planCode>"}'
TypeScript
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
{
  "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

trackReferralClick

POST/api/referral-clicks/track

Miembro de la firmaPermiso: affiliate:track-click

trackReferralClick

Parámetros de trackReferralClick
NombreDóndeTipoObligatorio
codeCuerpostring 1–40Sí
landingPathCuerpostring 1–300Sí
curl
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
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
{
  "outcome": "recorded"
}

Errores

  • 400 X_INPUT_INVALID
  • 403 policy denied
  • 422 X_BODY_INVALID

subscribe

POST/api/subscribes/invoke

Miembro de la firmaPermiso: billing:purchase

subscribe

Parámetros de subscribe
NombreDóndeTipoObligatorio
Idempotency-KeyConsultastring ≤ 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/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
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
{
  "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

cancelSubscription

POST/api/subscriptions/cancel

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/subscriptions/cancel' \
  -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/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
{
  "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

resumeSubscription

POST/api/subscriptions/resume

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/subscriptions/resume' \
  -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/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
{
  "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