Why is Belvo returning invoices with missing details?
Our ability to extract invoice data from the Government of Mexico's tax office (SAT) can at times be affected by the reliability and limitations of their platform. In addition, SAT has some limits in place in regards to the number of XMLs you can download in a given day. This limit refreshes at 00:00 (CST). It is unlikely you'll be affected by these limits unless you are retrieving a high volume of invoices (more than 2000 invoices).
However, if you do, invoices retrieved after having reached the limit set by SAT might contain partial information (some of the fields will be set to null
). This is because some of the attributes depend on the XML being available from SAT in order to be filled in.
What invoice information is Belvo always able to retrieve?
When we are not able to download the XML invoice, we still return the invoice metadata for the invoice (regardless of the limit). This includes:
type
invoice_type
invoice_identification
invoice_date
sender_id
sender_name
receiver_id
receiver_name
certification_date
certification_authority
currency
total_amount
status
cancelation_status
cancelation_update_date
As we always return at least this data, you can confirm that the invoice exists and retrieve it at a later stage, that is, once SAT resets the daily limit.
How do I know if an invoice has been affected by the download limit set by SAT?
Invoices that are affected by the download limit imposed by SAT will have the following response message in the warnings
attribute:
{
...
"warnings": {
"code": "sat_xml_limit_reached",
"message": "The daily limit for XML downloads set by SAT was reached so this invoice might be missing data. Please check <https://tinyurl.com/yydzhy5d> for more information on this error."
},
...
}
If the invoice is complete and no errors have occurred, then the warnings
attribute will simply contain null
:
{
...
"warnings": null
...
}
What happens if we have an incomplete invoice that is already saved in Belvo and, in an update, SAT returns a complete invoice?
If we had an incomplete invoice with warnings already saved in Belvo, we'll overwrite it with a complete version of that invoice as soon as we receive it.
What happens if we have an invoice that is already saved in Belvo and, in an update, SAT returns an incomplete invoice with warnings?
If we had a correct invoice saved in Belvo and we receive a new version with missing details, we don't return or save the incomplete invoice. Instead, we'll return the last correct version of that invoice that we had already saved.
How do I fix an invoice saved with incomplete data?
Recurrent links will try to get a fresh version of the invoice in the next refresh (by default every 7 days), so you should receive a fixed version of the invoice then.
If you are using single links, we suggest you make another POST request after 24h to retrieve the incomplete invoices.