> ## Documentation Index
> Fetch the complete documentation index at: https://docs.umeme.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Consulter une vente

> Rend une vente et son statut ; c'est aussi le corps des rappels. Seul `NON_TROUVEE` prouve qu'une vente n'existe pas.

Consultez une même vente au plus toutes les 30 secondes. Portée de la clé : `ventes:lire`.



## OpenAPI

````yaml openapi/v1.json GET /v1/ventes/{uuid}
openapi: 3.1.0
info:
  title: API Umeme pour les intégrateurs
  version: 1.0.0
  description: >-
    Contrat de l'API Umeme pour les intégrateurs : vendre de l'électricité
    prépayée et des abonnements TV depuis le portefeuille de votre revendeur.
servers:
  - url: https://sandbox.umeme.app
    description: Sandbox d'intégration
  - url: https://api.umeme.app
    description: Production
security:
  - cle: []
tags:
  - name: Ventes
  - name: Compteurs
  - name: Portefeuille
  - name: Outils
paths:
  /v1/ventes/{uuid}:
    get:
      tags:
        - Ventes
      summary: Consulter une vente
      description: >-
        Rend une vente et son statut ; c'est aussi le corps des rappels. Seul
        `NON_TROUVEE` prouve qu'une vente n'existe pas.


        Consultez une même vente au plus toutes les 30 secondes. Portée de la
        clé : `ventes:lire`.
      operationId: consulterVente
      parameters:
        - $ref: '#/components/parameters/Uuid'
      responses:
        '200':
          description: La vente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Vente'
              examples:
                reussie:
                  summary: REUSSIE
                  value:
                    uuid: 94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb
                    compte: SOCODE
                    reference: '09900000000'
                    montant: 5
                    statut: REUSSIE
                    jeton: '47035727296518417129'
                    recu: USD/1793782394028
                    urlRecu: >-
                      https://recus.umeme.app/soc-94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb.pdf
                    creeLe: '2026-11-07T08:26:44Z'
                    termineLe: '2026-11-07T08:26:47Z'
                enReconciliation:
                  summary: EN_RECONCILIATION
                  value:
                    uuid: 94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb
                    compte: SOCODE
                    reference: '09900000020'
                    montant: 5
                    statut: EN_RECONCILIATION
                    creeLe: '2026-11-07T08:26:44Z'
                echouee:
                  summary: ECHOUEE
                  value:
                    uuid: 94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb
                    compte: SOCODE
                    reference: '09900000011'
                    montant: 5
                    statut: ECHOUEE
                    motifEchec:
                      code: REFUS_COMPTEUR_FOURNISSEUR
                      message: Le fournisseur refuse ce compteur.
                    creeLe: '2026-11-07T08:26:44Z'
                    termineLe: '2026-11-07T08:26:47Z'
        '401':
          $ref: '#/components/responses/NonAuthentifie'
        '404':
          description: >-
            Aucune vente avec cet `uuid` : vous pouvez la renvoyer, avec le même
            `uuid`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Erreur'
              example:
                code: NON_TROUVEE
                message: Aucune vente avec cet uuid.
      x-codeSamples:
        - lang: bash
          label: cURL
          source: |-
            UUID="94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb"

            curl "$UMEME_BASE_URL/ventes/$UUID" \
              -H "Authorization: Bearer $UMEME_CLE"
        - lang: javascript
          label: Node.js · fetch
          source: |-
            // Node.js 18 et plus : fetch est intégré.
            const baseUrl = process.env.UMEME_BASE_URL;

            const uuid = "94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb";

            const reponse = await fetch(`${baseUrl}/ventes/${uuid}`, {
              headers: {
                Authorization: `Bearer ${process.env.UMEME_CLE}`,
              },
            });
            const donnees = await reponse.json();
        - lang: javascript
          label: Node.js · Axios
          source: |-
            // npm install axios
            import axios from "axios";

            const umeme = axios.create({
              baseURL: process.env.UMEME_BASE_URL,
              headers: { Authorization: `Bearer ${process.env.UMEME_CLE}` },
              timeout: 30000,
            });

            const uuid = "94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb";

            const { data } = await umeme.get(`/ventes/${uuid}`);
        - lang: python
          label: Python
          source: |-
            import os

            import requests

            BASE_URL = os.environ["UMEME_BASE_URL"]
            ENTETES = {"Authorization": f"Bearer {os.environ['UMEME_CLE']}"}

            uuid = "94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb"

            reponse = requests.get(
                f"{BASE_URL}/ventes/{uuid}",
                headers=ENTETES,
                timeout=30,
            )
            donnees = reponse.json()
        - lang: php
          label: PHP
          source: |-
            // composer require guzzlehttp/guzzle
            $client = new GuzzleHttp\Client([
                'base_uri' => getenv('UMEME_BASE_URL') . '/',
                'headers' => ['Authorization' => 'Bearer ' . getenv('UMEME_CLE')],
                'timeout' => 30,
            ]);

            $uuid = '94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb';

            $reponse = $client->get("ventes/{$uuid}");
            $donnees = json_decode($reponse->getBody(), true);
        - lang: java
          label: Java
          source: >-
            // Java 15 et plus : java.net.http et blocs de texte.

            var baseUrl = System.getenv("UMEME_BASE_URL");

            var client = HttpClient.newHttpClient();


            var uuid = "94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb";


            var requete = HttpRequest.newBuilder(URI.create(baseUrl + "/ventes/"
            + uuid))
                .header("Authorization", "Bearer " + System.getenv("UMEME_CLE"))
                .GET()
                .build();

            var reponse = client.send(requete,
            HttpResponse.BodyHandlers.ofString());
