> This page is for Afterpay Online Developer, version v1.
> For other versions, use one of these documentation indexes:
> - Main (default): https://developers.afterpay.com/afterpay-online-developer/main/llms.txt
> - v1: https://developers.afterpay.com/afterpay-online-developer/v-1/llms.txt
> - Chinese: https://developers.afterpay.com/afterpay-online-developer/chinese/llms.txt

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

# Get Order

GET https://global-api-sandbox.afterpay.com/v1/orders/{token}/environment:{environment}

This endpoint retrieves an incomplete individual order by token.
**Note**: Order details are only retained in this temporary format for up to 60 minutes. If an order token expires or has a payment captured against it, it can no longer be retrieved from this endpoint. To retrieve a completed payment along with its associated order details, see Get Payment By Token.

### Connection Timeouts
| Timeout |	Time (Seconds) |
| ------- | ------------ |
| Open |	10 |
| Read	| 20 |

Reference: https://developers.afterpay.com/afterpay-online-developer/v-1/api-reference/orders/get-order

## Authentication

- `Authorization` header (basic auth, required) — Basic authentication of the form `Basic <base64(username:password)>`.

## Request

### Path parameters

- `environment` (string, required) — Use `api-sandbox` for AU/NZ, or `api.us-sandbox` for US.
- `token` (string, required) — The token of the order to be retrieved.

### Headers

- `Accept` (string, optional, default: application/json)

## Response

### 200

