Skip to main content

Purchase history

Both operations require an authenticated player session. They cover shop, game currency and game service orders, including free purchases and balance payments. Payment history is requested separately.

playerPurchases​

QuerydocumentId: playerPurchasesauth: Bearer session

playerPurchases​

Description​

Returns purchases from newest to oldest. To continue, pass pageInfo.endCursor as after with the same filters. Start with after: null after changing a filter. hasNextPage: false marks the end of the list.

Input​

FieldTypeDescription
firstInt1 to 100; defaults to 20.
afterIDPrevious page cursor or null.
kindPlayerPurchaseKindSHOP, GAME_CURRENCY, GAME_SERVICE; null = all types.
gameServerIdIntGame server ID; null includes all servers in the history.

Example​

Request
documentId: playerPurchases
{
"documentId": "playerPurchases",
"variables": {
"first": 20,
"after": null,
"kind": "SHOP",
"gameServerId": 1
}
}
Response
200 OK
{
"data": {
"playerPurchases": {
"items": [
{
"id": "d9b29e6b-ce50-4c3b-9de6-a2b2ea2d839d",
"gameServerId": 1,
"kind": "SHOP",
"total": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "ELX",
"currencyScale": 2
},
"createdAt": "2026-09-11 10:15:00",
"status": "PAID",
"recovery": {
"status": "REQUIRES_REVIEW",
"paid": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "USD",
"currencyScale": 2
},
"recovered": {
"units": "2500",
"decimal": "25.00",
"currencyCode": "USD",
"currencyScale": 2
}
}
}
],
"pageInfo": {
"endCursor": null,
"hasNextPage": false
}
}
}
}

playerPurchase​

QuerydocumentId: playerPurchaseauth: Bearer session

playerPurchase​

Description​

Returns a purchase receipt with its summary, priced lines and each reward's status. Use the order ID from checkout or playerPurchases.items[].id.

Input​

FieldTypeDescription
idID!Required purchase ID, not a payment ID.

Example​

Request
documentId: playerPurchase
{
"documentId": "playerPurchase",
"variables": {
"id": "d9b29e6b-ce50-4c3b-9de6-a2b2ea2d839d"
}
}
Response
200 OK
{
"data": {
"playerPurchase": {
"purchase": {
"id": "d9b29e6b-ce50-4c3b-9de6-a2b2ea2d839d",
"gameServerId": 1,
"kind": "SHOP",
"total": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "ELX",
"currencyScale": 2
},
"createdAt": "2026-09-11 10:15:00",
"status": "PAID",
"recovery": {
"status": "REQUIRES_REVIEW",
"paid": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "USD",
"currencyScale": 2
},
"recovered": {
"units": "2500",
"decimal": "25.00",
"currencyCode": "USD",
"currencyScale": 2
}
}
},
"lines": [
{
"id": "01941f29-7c00-7000-8000-000000000003",
"quantity": "1",
"unitPrice": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "ELX",
"currencyScale": 2
},
"total": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "ELX",
"currencyScale": 2
}
}
],
"rewards": [
{
"id": "01941f29-7c00-7000-8000-000000000004",
"deliveryStatus": "PENDING",
"recovery": "RESTRICTED",
"target": {
"kind": "WAREHOUSE",
"account": null,
"character": null
},
"content": {
"__typename": "PlayerPurchaseItems",
"items": [
{
"itemId": "57",
"quantity": "120",
"enchantLevel": 0
},
{
"itemId": "4037",
"quantity": "2",
"enchantLevel": 0
}
]
}
}
]
}
}
}

Response fields​

FieldMeaning
purchase.idPurchase reference.
purchase.gameServerIdPurchase server.
purchase.kindSHOP, GAME_CURRENCY, GAME_SERVICE.
purchase.totalPurchase total.
purchase.createdAtPurchase creation timestamp in UTC.
purchase.statusPENDING_PAYMENT, CONFIRMED, PAID, FULFILLING, FULFILLED, CANCELLED.
purchase.recoveryReturn processing details, or null if none exist.
lines[]Line ID, quantity, unit price and line total.
rewards[]Reward ID, recipient, contents and separate delivery and return statuses.

Money retains exact precision: units and decimal are strings, currencyCode identifies the currency and currencyScale specifies the decimal places. Quantities are also strings. Do not convert them to floating-point numbers. The original payment and order total can have different currencies.

Purchase return​

recovery.statusMeaning
PENDINGReturn processing is pending.
REQUIRES_REVIEWThe purchase is under review.
RECOVEREDThe return is processed; rewards show the outcome.
RELEASINGRestrictions are being lifted.
KEPTThe purchase was kept.
MANUALLY_RESOLVEDThe review was completed manually.

paid holds the original payment amount. recovered holds the current refund or lost-dispute amount in that currency. These fields do not replace purchase.total.

Delivery and reward status​

deliveryStatus is one of PENDING, DELIVERING, DELIVERED, RETRY_SCHEDULED, REQUIRES_REVIEW, CANCELLED.

rewards[].recoveryMeaning
NONENo return status applies.
PROCESSINGThe outcome is being processed.
RESTRICTEDThe reward is temporarily restricted.
DELIVERY_STOPPEDFurther delivery has been stopped.
RECALLEDThe delivered reward was recalled.
RELEASEDThe restriction was lifted.
NEEDS_REVIEWReview is required.

target.kind is WAREHOUSE, GAME_ACCOUNT or CHARACTER. account and character are null when not applicable to the recipient.

Content types​

In the persisted response, content.__typename determines the available fields:

__typenameFields
PlayerPurchaseItemsitems[]: itemId: ID!, quantity: String!, enchantLevel: Int!.
PlayerPurchaseCurrencyquantity: String!, itemId: ID, deliveryType: CHARACTER_ITEM | ACCOUNT_POINTS.
PlayerPurchaseGameServicefeatureCode: String!.

For ACCOUNT_POINTS, itemId is null. featureCode identifies the purchased game service.

Errors​

extensions.codeRecovery
PLAYER_PURCHASE_NOT_FOUNDRefresh the list and check the purchase reference.
PLAYER_PURCHASE_INVALID_REQUESTCheck the input and clear the cursor after changing filters.
PLAYER_PURCHASE_UNAVAILABLETry reading again later.

Field errors use the standard validation response. These operations only read history; they do not request a refund.

Interface examples.