Skip to main content
Every calculation response carries a warnings array. It is the channel through which the engine says “what you sent me does not line up with what I can see” — without deciding on your behalf.
A warning never changes an amount. Every figure in the response already reflects the request exactly as you sent it.
That is what separates this channel from validation. A warning reports that an input contradicts something the engine can check for itself, and leaves the decision to you — because you may hold information this API never receives.

The field

warnings is always present and never null. It is an empty list when there is nothing to flag, so you can iterate it without branching. It appears on the /calculate response and inside every results[].calculation of a /batch response.
severity exists from the start so that richer severities will not break the contract later.

Warning codes

The last three came in with fortnightly settlement.

Threshold rules (CO ordinario)

Two Colombian flags are checked against the salary that gates them: Both are measured on salario_basico, not on total earnings. That is a debatable reading, so every message states exactly what it compared: a payroll officer who disagrees can see the criterion instead of guessing it. What the silence used to cost, measured in CO 2026:
  • Auxilio paid where it was not due, at 5 SMMLV: 249,095 per month of overpayment per employee, plus an inflated cesantias base.
  • Exoneration claimed where it was not due, at 15 SMMLV: 3,545,583 per month the employer believes it does not owe. Over twelve months, more than 42 million of exposure with the UGPP and the DIAN.

Why one flag warns in both directions and the other does not

aplica_exoneracion_114_1 does not warn when it is off, and that is deliberate. The exoneration also requires the employer to be a corporate income tax filer — an attribute of the company that never arrives in a request. Warning on the off case would fire on almost every legitimate ordinary request, and that is how you train an integrator to ignore the entire channel. The auxilio warns in both directions, because there the engine has all the information it needs. The same reasoning applies in Peru: of the two concepts paid alongside the gratificacion, only one is registered. Two warnings for one problem is the same mistake.

Handling warnings in code

Surface warnings to whoever reviews the payroll before it is released. They are cheapest to act on there.

What warnings are not

Not a legal validation. Clevis does not say whether the employer is entitled to a benefit. It says the flag and the salary do not agree.Not a complete list of what could be wrong. Registered rules exist only for CO ordinario and for the four codes above. There is no general coverage to promise.Not a rejection. Nothing is refused — not even the case that hurts most legally, an auxilio omitted for someone entitled to it.