If an order belonging to the authenticated merchant account is found, returns the order details in response. Fields that were not included in the original Create Order request may not be included in any corresponding Get Order request. | Attribute | Type | Description | | :------------------------------ | :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ | | `expires` | string | The UTC timestamp of when the order token will expire, in [ISO 8601](http://www.iso.org/iso/home/standards/iso8601.htm) format. | | `token` | string | Order token to be used to complete payment. | | `totalAmount` | Money | Total amount for order to be charged to consumer. | | `consumer` | Consumer | The consumer requesting the order. | | `billing` | Contact | Billing address. | | `shipping` | Contact | Shipping address. | | `courier` | Shipping Courier | Shipping courier details. | | `description` | string | A description of the order. | | `merchant`.`redirectConfirmUrl` | string | The consumer is redirected to this URL on confirmation. | | `merchant`.`redirectCancelUrl` | string | The consumer to redirected to this URL if the payment process is cancelled. | | `paymentType` | string | "PAY_BY_INSTALLMENT" | | `merchantReference` | string | The merchant's id/reference that this order corresponds to. | | `items` | Item | An array of order items. | | `discounts` | Discount | An array of discounts. | | `shippingAmount` | Money | The shipping amount. | | `taxAmount` | Money | The included tax amount after applying all discounts. |

## Errors

### 404 Not Found Error

The order token is invalid, expired, completed, or does not exist.

- `any`

## Examples

**Request**

```json
{}
```

**Response**

```json
{
  "expires": "2024-06-15T16:45:00Z",
  "token": "a1b2c3d4e5f678901234567890abcdef",
  "totalAmount": {
    "amount": "149.99",
    "currency": "USD"
  },
  "consumer": {
    "phoneNumber": "+14155552671",
    "givenNames": "John",
    "surname": "Doe",
    "email": "john.doe@example.com"
  },
  "billing": {
    "name": "John Doe",
    "line1": "123 Elm Street",
    "line2": "Apt 4B",
    "area1": "San Francisco",
    "region": "CA",
    "postcode": "94107",
    "countryCode": "US"
  },
  "shipping": {
    "name": "John Doe",
    "line1": "123 Elm Street",
    "line2": "Apt 4B",
    "area1": "San Francisco",
    "region": "CA",
    "postcode": "94107",
    "countryCode": "US"
  },
  "courier": {
    "name": "FedEx",
    "phoneNumber": "+18005551234",
    "trackingUrl": "https://www.fedex.com/apps/fedextrack/?tracknumbers=123456789012"
  },
  "description": "Order for electronics and accessories",
  "merchant": {
    "redirectConfirmUrl": "https://merchant.example.com/order/confirm",
    "redirectCancelUrl": "https://merchant.example.com/order/cancel"
  },
  "paymentType": "PAY_BY_INSTALLMENT",
  "merchantReference": "ORD-20240615-1234",
  "items": [
    {
      "name": "Wireless Headphones",
      "sku": "WH-12345",
      "quantity": 1,
      "price": {
        "amount": "99.99",
        "currency": "USD"
      }
    },
    {
      "name": "Charging Cable",
      "sku": "CC-67890",
      "quantity": 1,
      "price": {
        "amount": "50.00",
        "currency": "USD"
      }
    }
  ],
  "discounts": [
    {
      "name": "Spring Sale",
      "amount": {
        "amount": "10.00",
        "currency": "USD"
      }
    }
  ],
  "shippingAmount": {
    "amount": "5.00",
    "currency": "USD"
  },
  "taxAmount": {
    "amount": "12.50",
    "currency": "USD"
  }
}
```

**SDK Code**

```python
import requests

url = "https://global-api-sandbox.afterpay.com/v1/orders/a1b2c3d4e5f678901234567890abcdef/environment:api-sandbox"

payload = {}
headers = {
    "User-Agent": "Afterpay Online API Simulator",
    "Accept": "application/json"
    "Content-Type": "application/json"
}

response = requests.get(url, json=payload, headers=headers, auth=("<username>", "<password>"))

print(response.json())
```

```javascript
const url = 'https://global-api-sandbox.afterpay.com/v1/orders/a1b2c3d4e5f678901234567890abcdef/environment:api-sandbox';
const credentials = btoa("<username>:<password>");

const options = {
  method: 'GET',
  headers: {
    'User-Agent': 'Afterpay Online API Simulator',
    Accept: 'application/json',
    Authorization: `Basic ${credentials}`,
    'Content-Type': 'application/json'
  },
  body: '{}'
};

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"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://global-api-sandbox.afterpay.com/v1/orders/a1b2c3d4e5f678901234567890abcdef/environment:api-sandbox"

	payload := strings.NewReader("{}")

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

	req.Header.Add("User-Agent", "Afterpay Online API Simulator")
	req.Header.Add("Accept", "application/json")
	req.SetBasicAuth("<username>", "<password>")
	req.Header.Add("Content-Type", "application/json")

	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://global-api-sandbox.afterpay.com/v1/orders/a1b2c3d4e5f678901234567890abcdef/environment:api-sandbox")

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

request = Net::HTTP::Get.new(url)
request["User-Agent"] = 'Afterpay Online API Simulator'
request["Accept"] = 'application/json'
request.basic_auth("<username>", "<password>")
request["Content-Type"] = 'application/json'
request.body = "{}"

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://global-api-sandbox.afterpay.com/v1/orders/a1b2c3d4e5f678901234567890abcdef/environment:api-sandbox")
  .header("User-Agent", "Afterpay Online API Simulator")
  .header("Accept", "application/json")
  .basicAuth("<username>", "<password>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://global-api-sandbox.afterpay.com/v1/orders/a1b2c3d4e5f678901234567890abcdef/environment:api-sandbox', [
  'body' => '{}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'User-Agent' => 'Afterpay Online API Simulator',
  ],
    'auth' => ['<username>', '<password>'],
]);

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

```csharp
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://global-api-sandbox.afterpay.com/v1/orders/a1b2c3d4e5f678901234567890abcdef/environment:api-sandbox");
client.Authenticator = new HttpBasicAuthenticator("<username>", "<password>");
var request = new RestRequest(Method.GET);
request.AddHeader("User-Agent", "Afterpay Online API Simulator");
request.AddHeader("Accept", "application/json");

request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let credentials = Data("<username>:<password>".utf8).base64EncodedString()

let headers = [
  "User-Agent": "Afterpay Online API Simulator",
  "Accept": "application/json",
  "Authorization": "Basic \(credentials)",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://global-api-sandbox.afterpay.com/v1/orders/a1b2c3d4e5f678901234567890abcdef/environment:api-sandbox")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```