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

# Détail d'une transaction

> Ajoute les tentatives de routage et l'historique des changements de statut

## Champs utiles

En plus des champs bruts (`requested_amount`, `client_fee`, `debited_amount`, `net_amount`…), la réponse expose des raccourcis prêts à afficher :

| Champ              | Contenu                                                                                   |
| ------------------ | ----------------------------------------------------------------------------------------- |
| `country_code`     | Code ISO 2 lettres (`BJ`) — évite un appel à `/countries/` pour résoudre l'UUID `country` |
| `network_code`     | Code réseau (`mtn_bj`) — idem pour `network`                                              |
| `operation_msisdn` | Numéro débité (encaissement) ou crédité (décaissement), figé au moment de l'opération     |
| `amounts`          | Ventilation prête à afficher, voir ci-dessous                                             |

### Le bloc `amounts`

```json theme={null}
"amounts": {
  "requested": "25000.00",       // montant demandé
  "fee": "625.00",               // frais facturés au client
  "charged": "25625.00",         // ce que le payeur débourse réellement
  "net": "25000.00",             // ce que vous recevez
  "currency": "XOF",
  "fee_charge_mode": "ADD_ON"
}
```

`requested` n'est pas ce que le payeur débourse : cela dépend de `fee_charge_mode`.

| Mode       | Le payeur débourse              | Vous recevez                |
| ---------- | ------------------------------- | --------------------------- |
| `ADD_ON`   | `charged` = `requested` + `fee` | `net` = `requested`         |
| `DEDUCTED` | `charged` = `requested`         | `net` = `requested` − `fee` |

<Tip>
  Pour un rapprochement comptable, utilisez `charged` et `net` — jamais `requested` seul.
</Tip>

<Note>
  `operation_msisdn` est vide sur les transactions antérieures au 17 août 2026 : le numéro n'était alors pas conservé.
</Note>


## OpenAPI

````yaml api-reference/openapi.json GET /transactions/{id}/
openapi: 3.1.0
info:
  title: AlphaPay API
  description: >-
    API d'encaissement et de paiement mobile money/carte pour l'Afrique de
    l'Ouest et du Centre. Toutes les routes marchand nécessitent une clé API
    secrète (header Authorization: Bearer sk_...).
  version: 1.0.0
servers:
  - url: https://api.alphapay.me/api/v1
security:
  - bearerAuth: []
paths:
  /transactions/{id}/:
    get:
      tags:
        - Transactions
      summary: Détail d'une transaction
      description: >-
        Ajoute `attempts` (tentatives de routage gateway) et `status_logs`
        (historique append-only des transitions de statut) aux champs de base.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Détail de la transaction
          content:
            application/json:
              example:
                id: 9c3f2a10-4b7e-4f1a-9d2e-9b6a7c1e4a02
                reference: TXN-20260812-000512
                merchant: 6f1e2b3a-8c4d-4a2f-9e1b-2d3c4f5a6b7c
                customer: 1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
                country: 3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a
                network: 5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b
                transaction_type: PAIEMENT
                flow_direction: INBOUND
                description: Abonnement mensuel
                requested_amount: '2500.00'
                fee_charge_mode: ADD_ON
                client_fee: '37.50'
                gateway_fee: '20.00'
                platform_fee: '17.50'
                pricing_rule: null
                merchant_pricing_rule: 7f8e9d0c-1b2a-4c3d-9e0f-1a2b3c4d5e6f
                debited_amount: '2537.50'
                net_amount: '2500.00'
                currency: XOF
                status: SUCCESS
                current_gateway: 2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e
                external_reference: PWP-8827311
                ip_address: 154.72.18.90
                created_at: '2026-08-12T09:58:11Z'
                updated_at: '2026-08-12T09:58:47Z'
                attempts:
                  - id: d3e4f5a6-b7c8-4d9e-8f0a-1b2c3d4e5f6a
                    transaction: 9c3f2a10-4b7e-4f1a-9d2e-9b6a7c1e4a02
                    gateway: 2e3f4a5b-6c7d-4e8f-8a9b-0c1d2e3f4a5b
                    priority: 0
                    status: FAILED
                    error_code: ''
                    error_message: Solde opérateur insuffisant côté gateway
                    started_at: '2026-08-12T09:57:40Z'
                    ended_at: '2026-08-12T09:57:58Z'
                    created_at: '2026-08-12T09:57:40Z'
                    updated_at: '2026-08-12T09:57:58Z'
                  - id: b1c2d3e4-f5a6-4b7c-8d9e-0f1a2b3c4d5e
                    transaction: 9c3f2a10-4b7e-4f1a-9d2e-9b6a7c1e4a02
                    gateway: 2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e
                    priority: 1
                    status: SUCCESS
                    error_code: ''
                    error_message: ''
                    started_at: '2026-08-12T09:58:11Z'
                    ended_at: '2026-08-12T09:58:45Z'
                    created_at: '2026-08-12T09:58:11Z'
                    updated_at: '2026-08-12T09:58:45Z'
                status_logs:
                  - id: e5f6a7b8-c9d0-4e1f-8a2b-3c4d5e6f7a8b
                    transaction: 9c3f2a10-4b7e-4f1a-9d2e-9b6a7c1e4a02
                    from_status: null
                    to_status: PENDING
                    reason: ''
                    triggered_by: SYSTEM
                    created_at: '2026-08-12T09:57:40Z'
                  - id: c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f
                    transaction: 9c3f2a10-4b7e-4f1a-9d2e-9b6a7c1e4a02
                    from_status: PENDING
                    to_status: SUCCESS
                    reason: Paiement confirmé par le gateway
                    triggered_by: SYSTEM
                    created_at: '2026-08-12T09:58:47Z'
        '404':
          description: Transaction introuvable
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: sk_live_... / sk_test_...
      description: >-
        Clé API secrète du marchand — header Authorization: Bearer sk_live_xxx
        (ou sk_test_xxx en environnement de test).

````