Skip to main content

IAP.getCompletedOrRefundedOrders

Fetches in-app purchase orders that have been completed or refunded. Supports pagination via hasNext and nextKey.

Signature

getCompletedOrRefundedOrders is a member of the IAP namespace object.

import { IAP } from '@apps-in-toss/web-framework';

declare const IAP: {
getCompletedOrRefundedOrders(): Promise<{
hasNext: boolean;
nextKey?: string | null;
orders: {
orderId: string;
sku: string;
status: 'COMPLETED' | 'REFUNDED';
date: string;
}[];
}>;
// ...see overview
};

Parameters

None.

Returns

Promise<CompletedOrRefundedOrdersResult> — paginated order list.

FieldTypeDescription
hasNextbooleanWhether more pages exist.
nextKeystring | null (optional)Key for the next page. null or omitted on the last page.
ordersarrayArray of order objects.
orders[].orderIdstringUnique order ID.
orders[].skustringProduct SKU.
orders[].status'COMPLETED' | 'REFUNDED'Order status.
orders[].datestringISO 8601 date — purchase date for COMPLETED, refund date for REFUNDED.

May return undefined on app versions below the minimum (Android 5.231.0 / iOS 5.231.0).

Permission

No permission required — the IAP namespace is not bound to a PermissionName.

Examples

Minimal

import { IAP } from '@apps-in-toss/web-framework';

const result = await IAP.getCompletedOrRefundedOrders();
console.log(result?.orders);

Realistic — iterate all pages

import { IAP } from '@apps-in-toss/web-framework';

async function fetchAllOrders() {
const allOrders: { orderId: string; sku: string; status: string; date: string }[] = [];

const result = await IAP.getCompletedOrRefundedOrders();
if (!result) return allOrders;

allOrders.push(...result.orders);

// The current SDK does not expose a nextKey parameter overload, so
// use hasNext for UI indication only.
if (result.hasNext) {
console.log('More pages available — nextKey:', result.nextKey);
}

return allOrders;
}

Try it live

Run this API in the "Order management" step of the IAP page in sdk-example.

Open in sdk-example

External references