---
title: "Create new bulk purchase"
method: POST
path: "/v1/purchases/bulk"
tags: ["Purchases"]
---

# Create new bulk purchase

`POST /v1/purchases/bulk`

Creates a new wholesale purchase for the specified country. Immediately debits the balance and returns the purchase with the status “PENDING”.

**Wholesale purchase creation process**
1. Checks the availability of the country and the user's balance.
2. Reserves multiple accounts with the provider.
3. Atomically debits the balance and creates a bulk purchase record.
4. Returns the bulk purchase with the status “PENDING”.

**Webhook notification.** Optionally provide `callback_url` to receive a webhook when the archive is ready.

**Next steps.** Call “GET /bulk/:purchaseId” to get the account archive link.

## Request body

- object
  - `country_code` string, required — ISO 3166-1 alpha-2 country code.
  - `quantity` integer, required — Number of accounts to purchase
  - `callback_url` string, uri — URL to receive webhook notification when bulk archive is ready. POST request will be sent with `WebhookBulkReadyPayload`. **Retry policy.** If your endpoint does not return HTTP 200, webhook will be retried up to 3 times with delays: immediately, after 10 seconds, after 30 seconds. Any non-200 response triggers retry.

## Response `200`

Response for status 200

- object
  - `bulk_purchase_id` integer, required — Unique ID of the bulk purchase request
  - `country_code` string, required — ISO 3166-1 alpha-2 country code.
  - `quantity` integer, required — Number of accounts in this purchase
  - `total_price` object, required — Total price for all accounts
    - `amount` string, required — Monetary amount as a string with up to 2 decimal places.
    - `currency_code` string, required — ISO 4217 currency code.
  - `price_per_account` object, required — Price of a single account
    - `amount` string, required — Monetary amount as a string with up to 2 decimal places.
    - `currency_code` string, required — ISO 4217 currency code.
  - `item` object, nullable, required — Archive data (only populated when status is SUCCESS)
    - `export_id` string, required — Archive/export ID with sessions
    - `archive_url` string, required — Path or URL to download the archive with accounts
    - `quantity` integer, required — Number of accounts in the archive
    - `status` 'PENDING' | 'SUCCESS' | 'ERROR' | 'REFUND', required — Status of bulk purchase
    - `created_at` string, required — Bulk purchase creation timestamp
  - `status` 'PENDING' | 'SUCCESS' | 'ERROR' | 'REFUND', required — Current status of bulk purchase
  - `created_at` string, required — Bulk purchase creation timestamp
  - `updated_at` string, required — Last update timestamp

---

[API](https://skmtc.net/getmytg/apis/get-my-tg-api.md) · [All operations](https://skmtc.net/getmytg/apis/get-my-tg-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getmytg/get-my-tg-api/versions/30f975c0d1e6/schema)
