Créer un achat
L'API créer un achat permet aux utilisateurs de l'OD de créer un achat sans facture
Les achats sans facture sont utilisés dans les cas d'achat B2B International, B2C et quelques autres cas particuliers
Les achats sans facture ne donnent pas lieu à la génération ou à l'envoi de documents, mais sont utilisés uniquement pour g énérer les données de e-reporting correspondantes
Pré-requis
- Posséder un compte OD
- Avoir créé une connexion PDP ou PPF
- Avoir des données de facturation
Requête
Pour créer un achat sans facture on fait une requête POST sur le chemin d'accès suivant:
v1/achats
On doit passer:
- L'identifiant utilisateur de l'OD dans l'en-tête X-OD-User-ID
- Au format JSON dans le corps de la requête
- Les données d'achat
- Les pièces jointes éventuelles
Par exemple:
- cURL
- Typescript
Requête de création d'une vente hors facturation électronique
curl \
-X POST \
-H 'X-OD-User-ID: ${userId}' \
-H 'Content-Type: application/json; charset=utf-8' \
-d @achat.json \
http://<host>:<port>/v1/achats
Requête de création d'une vente hors facturation électronique
const url = 'http://<host>:<port>/v1/achats'
const data: string = fs.readFileSync('achat.json');
const response: AxiosResponse = await axios.post(url, data, {
headers: {
'X-OD-User-ID': userId,
'Content-Type': 'application/json; charset=utf-8',
}
});
...
// récupération de l'URI de la nouvelle ressource
const uri: string = response.headers['location'];
Fichier achat.json
{
"siren": "810319517",
"description": "Imprimante Canon PIXMA MG3650",
"dateRealisation": "2024-02-02T15:06:31.865Z",
"codeDevise": "EUR",
"categorie": "TLB1",
"montantTotalHt": 1234.56,
"montantTotalTva": 246.91,
"repartitionTva": [
{
"taux": 20.0,
"baseImposition": 1234.56,
"montantTva": 246.91
}
],
"piecesJointes": [
{
"nomFichier": "ticket_de_caisse.pdf",
"contentType": "application/pdf",
"base64": "PHN2ZyBoZWlnaHQ9IjI2IiB4bWxucz0iaHR0cDov..."
}
]
}
| Propriétés | Valeur | Requis |
|---|---|---|
| siren | Numéro SIREN de l'entreprise acheteuse | Non si l'utilisateur n'a qu'une entreprise |
| description | Description de l'achat | Non (mais fortement conseillé) |
| dateRealisation | Date de réalisation de la prestation de service ou date de livraison des biens | Oui |
| codeDevise | Code ISO 4217 | Non (par défaut EUR) |
| Catégorie | Catégorie de transaction | Oui |
| montantTotalHt | Montant total hors taxes | Oui |
| montantTotalTva | Montant total TVA | Oui |
| repartitionTva[i].taux | Taux de TVA | Oui |
| repartitionTva[i].baseImposition | Base d'imposition | Oui |
| repartitionTva[i].montantTva | Montant TVA | Oui |
| piecesJointes[i].nomFichier | Nom de fichier | Oui |
| piecesJointes[i].contentType | Content Type | Oui |
| piecesJointes[i].base64 | Fichier encodé en Base64 | Oui |
Réponse
Si tout s'est bien passé, la réponse de l'OD est 201 CREATED avec l'en-tête Location contenant l'emplacement de la ressource:
Réponse type de l'OD pour la création d'un compte utilisateur
HTTP/1.1 201 Created
X-Powered-By: Express
X-RateLimit-Limit: 12000
X-RateLimit-Remaining: 11998
X-RateLimit-Reset: 60
Content-Type: application/json; charset=utf-8
Content-Length: 45
ETag: W/"2d-SVoQrUQ9lw1spmQdDLKIlsOgr98"
Date: Thu, 11 Jan 2024 13:45:47 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Location: v1/achats/26ad3a21-615e-40ea-a05a-2ac8e8a2f373
Erreurs
Si une erreur s'est produite, les codes et messages suivants peuvent être retournés:
| Code | Message |
|---|---|
| 400 Bad Request | Requête invalide - Voir messages d'erreur |
| 401 Unauthorized | Informations d'authentification invalides |
| 403 Forbidden | Droits insuffisants pour effectuer cette action |
Impact
- Un achat sans facture a été créé dans l'OD
- Une déclaration de transaction a été ajoutée automatiquement aux données de e-reporting en attente de transmission
- A tout moment, il est possible de:
- Retrouver cet achat parmi d'autres via l'API parcourir les achats
- Consulter cet achat via l'API consulter un achat