Get async orders status

Get an async order by external reference ID with cursor-based pagination.

🚧

Closed Release:

This feature is available for a limited number of customers with a specific use case.

This endpoint in the Tango API is used to retrieve a high-level summary of an asynchronous order that was previously placed using the POST {URI}/asyncOrders endpoint. The endpoint provides a high-level summary of an async order, including: total number of line items, delivery status of each item, recipient details, delivery methods, reward types and amounts, and any associated fees or exchange rates. This endpoint does not return reward credentials, making it safe for internal systems that should not expose sensitive data.

Use the following endpoint to retrieve the order summary and view delivery status. Using this endpoint, you can ensure all line items were processed correctly.

EndpointPurpose
GET {URI}/asyncOrders/customers/{customerIdentifier}/ accounts/{accountIdentifier}/{externalRefID}Get an async order by external reference ID with cursor-based pagination.

Benefits

  • Track deliveries without retrieving reward credentials.
  • Address specific line items that may have failed during the order process

Use case

After placing an async order, Acme Corp would like to confirm which line items were successfully delivered, and audit who received what and how. Moreover, Acme Corp avoids exposing reward codes to internal staff or systems.


The following path parameter indicates which specific async order the request is acting upon:

Path paramsData typeRequirementDescription
customerIdentifierstringrequiredSpecify the customer to be queried
accountIdentifierstringrequiredSpecify the account to be queried.
externalRefIDstringrequiredAn idempotent field that can be used for your order cross-reference and to prevent accidental order duplication. This value is returned in the order response, order details, and order history. The string has a maximum of 100 alphanumeric characters.

The following query parameters are used to filter, sort, or paginate data in your request. They are typically optional and allow you to customize the response without changing the endpoint structure:

Query params

Data type

Requirement

Description

prevCursor

string

required

An idempotent field that can be used for your order cross-reference and to prevent accidental order duplication. This value is returned in the order response, order details, and order history. The string has a maximum of 100 alphanumeric characters.

nextCursor

string

maxResults

int32

Maximum number of line items to return. The limit parameter accepts an integer between 1 and 500, with a default value of 100. For example, setting limit=32 will return up to 32 line items.

externalLineItemReferenceIds

array of strings

Optional

Used to identify specific line items within the order If provided, only return line items matching these IDs. Max 50 items in the array. Length: 0–100 characters per string.

referenceLineItemIds

array of strings

Optional

Used to filter by internal reference IDs returned in previous responses. Note: You can use either referenceLineItemIds or externalLineItemReferenceIds, not both at the same time

failedOnly

boolean

Optional

Default is false. If true, only return line items that failed. If no failed items exist, the response should return 'NONE' or 'NULL' for the lineItems array.

The following example illustrates the payload for using this endpoint and its parameters. The return payload shows the total amount charged at the order level, making it easier to determine the total amount charged without summing the paginated line items. See totalAmountCharged in the payload example:

{
  "referenceOrderID": "string",
  "externalRefID": "string",
  "orderStatus": "PENDING",
  "createdAt": "2025-10-23T21:52:43.041Z",
  "completedAt": "2025-10-23T21:52:43.041Z",
  "customerIdentifier": "string",
  "accountIdentifier": "string",
  "sender": {
    "firstName": "string",
    "lastName": "string",
    "email": "string"
  },
  "amountCharged": {
    "currencyCode": "string",
    "value": 0,
    "total": 0
  },
  "campaign": "string",
  "purchaseOrderNumber": "string",
  "notes": "string",
  "totalLineItems": 0,
  "pagination": {
    "prevCursor": "string",
    "nextCursor": "string",
    "prevPageAvailable": true,
    "nextPageAvailable": true,
    "maxResults": 0,
    "numberOfElements": 0
  },
  "orderErrors": [
    {
      "errorCode": "string",
      "errorMessage": "string"
    }
  ],
  "lineItems": [
    {
      "referenceLineItemId": "string",
      "externalRefLineItemID": "string",
      "lineItemStatus": "COMPLETE",
      "deliveryStatus": "string",
      "recipient": {
        "firstName": "string",
        "lastName": "string",
        "email": "string",
        "address": {
          "streetLine1": "string",
          "streetLine2": "string",
          "city": "string",
          "stateOrProvince": "string",
          "country": "string",
          "postalCode": "string",
          "companyName": "string"
        },
        "mobileNumber": "string"
      },
      "deliveryMethod": "NONE",
      "rewardName": "string",
      "amount": 0,
      "amountCharged": {
        "value": 0,
        "currencyCode": "string",
        "exchangeRate": 0,
        "fee": 0,
        "total": 0
      },
      "scheduledDeliveryDate": "2025-10-23T21:52:43.041Z",
      "lineItemErrors": [
        {
          "errorCode": "string",
          "errorMessage": "string"
        }
      ]
    }
  ]
}


The possible response codes for this endpoint are as follows. For details, see i18nkey codes and their error messages:

Response codeMeaning
200The request was successful.
400The server could not understand the request due to invalid syntax.
401Authentication is required and has either not been provided or failed.
403The server understood the request but refused to authorize it.
404The server was unable to find the requested resource. In other words, the URL you're trying to access doesn't point to anything that exists on the server.
422The server understands the request but cannot process it due to semantic errors.
429Exceeded the allowable TPS rate limit. It indicates that the user has sent too many requests within a given time frame, and the server is rate-limiting further requests.
500Something went wrong on the server, but the server cannot be more specific about the exact problem.
503The server is currently unable to handle the request due to temporary overload or maintenance.


© 2025 Tango API are provided by Tango, a division of BHN, Inc.