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

# Consulter une facture

> Récupérer les informations d'une facture ou d'un compteur avant paiement

# Consulter une facture

Récupère les informations d'une facture (montant dû) ou d'un compteur avant un paiement de facture / une recharge.

<Note>
  Cette étape est **optionnelle mais recommandée** : elle permet d'afficher la facture (ou le statut du compteur) à votre utilisateur avant de payer. L'endpoint de paiement refait de toute façon une consultation interne.
</Note>

## Endpoint

```bash theme={null}
POST /api/v1/billing/inquiry
```

## Headers

| Nom           | Type   | Requis | Description           |
| ------------- | ------ | ------ | --------------------- |
| Authorization | string | Oui    | Bearer YOUR\_API\_KEY |
| Content-Type  | string | Oui    | application/json      |

## Corps de la Requête

```json theme={null}
{
  "serviceCode": string,        // Code du service de facturation
  "reference_client": string    // Numéro de compteur / référence client
}
```

### Paramètres

| Paramètre         | Type   | Requis | Description                                                |
| ----------------- | ------ | ------ | ---------------------------------------------------------- |
| serviceCode       | string | Oui    | Code du biller (voir tableau ci-dessous)                   |
| reference\_client | string | Oui    | Numéro de compteur / police / référence client à consulter |

### Services de facturation disponibles

| serviceCode       | Biller  | Type                          | Montant        |
| ----------------- | ------- | ----------------------------- | -------------- |
| `SENEAU_SN_BILL`  | SenEau  | Facture eau (postpayée)       | Imposé         |
| `SENELEC_SN_BILL` | Senelec | Facture électricité postpayée | Imposé         |
| `WOYOFAL_SN_BILL` | Woyofal | Recharge électricité prépayée | Choisi (libre) |

## Réponse

### Réponse Réussie

```json theme={null}
{
  "success": true,
  "referenceClient": "210278816",
  "bills": [
    {
      "paymentTransactionNumber": null,
      "referenceClient": "000210278816",
      "referenceFacture": "8000000680",
      "nom": "FALL OUSSEYNOU",
      "prenom": null,
      "montant": 104500,
      "frais": 0,
      "total": 104500,
      "dateEcheance": "2018-12-31",
      "paid": false,
      "address": null,
      "meterStatus": null
    }
  ]
}
```

<Note>
  Pour **Woyofal** (recharge prépayée), `bills[0]` représente le **compteur** : `montant` vaut `0` (le client choisit le montant au paiement), et `meterStatus` / `address` / `nom` décrivent le compteur.
</Note>

### Champs de `bills[]`

| Champ            | Type    | Description                                                      |
| ---------------- | ------- | ---------------------------------------------------------------- |
| referenceClient  | string  | Numéro de compteur                                               |
| referenceFacture | string  | Référence facture (SenEau/Senelec) ou jeton de session (Woyofal) |
| nom              | string  | Nom du titulaire (si disponible)                                 |
| montant          | number  | Montant de la facture (0 pour les recharges à montant libre)     |
| frais            | number  | Frais provider (à titre indicatif)                               |
| total            | number  | montant + frais                                                  |
| dateEcheance     | string  | Date d'échéance (factures postpayées)                            |
| paid             | boolean | `true` si la facture est déjà réglée                             |
| address          | string  | Adresse du compteur (Woyofal)                                    |
| meterStatus      | string  | Statut du compteur (Woyofal)                                     |

### Réponse d'Erreur

```json theme={null}
{
  "success": false,
  "message": "No bill found",
  "bills": []
}
```

## Codes d'Erreur

| Code HTTP | Description                                |
| --------- | ------------------------------------------ |
| 400       | Paramètres invalides / facture introuvable |
| 401       | Clé API invalide                           |
| 403       | API en maintenance                         |

## Exemple de Requête

```bash theme={null}
curl -X POST https://api-m.dexchange.sn/api/v1/billing/inquiry \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "serviceCode": "SENELEC_SN_BILL",
    "reference_client": "210278816"
  }'
```


## OpenAPI

````yaml POST /api/v1/billing/inquiry
openapi: 3.0.1
info:
  title: DEXCHANGE-API
  description: >-
    Unifiez tous vos paiements mobiles à travers une seule API puissante.
    DEXCHANGE-API est une passerelle de paiement qui regroupe plusieurs wallets
    (Orange Money, Wave, Free Money, Wizall) sur une seule API, simplifiant
    l'intégration des paiements mobiles en Afrique de l'Ouest.
  version: 1.0.0
  contact:
    name: DEXCHANGE Support
    email: team@dexchange.sn
    url: https://docs-api.dexchange.sn
  license:
    name: MIT
servers:
  - url: https://api-m.dexchange.sn
    description: Production Server
security:
  - bearerAuth: []
tags:
  - name: Transactions
    description: Operations for managing payment transactions
  - name: Merchant
    description: Merchant-specific payment operations
  - name: Services
    description: Service and balance information
  - name: Billing
    description: Bill payment and prepaid top-up operations
paths:
  /api/v1/billing/inquiry:
    post:
      tags:
        - Billing
      summary: Consulter une facture
      description: >-
        Récupère les informations d'une facture (montant dû) ou d'un compteur
        avant paiement.
      operationId: billingInquiry
      requestBody:
        description: Référence à consulter
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingInquiryRequest'
        required: true
      responses:
        '200':
          description: Facture(s) trouvée(s)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingInquiryResponse'
        '400':
          description: Facture introuvable ou paramètres invalides
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Clé API invalide
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    BillingInquiryRequest:
      type: object
      required:
        - serviceCode
        - reference_client
      properties:
        serviceCode:
          type: string
          enum:
            - SENEAU_SN_BILL
            - SENELEC_SN_BILL
            - WOYOFAL_SN_BILL
          description: Code du biller
          example: SENELEC_SN_BILL
        reference_client:
          type: string
          description: Numéro de compteur / police / référence client
          example: '210278816'
    BillingInquiryResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        referenceClient:
          type: string
          example: '210278816'
        bills:
          type: array
          items:
            $ref: '#/components/schemas/BillingBill'
    Error:
      type: object
      properties:
        message:
          type: array
          items:
            type: string
        success:
          type: boolean
      required:
        - message
        - success
    BillingBill:
      type: object
      properties:
        paymentTransactionNumber:
          type: string
          nullable: true
        referenceClient:
          type: string
          example: '000210278816'
        referenceFacture:
          type: string
          nullable: true
          description: Référence facture (SenEau/Senelec) ou jeton de session (Woyofal)
          example: '8000000680'
        nom:
          type: string
          nullable: true
          example: FALL OUSSEYNOU
        prenom:
          type: string
          nullable: true
        montant:
          type: number
          description: Montant de la facture (0 pour les recharges à montant libre)
          example: 104500
        frais:
          type: number
          example: 0
        total:
          type: number
          example: 104500
        dateEcheance:
          type: string
          nullable: true
          example: '2018-12-31'
        paid:
          type: boolean
          example: false
        address:
          type: string
          nullable: true
          description: Adresse du compteur (Woyofal)
        meterStatus:
          type: string
          nullable: true
          description: Statut du compteur (Woyofal)
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Entrez votre clé API comme: Bearer <API_KEY>'

````