---
title: Get a transaction
description: One sale, its current state and its full timeline.
group: api
order: 4
method: GET
path: /api/v1/transactions/{reference}
---

Returns the sale with every state it moved through, from `created` to `successful` or `failed`, each with a time and a reason.

## Request

```bash
curl https://api.simconnectng.com/api/v1/transactions/txn_0192f4c1a7e84b6f9d2c3e5a7b9d1f30 \
  -H "Authorization: Bearer $SIMCONNECT_KEY"
```

## Response

```json
{
  "success": true,
  "data": {
    "reference": "txn_0192f4c1a7e84b6f9d2c3e5a7b9d1f30",
    "client_reference": "order_1042",
    "status": "successful",
    "product_code": "MTN-VTU",
    "network": "mtn",
    "destination": "+234********78",
    "amount": 500.00,
    "price": 2.00,
    "attempt_count": 1,
    "created_at": "2026-10-06T12:04:01Z",
    "completed_at": "2026-10-06T12:04:03Z",
    "timeline": [
      { "from_status": null, "to_status": "created", "reason": "accepted", "actor_type": "api_key", "candidate_kind": null, "provider": null, "provider_reference": null, "created_at": "2026-10-06T12:04:01.120Z" },
      { "from_status": "created", "to_status": "queued", "reason": "hold placed", "actor_type": "system", "candidate_kind": null, "provider": null, "provider_reference": null, "created_at": "2026-10-06T12:04:01.131Z" },
      { "from_status": "queued", "to_status": "processing", "reason": "executor started", "actor_type": "system", "candidate_kind": null, "provider": null, "provider_reference": null, "created_at": "2026-10-06T12:04:01.348Z" },
      { "from_status": "processing", "to_status": "successful", "reason": "success", "actor_type": "system", "candidate_kind": "sim", "provider": "simgateway", "provider_reference": "8F2K41", "created_at": "2026-10-06T12:04:03.902Z" }
    ]
  },
  "message": "OK",
  "code": "OK"
}
```

The sale also carries the other fields of [Send airtime](/docs/api/send-airtime) (`id`, `mode`, `service`, `failure_code`, `failure_message`). `status` can also be `refunded`, when we refund a sale, and the timeline then gains that step. The figures shown here are placeholders.

## Error

```json
{ "success": false, "data": null, "message": "Transaction not found", "code": "NOT_FOUND" }
```
