Aller au contenu

La fonction “api.add_invoice”

Cette fonction permet d'uploader une facture pour un colis déjà déclaré à IMX.

Le webservice de déclaration de colis permet déjà la transmission de la facture, mais cette fonction permet une transmission de facture a posteriori. Elle est également utile pour les clients déclarant leurs colis par fichiers FTP.

Description de la requête

Cette fonction prend trois arguments en paramètre :

  • username: donné par IMX ;
  • password: donné par IMX ;
  • data: dictionnaire de données contenant les données de votre requête.

L'objet data

Tous les champs sont obligatoires.

Nom Description
account char(40)Identifiant compte clientDans la plupart des cas, est égal au paramètre “username”.
imx_tracking_id intRéférence IMX du colis.
invoice_number c(30)Numéro de facture.
invoice base64Contenu binaire de la facture liée au contenu du colis. La facture doit être au format PDF, sa taille doit être inférieure à 1Mo. Le contenu doit être encodé en base64.

Remarques

  • IMX ne stocke qu'une facture par colis. Des eventuels appels successifs à cette fonction écrasent les versions précedemment stockées de la facture colis.
  • La facture associée à un colis est disponible dans l'interface de recherche sur suivi.imxpostal.fr, dans l'onglet Documents du détail colis.

Description de la réponse

Champs Description
status textok si la requête a correctement été traitée

Exemple

python

import base64
import requests

# Encodage base64 du fichier pdf de la facture
invoice = base64.b64encode(
    open("{invoice_filename}", "rb").read()
).decode("utf-8")

# Construction du dictionnaire de données
data = {
    "id": "test",
    "jsonrpc": "2.0",
    "method": "api.add_invoice",
    "params": [
        "{imx_username}",
        "{imx_password}",
        {
           "account": "{imx_account}",
            "imx_tracking_id": {imx_tracking_id},
            "invoice_number": "{invoice_number}",
            "invoice": invoice,
        },
    ],
}

# Appel de l'API
xx = requests.post("https://webservice.imxpostal.fr/smc/rpc/", json=data)

output = xx.json()
assert xx["result"]["status"] == "ok"