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

# Get Invoice

> Look up a single invoice by its invoice number

<span style={{display:"none"}}>For the complete documentation index, see [llms.txt](/llms.txt).</span>

Returns a single invoice by its number. The response includes two extra fields injected by the API for payment-page rendering: `name` (the receiver's username) and `image` (the receiver's profile photo URL).

### Path Parameters

<ParamField path="invoice_number" type="string" required>
  The invoice's unique identifier (e.g. `INV-2026-a1b2c3d4`)
</ParamField>

### Response

<ResponseField name="invoice_number" type="string">
  The invoice identifier
</ResponseField>

<ResponseField name="status" type="string">
  `"pending"`, `"scanned"`, `"paid"`, `"expired"`, or `"void"`
</ResponseField>

<ResponseField name="payment_url" type="string">
  URL the customer opens to pay
</ResponseField>

<ResponseField name="redirect_url" type="string | null">
  URL the customer is sent to after paying, or `null` if none was set
</ResponseField>

<ResponseField name="from_store" type="boolean | null">
  Whether the transaction originated from the Shakesco store. `true` for store transactions, `false` for a standard invoice you created through the API, and `null` when it does not apply. Use this to tell store sales apart from your own invoices.
</ResponseField>

<ResponseField name="name" type="string">
  Receiver's username (injected for payment-page rendering)
</ResponseField>

<ResponseField name="image" type="string | null">
  Receiver's profile photo URL (injected for payment-page rendering)
</ResponseField>

<ResponseField name="transaction_items" type="array">
  Line items on the invoice
</ResponseField>

```javascript theme={null}
const response = await fetch(
  "https://payments.shakesco.com/invoices/INV-2026-a1b2c3d4",
  { headers: { Authorization: `Bearer ${API_KEY}` } }
);
const invoice = await response.json();
```

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "id": 1,
    "user_id": 42,
    "invoice_number": "INV-2026-a1b2c3d4",
    "status": "pending",
    "type": "public",
    "currency": "USD",
    "tax_rate": "0.00",
    "is_business": true,
    "from_store": false,
    "receiver": "business@example.com",
    "receiver_country": "US",
    "payer_name": "Jane Doe",
    "payer_email": "customer@example.com",
    "payer_country": null,
    "asset": null,
    "amount": null,
    "rate": null,
    "tx_hash_link": null,
    "receipt_number": null,
    "payment_url": "https://pay.shakesco.com/@business/a1b2c3...",
    "redirect_url": "https://yourstore.com/order/complete",
    "expires_at": "2026-05-23T10:00:00.000000Z",
    "scanned_at": null,
    "paid_at": null,
    "store_item_ids": null,
    "name": "business",
    "image": "https://example.com/avatar.jpg",
    "created_at": "2026-05-16T10:00:00.000000Z",
    "updated_at": "2026-05-16T10:00:00.000000Z",
    "transaction_items": [
      {
        "id": 1,
        "crypto_transaction_id": 1,
        "description": "Platform Services",
        "unit": "1",
        "price": "1400",
        "image": null,
        "created_at": "2026-05-16T10:00:00.000000Z",
        "updated_at": "2026-05-16T10:00:00.000000Z"
      }
    ]
  }
  ```

  ```json 404 Not Found theme={null}
  { "message": "Transaction not found." }
  ```
</ResponseExample>
