> This page is for Entria API Reference.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.navipartner.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.navipartner.com/_mcp/server.

# Read one of the logged-in account’s orders

GET https://api.entria.app/api/account/orders/{id}

Returns one of the account’s own orders by its Medusa id (`order_…`, from `GET /api/account/orders`), with its tickets when it has any (`ticketsUnavailable: true` instead means they could not be read right now, so retry). An order placed under any other email answers 404, the same as one that does not exist. Requires the account token from `POST /api/account/session`.

Reference: https://docs.navipartner.com/entria-api/entria-api-reference/account/get-get-member-order

## Authentication

- `Authorization` header (bearer token, required) — Account token, browser-safe. Obtain one from POST /api/account/session with the 6-digit code POST /api/account/login emailed to the shopper; valid 30 minutes, for one store and one proven email, and it reads only that account’s own data. Sent as `Authorization: Bearer <token>`. Not interchangeable with the BearerAuth client token in either direction.

## Request

### Path parameters

- `id` (string, required) — One of the account’s order ids, e.g. `order_01JQ…`.

### Headers

- `x-entria` (string, required) — Identifies which store this request is for. Required on every store-scoped route. It is not authentication and not a secret — it grants no privileges and is safe to send from a browser. You receive the value once your Entria backend has been created and configured. Missing header returns 400; an unknown store returns 404.

## Response

### 200

The order, with its tickets when it has any — or `ticketsUnavailable: true` when they could not be read.

- `order` (ApiAccountOrdersIdGetResponsesContentApplicationJsonSchemaOrder, required) — Entria order (default fields plus `email` and `promotions`), with sensitive metadata removed and payment-provider `data` narrowed to public keys. Only the fields listed here are documented; the response carries more (items, subtotals, billing_address, payment_collections, summary, metadata, …).
- `discounts` (list of CartDiscount, optional)
- `discountTotal` (double, optional)
- `discountSubtotal` (double, optional)
- `discountTaxTotal` (double, optional)
- `tickets` (list of any, optional)
- `ticketsUnavailable` (boolean, optional) — Present when the order has tickets but they could not be read right now. Retry; it does not mean the order has none.

## Errors

### 400 Bad Request Error

The request body is invalid.

- `error` (string, required)
- `code` (string, optional)
- `details` (list of ErrorResponseDetailsItems, optional) — Per-field validation failures; present when code is VALIDATION_ERROR.
- `success` (boolean, optional, deprecated) — Deprecated. Use code === VALIDATION_ERROR.
- `errors` (list of any, optional, deprecated) — Deprecated. Raw zod issues; use details instead.

### 401 Unauthorized Error

No usable account token (`code: ACCOUNT_TOKEN_INVALID`): the `Authorization: Bearer` is missing, is not an account token (a `POST /oauth/token` client token is not one), or is expired, not yet valid or minted for another store. Log the shopper in again with `POST /api/account/login`.

- `error` (string, required)
- `code` (string, optional)
- `details` (list of ErrorResponseDetailsItems, optional) — Per-field validation failures; present when code is VALIDATION_ERROR.
- `success` (boolean, optional, deprecated) — Deprecated. Use code === VALIDATION_ERROR.
- `errors` (list of any, optional, deprecated) — Deprecated. Raw zod issues; use details instead.

### 404 Not Found Error

The order is not one of the account’s (`code: ORDER_NOT_FOUND`), email login is not enabled for this store (`code: ACCOUNT_LOGIN_DISABLED`), or the `x-entria` store handle is unknown.

- `error` (string, required)
- `code` (string, optional)
- `details` (list of ErrorResponseDetailsItems, optional) — Per-field validation failures; present when code is VALIDATION_ERROR.
- `success` (boolean, optional, deprecated) — Deprecated. Use code === VALIDATION_ERROR.
- `errors` (list of any, optional, deprecated) — Deprecated. Raw zod issues; use details instead.

### 429 Too Many Requests Error

Too many requests from this client.

- `error` (string, required)
- `code` (string, optional)
- `details` (list of ErrorResponseDetailsItems, optional) — Per-field validation failures; present when code is VALIDATION_ERROR.
- `success` (boolean, optional, deprecated) — Deprecated. Use code === VALIDATION_ERROR.
- `errors` (list of any, optional, deprecated) — Deprecated. Raw zod issues; use details instead.

