---
title: "Transfer Apple SK2 purchase"
method: POST
path: "/purchases/transfers"
---

# Transfer Apple SK2 purchase

`POST /purchases/transfers`

Use this endpoint to transfer an existing **active** purchase from one user to another. This allows re-assigning access to a subscription or in-app purchase.  <br><br> The transfer process is asynchronous. Upon successful registration, the API will return a `202` `Accepted` status with a unique `synchronizationId` in the response body. <br><br> **Note:** Only active purchases can be transferred.  <br><br>Please note that **this endpoint can be authorized with a publisher (X-Publisher-Token) or JWT (Bearer) token**. Depending on how you integrate with Cleeng (directly or through middleware), use either a <<glossary:JWT>> or X-Publisher-Token header authorization. <br> <br> <span style="color:green">**Please use JWT (Bearer) token to try out the endpoint in the API console in this documentation**.</span>

You can then use the following methods to check the status of the transfer process:

* **Polling:** Use the `/purchases/synchronizations/{synchronizationId}` endpoint to periodically retrieve the status. This endpoint provides a concise response with the essential status information.
* **Webhooks:** Subscribe to the `inappPurchaseSyncResult` webhook to receive real-time updates on the status. The webhook payload (`WebhookSynchronizationStatus`) includes detailed information about the transfer, including the `synchronizationId`, transaction details (`transactionId`, `cleengCustomerId`, `originalTransactionId`), `accessGranted`, `offerId`, and `result`.

You can choose to use either the polling mechanism, the webhook, or both, depending on your needs.

# Errors

| HTTP Status Code | Error Code         | Message                                                         |
| :--------------- | :----------------- | :-------------------------------------------------------------- |
| 400              | REQ0001            | Invalid body                                                    |
| 400              | REQ0004            | Invalid headers                                                 |
| 409              | SK2C0103           | The resource is temporarily locked due to a concurrent request. |
| 409              | SK2C0104           | The resource is temporarily locked due to a concurrent request. |
| 422              | SK2C0005           | The migration is in progress.                                   |
| 422              | SK2C0100           | Unable to find customer                                         |
| 500              | SK2C0004           | StoreKit2 integration not activated                             |
| 500              | SXXXX (X - number) | Internal Server Error                                           |

## Headers

- `Authorization` string
- `X-Publisher-Token` string
- `Correlation-Id` string
- `X-Publisher-Id` integer, required
- `X-App-Version` string
- `X-Device-Id` string
- `X-Device-Type` string
- `X-User-Action` string

## Request body

- object
  - `targetCustomerId` integer, required — Cleeng's unique identifier for the customer who will become the new owner of the purchase after the transfer.
  - `transactionId` string, required — Apple's unique transaction identifier for the purchase to be transferred. This ID is used to identify the purchase in Cleeng's system.
  - `ipAddress` string — IP address of the customer who requested the transfer. This information will be stored in the user's profile as the IP address of their latest activity. Accepted: IPv4 <br><br> The parameter is required in backend intergrations (with middleware) to ensure the correct customer IP address (address of their latest activity) is stored.

## Response `202`

202

## Other responses

- `400` — 400
- `409` — 409
- `422` — 422
- `500` — 500

---

[API](https://skmtc.net/cleeng/apis/mediastore-api.md) · [All operations](https://skmtc.net/cleeng/apis/mediastore-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cleeng/mediastore-api/versions/00cbfe7998a4/schema)
