Invoice Status Codes
Invoice Status Codes
NomaUBL uses two sets of status codes stored in F564231.K74RSCD and F564235.K74RSCD:
- PA platform codes (200-series) — assigned by the Platform Agréée during the invoice lifecycle
- Internal 99xx codes — assigned by NomaUBL to represent the local processing workflow
The full catalog is defined in config-lists.json under the statuses template. The property value format is:
"<code>": "<CONSTANT>|<label_FR>|<label_EN>||<paStatus>"
Where paStatus=1 means the code comes from the PA, and paStatus=0 means it is an internal NomaUBL code.
PA platform status codes (200-series)
These codes are received from the Platform Agréée via lifecycle updates.
| Code | Constant | Label (FR) | Label (EN) |
|---|---|---|---|
200 | STATUS_DEPOSITED | Déposée | Deposited |
201 | STATUS_ISSUED | Emise par la plateforme | Issued by platform |
202 | STATUS_RECEIVED | Reçue de la plateforme | Received by platform |
203 | STATUS_MADE_AVAILABLE | Mise à Disposition | Made available |
204 | STATUS_UNDER_PROCESSING | Prise en charge | Under processing |
205 | STATUS_APPROVED | Approuvée | Approved |
206 | STATUS_PARTIALLY_APPROVED | Approuvée Partiellement | Partially approved |
207 | STATUS_DISPUTED | En litige | Disputed |
208 | STATUS_SUSPENDED | Suspendue | Suspended |
209 | STATUS_COMPLETED | Complétée | Completed |
210 | STATUS_REFUSED | Refusée | Refused |
211 | STATUS_PAYMENT_PROCESSED | Paiement Transmis | Payment transmitted |
212 | STATUS_PAYMENT_RECEIPT | Encaissée | Payment received |
213 | STATUS_REJECTED | Rejetée | Rejected |
214 | STATUS_TARGETED | Visée | Targeted |
220 | STATUS_CANCELLED | Annulée | Cancelled |
221 | STATUS_ROUTING_ERROR | Erreur de routage | Routing error |
224 | STATUS_DIRECT_PAYMENT_REQUEST | Demande de Paiement Direct | Direct payment request |
225 | STATUS_FACTORED | Affacturée | Factored |
226 | STATUS_FACTORED_CONFIDENTIAL | Affacturée Confidentiel | Factored confidential |
227 | STATUS_ACCOUNT_CHANGE | Changement de Compte à Payer | Payment account change |
228 | STATUS_NOT_FACTORED | Non Affacturée | Not factored |
501 | STATUS_IRRECOVERABLE | Irrecevable | Irrecoverable |
600 | STATUS_EMAIL | Erreur Email | Email error |
Internal workflow codes (99xx)
These codes are set by NomaUBL to represent the processing state within the JDE/NomaUBL system, before and during PA interaction.
| Code | Constant | Label (FR) | Label (EN) | Set when |
|---|---|---|---|---|
9900 | STATUS_CREATED | Facture créée | Invoice created | Invoice record created in F564231 |
9901 | STATUS_VALIDATED | Validation réussie | Validation successful | All validation layers pass with no errors |
9902 | STATUS_VALIDATED_WARN | Validation avec avertissements | Validation with warnings | Validation passes but warnings exist |
9903 | STATUS_SENT_TO_PA | Envoi à la PA | Sent to PA | POST to PA succeeds, UUID received |
9904 | STATUS_ERROR_SENT | Echec d'envoi à la PA | Send failed | POST to PA returns HTTP error |
9905 | STATUS_ERROR_VALIDATION | Echec de validation | Validation failed | XSD or Schematron errors found |
9906 | STATUS_PENDING | En attente de traitement par la PA | Pending PA processing | Awaiting PA import result |
9907 | STATUS_FAILED_IMPORT | Echec d'import par la PA | PA import failed | PA returns status: failed |
Normal invoice lifecycle
9900 (Created)
│
├─ Validation errors ──► 9905 (Validation failed) [stop]
│
9901 or 9902 (Validated)
│
├─ sendToPA=N ──► [stop here, no PA interaction]
│
9903 (Sent to PA)
│
├─ HTTP error ──► 9904 (Send failed) [stop]
│
9906 (Pending — awaiting -import poll)
│
├─ PA still processing ──► [unchanged, re-poll later]
├─ PA import failed ──► 9907 (PA import failed) [stop]
│
200 (Deposited)
│
├─ 201 (Issued by platform)
├─ 202 (Received by platform)
├─ 204 (Under processing)
├─ 205 (Approved) / 210 (Refused) / 213 (Rejected)
├─ 207 (Disputed)
├─ 211 (Payment transmitted)
└─ 212 (Payment received) → 209 (Completed)
Status transitions in Oracle tables
At each step, the following tables are updated by InvoiceStatusCatalog.StatusTransition.apply():
| Step | F564231.K74RSCD | F564235 row inserted |
|---|---|---|
| Invoice created | 9900 | Yes |
| Validation OK | 9901 or 9902 | Yes |
| Validation failed | 9905 | Yes + errors in F564236 |
| Sent to PA | 9903 | Yes |
| Send error | 9904 | Yes |
| Pending | 9906 | — |
| PA deposited | 200 | Yes |
| PA subsequent update | new PA code | Yes |
| PA import failed | 9907 | Yes with error messages |
Using InvoiceStatusCatalog
// Simple transitions
InvoiceStatusCatalog.created().apply(dbHandler);
InvoiceStatusCatalog.validated().apply(dbHandler);
InvoiceStatusCatalog.validatedWithWarnings().apply(dbHandler);
InvoiceStatusCatalog.sentToPA().apply(dbHandler);
InvoiceStatusCatalog.pending().apply(dbHandler);
InvoiceStatusCatalog.deposited().apply(dbHandler); // → code 200
// Error transitions with messages
InvoiceStatusCatalog.errorValidation(errorList).apply(dbHandler);
InvoiceStatusCatalog.errorSent(httpError).apply(dbHandler);
InvoiceStatusCatalog.failedImport(errorsString).apply(dbHandler);
// Custom status (e.g. from PA response mapping)
InvoiceStatusCatalog.custom("205", "Approuvée").apply(dbHandler);