### 502 Bad Gateway Error

The order data could not be read — an upstream failure, safe to retry.

- `error` (string, required)
- `code` (string, optional)
- `details` (list of ErrorResponseDetailsItems, optional) — Per-field validation failures; present when code is VALIDATION_ERROR.
- `success` (boolean, optional, deprecated) — Deprecated. Use code === VALIDATION_ERROR.
- `errors` (list of any, optional, deprecated) — Deprecated. Raw zod issues; use details instead.

### 503 Service Unavailable Error

Email login is switched on but cannot run: Business Central is not configured for the store (`code: BC_NOT_CONFIGURED`), or this service is missing its token configuration (`code: ACCOUNT_LOGIN_NOT_CONFIGURED`). Neither depends on the email.

- `error` (string, required)
- `code` (string, optional)
- `details` (list of ErrorResponseDetailsItems, optional) — Per-field validation failures; present when code is VALIDATION_ERROR.
- `success` (boolean, optional, deprecated) — Deprecated. Use code === VALIDATION_ERROR.
- `errors` (list of any, optional, deprecated) — Deprecated. Raw zod issues; use details instead.

## Types

### ApiAccountOrdersIdGetResponsesContentApplicationJsonSchemaOrder

Entria order (default fields plus `email` and `promotions`), with sensitive metadata removed and payment-provider `data` narrowed to public keys. Only the fields listed here are documented; the response carries more (items, subtotals, billing_address, payment_collections, summary, metadata, …).

- `id` (string, required) — Entria order id
- `custom_display_id` (string, optional, nullable) — Customer- and ERP-facing order number, e.g. ENT-734263D8A17581F7. Null for orders created before 2026-02-25.
- `display_id` (double, optional) — Sequential order number, shown as the order number on the checkout receipt
- `email` (string, optional, nullable)
- `locale` (string, optional, nullable)
- `created_at` (string, optional) — ISO 8601
- `payment_status` (string, optional) — e.g. authorized, captured
- `total` (double, optional) — Grand total incl. tax, in major units (e.g. 1149 = 1149 DKK)
- `tax_total` (double, optional)
- `discount_total` (double, optional)

### CartDiscount

- `promotionId` (string, required)
- `amount` (double, required)
- `code` (string, optional)
- `source` (enum, optional)
  - Allowed values: `CODE`, `AUTOMATIC`
- `removable` (boolean, optional)

### ErrorResponseDetailsItems

- `path` (string, required)
- `message` (string, required)

## Examples

**Response**

```json
{
  "order": {
    "id": "string",
    "custom_display_id": "string",
    "display_id": 1.1,
    "email": "string",
    "locale": "string",
    "created_at": "string",
    "payment_status": "string",
    "total": 1.1,
    "tax_total": 1.1,
    "discount_total": 1.1
  },
  "discounts": [
    {
      "promotionId": "string",
      "amount": 1.1,
      "code": "string",
      "source": "CODE",
      "removable": true
    }
  ],
  "discountTotal": 1.1,
  "discountSubtotal": 1.1,
  "discountTaxTotal": 1.1,
  "tickets": [
    null
  ],
  "ticketsUnavailable": true
}
```

**SDK Code**

```python
import requests

url = "https://api.entria.app/api/account/orders/id"

headers = {
    "x-entria": "x-entria",
    "Authorization": "Bearer <token>"
}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.entria.app/api/account/orders/id';
const options = {
  method: 'GET',
  headers: {'x-entria': 'x-entria', Authorization: 'Bearer <token>'}
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.entria.app/api/account/orders/id"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-entria", "x-entria")
	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.entria.app/api/account/orders/id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-entria"] = 'x-entria'
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.entria.app/api/account/orders/id")
  .header("x-entria", "x-entria")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.entria.app/api/account/orders/id', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'x-entria' => 'x-entria',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.entria.app/api/account/orders/id");
var request = new RestRequest(Method.GET);
request.AddHeader("x-entria", "x-entria");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "x-entria": "x-entria",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.entria.app/api/account/orders/id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```