<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "ExternalPurchaseServerAPI",
  "identifier" : "/documentation/ExternalPurchaseServerAPI/ExternalPurchaseReport",
  "metadataVersion" : "0.1.0",
  "role" : "Object",
  "symbol" : {
    "kind" : "Object",
    "modules" : [
      "External Purchase Server API"
    ],
    "preciseIdentifier" : "data:external_purchase_server_api:ExternalPurchaseReport"
  },
  "title" : "ExternalPurchaseReport"
}
-->

# ExternalPurchaseReport

The contents of an external purchase report for a single token.

```
object ExternalPurchaseReport
```

## Discussion

This object is the request body for the [`Send External Purchase Report`](/documentation/ExternalPurchaseServerAPI/Send-External-Purchase-Report) endpoint. Populate this object with data about a single external purchase token that you’re reporting, including its transactions.
The [`Retrieve External Purchase Report`](/documentation/ExternalPurchaseServerAPI/Retrieve-External-Purchase-Report) endpoint also returns this object when you request a report you previously successfully submitted.

The `requestIdentifier` field identifies the report. Generate a UUID for each report you send.

> Tip: Store the ``doc://org.swift.docc.ExternalPurchaseServerAPI/documentation/ExternalPurchaseServerAPI/requestIdentifier`` value in your records with the external purchase token to identify your reports.

The [`externalPurchaseId`](/documentation/ExternalPurchaseServerAPI/externalPurchaseId) field is the token’s identifier. To get that value, decode the external purchase token you receive in your app or on your website. For more information, see <doc://com.apple.documentation/documentation/StoreKit/receiving-and-decoding-external-purchase-tokens>.

The [`status`](/documentation/ExternalPurchaseServerAPI/status) field represents the token’s status, which you provide to indicate the report’s contents and whether it includes a `lineItems` array. The [`status`](/documentation/ExternalPurchaseServerAPI/status) value determines the type of report you send:

- Use a `LINE_ITEM` status to report a token with transactions that you list in the `lineItems` array.  Use this status when a token has associated transactions, and to send corrections to previously submitted line items. For more information, see [Reporting tokens with transactions](/documentation/ExternalPurchaseServerAPI/reportwithtransactions).
- Use a `NO_LINE_ITEM` status for a report of a token that didn’t result in any successful transactions. Don’t include `lineItems` in the request with this status.  For more information, see [Reporting unrecognized and transactionless tokens](/documentation/ExternalPurchaseServerAPI/reportwithouttransactions).
- Use an `UNRECOGNIZED_TOKEN` status to report a token you receive in an App Store Server Notification, but that you don’t have recorded in your system. Don’t include `lineItems` in the request with this status. For more information, see [Reporting unrecognized and transactionless tokens](/documentation/ExternalPurchaseServerAPI/reportwithouttransactions).
- Use a `DUPLICATE_TOKEN` status to report a `SERVICES` or `ACQUISITION` token that you recognize, but which you aren’t using to report transactions because it’s a duplicate token. Don’t include `lineItems` in the request with this status. For more information, see [Reporting unrecognized and transactionless tokens](/documentation/ExternalPurchaseServerAPI/reportwithouttransactions).

You can also submit corrections to restate line items, or retract a previous submission. For more information, see [Reporting corrections](/documentation/ExternalPurchaseServerAPI/reportcorrections).

A line item represents each transaction for the token identified by the `externalPurchaseId`. There are three types of line items:

- [`OneTimeBuyLineItem`](/documentation/ExternalPurchaseServerAPI/OneTimeBuyLineItem), for one-time charges
- [`RefundLineItem`](/documentation/ExternalPurchaseServerAPI/RefundLineItem), for refunds
- [`SubscriptionBuyLineItem`](/documentation/ExternalPurchaseServerAPI/SubscriptionBuyLineItem), for auto-renewable subscription events and transactions

Include as many line items as there are transactions that apply to the token. If your system completes new transactions after you successfully submit a report for a token, send a new report for the token with the new transactions.

## Topics

### Data types

[`uuid requestIdentifier`](/documentation/ExternalPurchaseServerAPI/requestIdentifier)

A UUID that uniquely identifies an external purchase report.

[`string externalPurchaseId`](/documentation/ExternalPurchaseServerAPI/externalPurchaseId)

The unique identifier of an external purchase token.

[`string status`](/documentation/ExternalPurchaseServerAPI/status)

A string value you provide to indicate the status of the token and the contents of the external purchase report.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)