Cargar factura
Cargar factura en detalle de venta
Para poder realizar la carga de una factura debes realizar un POST como form.data con key: tipo file y value fiscal_document que referencia al fiscal_document (archivo del documento que adjuntas), pack_id (ID del pack) y access_token (token público). Llamada: Ejemplo: Respuesta: Actualmente, cuando necesites adjuntar la factura en XML asociado, debes realizar el siguiente POST y especificar alguno de los siguientes formatos: Llamada: Ejemplo: Respuesta: El usuario no está autorizado a subir una factura: El archivo no puede ser null o no se encuentra: Tipo de archivo no permitido: Archivo excede el tamaño máximo: Adjuntar más de un archivo: Adjuntar más de un archivo en un pack del mismo tipo: Adjuntar un archivo en un pack que ya tiene la cantidad máxima de archivos cargados previamente: Adjuntar un archivo de un tipo en un pack que ya tiene un archivo de ese tipo cargado previamente: Adjuntar archivo con nombre vacío: Adjuntar archivo para pack con envío fulfillment o cross-docking: Para poder obtener el id de las facturas, debes realizar una llamada GET. La respuesta dependerá del rol del usuario que haga la consulta y podrá ser: Ejemplo: Respuesta: El usuario no está autorizado a obtener los ids de facturas asociada al pack: Si el pack no tiene ninguna factura cargada: Si el usuario no tiene ninguna factura cargada por él dentro del pack: Para poder obtener facturas, debes realizar una llamada GET con el filename, es decir, el ID del file. La respuesta será exitosa cuando devuelva el archivo que solicitas. Llamada: Ejemplo: El usuario no está autorizado a obtener la factura asociada al pack: No existe el fiscal_document que se quiere obtener: La factura no pudo ser encontrada en el servidor, intente nuevamente en unos segundos: Para eliminar la factura, debes realizar una llamada DELETE especificando el pack_id es decir el ID del pack. De esta manera, eliminarás todos los archivos que hayas cargado en el pack. Llamada: Ejemplo: Si el vendedor tiene 1 solo archivo adjuntado al PACK_ID, esta es la respuesta: Si tiene mas de un archivo adjuntado, es decir PDF y XML, la respuesta es la siguiente: Eliminar una factura de un pack que no existe o que ya fue borrada: Usuario no está autorizado a eliminar la factura asociada al pack: El body se encuentra vacío: No se pudo recuperar el body del request: El usuario no está autorizado a pedir los datos fiscales: Si el usuario no puede usar la mensajería: Si el texto supera la cantidad máxima de caracteres: Si el texto está vacío: Si el texto no es válido: El id de la orden no pertenece a un pack: Pack_id vacío o no numérico: Pack_id negativo o 0: Error por Access token En caso de que realices la consulta sin el access token correspondiente, obtendrás el siguiente error: Error por acceso desde site no autorizado En caso de que quieran utilizar la API desde algún site en el cual no está disponible, obtendrás el siguiente error:
Para conocer el pack_id, deberás obtener el campo “pack_id” en la respuesta de /orders/
En caso que el pack id contenga un valor null, debes tomar por defecto el order id, manteniendo el recurso /packs en la llamada a la API.
curl -X POST https://api.mercadolibre.com/packs/$PACK_ID/fiscal_documents
-H 'Content-Type: multipart/form-data' \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-F 'fiscal_document=@/home/user/.../Factura_adjunta.pdf'
curl -X POST https://api.mercadolibre.com/packs/2000000089077943/fiscal_documents
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'content-type: multipart/form-data'
-F 'fiscal_document=@/home/user/.../Factura_adjunta.pdf'
{
"ids" : ["415460047_a96d8dea-38cd-4402-938e-80a1c134fc5d"]
}
Adjuntar archivo XML
curl -X POST https://api.mercadolibre.com/packs/$PACK_ID/fiscal_documents
-H 'content-type: multipart/form-data'
-H 'Authorization: Bearer $ACCESS_TOKEN'
-F 'fiscal_document=@/home/user/.../Factura_adjunta.pdf'
-F 'fiscal_document=@/home/user/.../Factura_adjunta.xml'
curl -X POST 'https://api.mercadolibre.com/packs/2000000089077943/fiscal_documents'
-H 'Authorization: Bearer $ACCESS_TOKEN'
-H 'content-type: multipart/form-data'
-F 'fiscal_document=@/home/user/.../Factura_adjunta.pdf'
-F 'fiscal_document=@/home/user/.../Factura_adjunta.xml'
{
"ids" : ["415460047_a96d8dea-38cd-4402-938e-80a1c134fc5d",
"415460047_4c942945-ae16-46f2-98fa-a772322c7e70" ]
}
Posibles errores en la carga de factura
{
"message": "Access Denied, you are not authorized.",
"error": "forbidden",
"status": 403,
"cause": []
}
{
"message": "File cannot be empty",
"error": "bad_request",
"status": 400,
"cause": []
}
{
"message":"File type: $FILE_TYPE is not allowed",
"error":"bad_request",
"status":400,
"cause":[
]
}
{
"message":"File Not allowed, exceeds maximum size",
"error":"bad_request",
"status":400,
"cause":[]
}
{
"message":"Files Not allowed, you can upload only two files, one of each type",
"error":"bad_request",
"status":400,
"cause":[
]
}
{
"message":"Files Not allowed, you can upload only one file of type: $FILE_TYPE",
"error":"conflict",
"status":409,
"cause":[
]
}
{
"message":"File Not allowed, the max amount of files already exist for the pack: $PACK_ID and seller: $SELLER_ID",
"error":"conflict",
"status":409,
"cause":[
]
}
{
"message":"File Not allowed, a file already exists for the pack: $PACK_ID and seller: $SELLER_ID of the type: $FILE_TYPE",
"error":"conflict",
"status":409,
"cause":[
]
}
{
"message":"Filename cannot be empty",
"error":"bad_request",
"status":400,
"cause":[]
}
{
"message": "Access denied, you must use the biller of MercadoLibre",
"error": "forbidden",
"status": 403,
"cause": []
}
Obtener ids de las facturas
Rol vendedor: los ids de las facturas que cargó en el pack.
Rol comprador: todos los ids de las facturas que pertenecen al pack.
Llamada:curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/packs/$PACK_ID/fiscal_documents
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN'https://api.mercadolibre.com/packs/2000000089077943/fiscal_documents
{
"pack_id": 2000000089077943,
"fiscal_documents":[
{
"id":"fc76f79d-1599-43ed-8675-569482e2ec21",
"date":"2020-04-27T23:10:21Z",
"file_type":"application/pdf"
"filename":"factura.pdf"
}
]
}
Posibles errores obteniendo ids de facturas
{
"message": "Access Denied, you are not authorized.",
"error": "forbidden",
"status": 403,
"cause": []
}
{
"message": "The pack_fiscal_document with pack_id: %d does not exist",
"error": "not_found",
"status": 404,
"cause": []
}
{
"message": "The pack_fiscal_document with pack_id: %d does not have any fiscal_document attached for the user_id: %d",
"error": "not_found",
"status": 404,
"cause": []
}
Obtener factura
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/packs/$PACK_ID/fiscal_documents/$FISCAL_DOCUMENT_ID
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/packs/2000000089077943/fiscal_documents/415460047_a96d8dea-38cd-4402-938e-80a1c134fc5d
Posibles errores por obtener facturas
{
"message": "Access Denied for user with id : ${ID} to the fiscal_document with id: ${ID}.",
"error": "forbidden",
"status": 403,
"cause": []
}
{
"message": "The fiscal_document with id: ${ID} does not exist",
"error": "bad_request",
"status": 400,
"cause": []
}
{
"message": "The fiscal_document with id: ${ID} could not be retrieved from storage",
"error": "not_found",
"status": 404,
"cause": []
}
Eliminar factura
curl -X DELETE -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/packs/$PACK_ID/fiscal_documents
curl -X DELETE -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/packs/2000000089077943/fiscal_documents
{
"message" : "The fiscal_document with "id" : 415460047_a96d8dea-38cd-4402-938e-80a1c134fc5d was deleted"
}
{
"message" : "The fiscal_documents with the following ids: 415460047_a96d8dea-38cd-4402-938e-80a1c134fc5d, 415460047_4c942945-ae16-46f2-98fa-a772322c7e70 were deleted
}
Posibles errores por eliminar facturas
{
"message":"Cannot delete. The pack: 2000000089077943 doesn't have a fiscal_document attached",
"error":"not_found",
"status":404,
"cause":[]
}
{
"message": "Access Denied, you are not authorized.",
"error": "forbidden",
"status": 403,
"cause": []
}
Posibles errores por solicitar datos de facturación
{
"message": "The body of the request cannot be empty",
"error": "internal_server_error",
"status": 500,
"cause": []
}
{
"message": "Error retrieving the body from the request",
"error": "internal_server_error",
"status": 500,
"cause": []
}
{
"message": "Access Denied, you are not authorized.",
"error": "forbidden",
"status": 403,
"cause": []
}
{
"message": "You cannot ask for the billing_info because you are not allowed to use the messaging service",
"error": "forbidden",
"status": 403,
"cause": []
}
{
"message": "The text content is too long, max characters allowed are: 500",
"error": "bad_request",
"status": 400,
"cause": []
}
{
"message": "The text content cannot be empty",
"error": "bad_request",
"status": 400,
"cause": []
}
{
"message": "You cannot ask for the billing_info because the text is not valid. Check Messaging Post Sale documentation for more information",
"error": "not_acceptable",
"status": 406,
"cause": []
}
Errores generales
{
"message":"The order belong to a pack/purchase",
"error":"bad_request",
"status":400,
"cause":[]
}
{
"message":"pack.id must be numeric and not empty",
"error":"bad_request",
"status":400,
"cause":[]
}
{
"message":"pack.id is invalid",
"error":"bad_request",
"status":400,
"cause":[]
}
{
"message": "access_token was not sent",
"error": "access_token_not_granted",
"status": 403,
"cause": []
}
{
"message": "Access Denied, this API is not available on your site: MLB",
"error": "forbidden",
"status": 403,
"cause": []
}