components:
  parameters:
    Uuid:
      name: uuid
      in: path
      required: true
      description: L'identifiant que vous avez donné à la vente.
      schema:
        type: string
        format: uuid
      example: 94a223fe-fb34-47f2-aaa5-b80c4bf8a8eb
  schemas:
    Vente:
      type: object
      required:
        - uuid
        - compte
        - reference
        - montant
        - statut
        - creeLe
      properties:
        uuid:
          type: string
          format: uuid
          description: L'identifiant de la vente.
        compte:
          $ref: '#/components/schemas/Compte'
        reference:
          type: string
          description: Compteur ou référence d'abonnement.
        montant:
          type: number
          description: Le montant de la vente, en dollars.
        statut:
          type: string
          enum:
            - EN_COURS
            - EN_RECONCILIATION
            - REUSSIE
            - ECHOUEE
          description: Le statut v1. Une vente VIRUNGA n'est jamais `EN_RECONCILIATION`.
        jeton:
          type: string
          description: 'Présent si `REUSSIE`, pour SOCODE et VIRUNGA : 20 chiffres.'
        recu:
          type: string
          description: Le numéro du reçu.
        urlRecu:
          type: string
          format: uri
          description: Le reçu PDF.
        motifEchec:
          type: object
          description: Présent si `ECHOUEE`. Le portefeuille est déjà remboursé.
          required:
            - code
            - message
          properties:
            code:
              $ref: '#/components/schemas/CodeEchec'
            message:
              type: string
              description: En français, pour vos journaux. Il peut changer.
        metadonnees:
          type: object
          additionalProperties: true
          description: Vos données, telles qu'envoyées.
        creeLe:
          type: string
          format: date-time
          description: Heure d'acceptation, en UTC.
        termineLe:
          type: string
          format: date-time
          description: Heure de l'issue, en UTC.
    Erreur:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: 'Stable : il ne se renomme jamais. C''est lui que votre code compare.'
        message:
          type: string
          description: En français, pour vos journaux. Il peut changer.
    Compte:
      type: string
      enum:
        - SOCODE
        - VIRUNGA
        - TV
      description: Ce que l'on vend, et chez quel fournisseur.
    CodeEchec:
      type: string
      enum:
        - ECHEC_FOURNISSEUR
        - REFUS_COMPTEUR_FOURNISSEUR
        - MINIMUM_FOURNISSEUR
        - ECHEC_APRES_VERIFICATION
        - NON_TRAITEE_DANS_LE_DELAI
  responses:
    NonAuthentifie:
      description: >-
        Clé absente, inconnue, révoquée, ou de l'autre environnement :
        `CLE_INVALIDE`, `CLE_REVOQUEE`, `CLE_MAUVAIS_ENVIRONNEMENT`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erreur'
          example:
            code: CLE_INVALIDE
            message: La clé est absente ou inconnue.
  securitySchemes:
    cle:
      type: http
      scheme: bearer
      description: >-
        Votre clé d'API : `umeme_test_…` dans la sandbox, `umeme_live_…` en
        production.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.