<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "ExternalPurchaseServerAPI",
  "identifier" : "/documentation/ExternalPurchaseServerAPI/Send-External-Purchase-Report",
  "metadataVersion" : "0.1.0",
  "role" : "Web Service Endpoint",
  "symbol" : {
    "kind" : "Web Service Endpoint",
    "modules" : [
      "External Purchase Server API"
    ],
    "preciseIdentifier" : "rest:external_purchase_server_api:put:v1-reports"
  },
  "title" : "Send External Purchase Report"
}
-->

# Send External Purchase Report

Report required information about external purchase tokens and associated transactions.

## Discussion

Call this endpoint to report an external purchase token that your app or website receives, and the transactions and events associated with the token. For information on the reporting requirements, see the [Commission, transaction reports, and payments](https://developer.apple.com/support/apps-using-alternative-payment-providers-in-the-eu#commission-reports-and-payments) section of the article Using alternative payment options on the App Store in the European Union.

To send the report, add your data to the [`ExternalPurchaseReport`](/documentation/ExternalPurchaseServerAPI/ExternalPurchaseReport) request body. For more information about creating reports, see the following:

- [Reporting tokens with transactions](/documentation/ExternalPurchaseServerAPI/reportwithtransactions)
- [Reporting unrecognized and transactionless tokens](/documentation/ExternalPurchaseServerAPI/reportwithouttransactions)
- [Reporting corrections](/documentation/ExternalPurchaseServerAPI/reportcorrections)

The server indicates it successfully received your report by returning an `HTTP 200` response with your [`requestIdentifier`](/documentation/ExternalPurchaseServerAPI/requestIdentifier) in the [`SendReportSuccessResponse`](/documentation/ExternalPurchaseServerAPI/SendReportSuccessResponse). If you receive an `HTTP 400` error response with a [`SendReportErrorResponse`](/documentation/ExternalPurchaseServerAPI/SendReportErrorResponse) object, the server didn’t successfully receive any of the data in the report. Fix the errors listed in the response object, and resubmit the full report using the same [`requestIdentifier`](/documentation/ExternalPurchaseServerAPI/requestIdentifier). The server also sends an `HTTP 400` error if the request is a duplicate, or if it’s malformed.

### Testing in the sandbox environment

Call this endpoint using its sandbox URL only for tokens that the system generates in the sandbox environment. For more information about identifying sandbox tokens, see <doc://com.apple.documentation/documentation/StoreKit/receiving-and-decoding-external-purchase-tokens>.

> Important: The sandbox tokens and any test transaction data you submit through the sandbox URLs of the External Purchase Server API are not actual transactions.

---

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)