---
title: "Confirm a transaction asynchronously"
method: POST
path: "/async/transactions/{transaction_id}/confirm"
tags: ["Transactions"]
---

# Confirm a transaction asynchronously

`POST /async/transactions/{transaction_id}/confirm`

If an **asynchronous** transaction was created without setting the `auto_confirm` flag, this endpoint will have to be called to confirm the transaction. Once successfully confirmed, the transfer order will be submitted to the operator to be processed.

Please note that only unexpired transactions can be confirmed, as denoted in the `confirmation_expiration_date` field of the transaction. Beyond this, the only allowed change is to [cancel the transaction](/#tag/Transactions/paths/~1transactions~1{transaction_id}~1cancel/post), so as to release the held balance.

## Path parameters

- `transaction_id` integer, required — Unique transaction identifier.

## Response `202`

Transaction confirmed

- Transaction
  - `id` integer — Unique transaction identifier.
  - `external_id` string, required — Unique identifier for the transaction in your system.
  - `creation_date` string, date-time
  - `confirmation_expiration_date` string, date-time
  - `confirmation_date` string, date-time
  - `product_id` integer, required — Product identifier.
  - `calculation_mode` 'SOURCE_AMOUNT' | 'DESTINATION_AMOUNT', nullable — Required when product type is either `RANGED_VALUE_RECHARGE`, `RANGED_VALUE_PIN_PURCHASE`, or `RANGED_VALUE_PAYMENT`
  - `source` object, nullable — Required for ranged value products and when `calculation_mode` is set to `SOURCE_AMOUNT`
    - `unit_type` 'CURRENCY', required
    - `unit` string, required
    - `amount` number, double, required
  - `destination` object, nullable — Required for ranged value products and when `calculation_mode` is set to `DESTINATION_AMOUNT`
    - `unit_type` 'CURRENCY', required
    - `unit` string, required
    - `amount` number, double, required
  - `auto_confirm` boolean — Determines whether a transaction will be automatically confirmed upon creation or not. This is opted-out by default. Setting this field to `true` is recommended when transaction details, e.g. prices, are known as it removes the need to perform a separate API call to [confirm transactions](#operation/postTransactionConfirmAsync).
  - `status` object
    - `id` integer
    - `message` string
    - `class` object
      - `id` integer, required
      - `message` string, required
  - `operator_reference` string, nullable
  - `pin` object, nullable
    - `code` string, nullable, required
    - `serial` string, nullable, required
  - `product` object
    - `id` integer, required
    - `name` string, required
    - `description` string, required
    - `tags` ProductTag[], nullable, required
    - `service` ProductService, required
      - `id` integer, required — Service identifier. See [Services](#tags/Services) for more details.
      - `name` string, required
      - `subservice` object, nullable
        - `id` integer — Sub-service identifier. See [Services](#tags/Services) for more details.
        - `name` string
    - `operator` object, required
      - `id` integer, required — Operator identifier.
      - `name` string, required
      - `country` Country, required
        - `name` string, required
        - `iso_code` string, required — Country code in [ISO 3166](https://www.iso.org/iso-3166-country-codes.html) format. Note that the official list can be extended with additional country codes.
        - `regions` ServiceRegion[], nullable, required
          - `name` string, required
          - `code` string, required — Country subregion code in [ISO 3166](https://www.iso.org/iso-3166-country-codes.html) format. Note that the official list can be extended with additional country codes.
      - `regions` ServiceRegion[], nullable, required
        - `name` string, required
        - `code` string, required — Country subregion code in [ISO 3166](https://www.iso.org/iso-3166-country-codes.html) format. Note that the official list can be extended with additional country codes.
    - `regions` ServiceRegion[], nullable, required
      - `name` string, required
      - `code` string, required — Country subregion code in [ISO 3166](https://www.iso.org/iso-3166-country-codes.html) format. Note that the official list can be extended with additional country codes.
    - `type` 'FIXED_VALUE_RECHARGE' | 'RANGED_VALUE_RECHARGE' | 'FIXED_VALUE_PIN_PURCHASE' | 'RANGED_VALUE_PIN_PURCHASE' | 'RANGED_VALUE_PAYMENT', required
    - `pin` object, nullable
      - `usage_info` string[], nullable, required
      - `validity` Validity, nullable, required
        - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH', required
        - `quantity` integer, required — Quantity related to validity (e.g. `7` in `7 DAY`). A `null` value indicates validity is not known, while a value of `-1` indicates unlimited validity (i.e. no expiration).
      - `terms` string, nullable, required — Contains special conditions, as well as generic product Terms & Conditions. Formatted in [Markdown](https://en.wikipedia.org/wiki/Markdown).
  - `prices` object
    - `wholesale` object, required
      - `unit_type` 'CURRENCY', required
      - `unit` string, nullable, required
      - `amount` number, double, required
      - `fee` number, double, required
    - `retail` object, nullable, required
      - `unit_type` 'CURRENCY', nullable, required
      - `unit` string, nullable, required
      - `amount` number, double, nullable, required
      - `fee` number, double, nullable, required
  - `rates` object
    - `base` number, double, required — Exchange rate between the source amount and the destination amount.
    - `wholesale` number, double, required — Exchange rate between the wholesale price and the destination amount.
    - `retail` number, double, nullable, required — Exchange rate between the retail price and the destination amount. A `null` value indicates retail prices are not configured, while a `-1` value indicates an infinite rate due to retail price being configured to a zero value.
  - `benefits` union[], nullable
    - union
      - FixedBenefit
        - `type` 'TALKTIME' | 'DATA' | 'SMS' | 'PAYMENT' | 'CREDITS', required
        - `unit_type` 'TIME' | 'DATA' | 'QUANTITY' | 'CURRENCY', required
        - `unit` string, required
        - `amount` FixedBenefitAmount, required
          - `base` number, double, required
          - `promotion_bonus` number, double, required
          - `total_excluding_tax` number, double, required
          - `total_including_tax` number, double, required
        - `additional_information` string, nullable, required
      - RangedBenefit
        - `type` 'TALKTIME' | 'DATA' | 'SMS' | 'PAYMENT' | 'CREDITS', required
        - `unit_type` 'TIME' | 'DATA' | 'QUANTITY' | 'CURRENCY', required
        - `unit` string, required
        - `amount` RangeBenefitAmountWithoutIncrement, required
          - `base` object, required — Base product benefits.
            - `min` number, double, required
            - `max` number, double, required
          - `promotion_bonus` object, required — Additional product benefits from applicable promotions.
            - `min` number, double, required
            - `max` number, double, required
          - `total_excluding_tax` object, required — Product benefits including promotions before taxes.
            - `min` number, double, required
            - `max` number, double, required
          - `total_including_tax` object, required — Product benefits including promotions after taxes. This field indicates the end benefits received by the end user.
            - `min` number, double, required
            - `max` number, double, required
        - `additional_information` string, nullable, required
  - `promotions` ProductPromotion[], nullable
    - `id` integer, required
    - `title` string, required
    - `description` string, required
    - `terms` string, nullable, required
    - `start_date` string, date-time, required
    - `end_date` string, date-time, required
  - `requested_values` object, nullable
    - `source` object
      - `unit_type` 'CURRENCY', required
      - `unit` string, required
      - `amount` number, double, required
    - `destination` object
      - `unit_type` 'CURRENCY', required
      - `unit` string, required
      - `amount` number, double, required
  - `adjusted_values` object, nullable
    - `source` object
      - `unit_type` 'CURRENCY', required
      - `unit` string, required
      - `amount` number, double, required
    - `destination` object
      - `unit_type` 'CURRENCY', required
      - `unit` string, required
      - `amount` number, double, required
  - `sender` object, nullable — Sender details for a transaction. This information is mostly optional and will only be required for products with sender information requirements as outlined in `required_sender_fields`.
    - `last_name` string
    - `first_name` string
    - `middle_name` string
    - `nationality_country_iso_code` string — Country code in [ISO 3166](https://www.iso.org/iso-3166-country-codes.html) format. Note that the official list can be extended with additional country codes.
    - `mobile_number` string — Mobile number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `email` string
    - `address_text` string
    - `address_city` string
    - `address_country_iso_code` string — Country code in [ISO 3166](https://www.iso.org/iso-3166-country-codes.html) format. Note that the official list can be extended with additional country codes.
    - `address_postal_code` string — Postal code.
  - `beneficiary` object, nullable — Beneficiary details for a transaction. This information is mostly optional and will only be required for products with beneficiary information requirements as outlined in `required_beneficiary_fields`.
    - `last_name` string
    - `first_name` string
    - `middle_name` string
    - `nationality_country_iso_code` string — Country code in [ISO 3166](https://www.iso.org/iso-3166-country-codes.html) format. Note that the official list can be extended with additional country codes.
    - `mobile_number` string — Mobile number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `email` string
    - `address_text` string
    - `address_city` string
    - `address_country_iso_code` string — Country code in [ISO 3166](https://www.iso.org/iso-3166-country-codes.html) format. Note that the official list can be extended with additional country codes.
    - `address_postal_code` string — Postal code.
  - `debit_party_identifier` object, nullable — Sending account details for a transaction. This information is mostly optional and will only be required for products with debit party information requirements as outlined in `required_debit_party_identifier_fields`.
    - `mobile_number` string — Mobile number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `account_number` string — Account number.
    - `account_qualifier` string
  - `credit_party_identifier` object, nullable — Receiving account details for a transaction. This information will be required for the majority of products with credit party inofrmation requirements outlined in `required_credit_party_identifier_fields`, but will be optional for certain products without any upfront recipient, e.g. Gift Cards.
    - `mobile_number` string — Mobile number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `account_number` string — Account number.
    - `account_qualifier` string
  - `statement_identifier` object, nullable — Qualifying statement details for a payment transaction. This information is mostly optional and will only be required for specific payment products with statement identifier requirements as outlined in `required_statement_identifier_fields`.
    - `reference` string
    - `due_date` string, date
  - `additional_identifier` object, nullable — Additional details for a transaction. This information is mostly optional and will be required primarily for compliance reasons for products with additional information requirements as outlined in `required_additional_identifier_fields`.
    - `purchaser_id` string — Anonymized ID related to the purchase for compliance reasons (e.g. terminal, POS, agent, end user, etc).
  - `metadata` TransactionMetadata — eSIM transaction metadata.
    - `type` 'ESIM', required
    - `activation_type` 'DATA_PLAN' | 'TOP_UP', required — Type of activation performed.
    - `balance` EsimBalance, required — Balance information for the activated eSIM data package.
      - `size` object, required — Total data size of the package.
        - `amount` integer, required — Numeric value of the data size.
        - `unit` 'TB' | 'GB' | 'MB' | 'KB' | 'B', required — Unit of the data size.
      - `validity` object, required — Remaining validity of the package.
        - `quantity` integer, required — Original validity size of the activated item.
        - `unit` 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND', required — Unit of validity period.
      - `country_set` string, required — Country set code (e.g., WWW for worldwide).
      - `extended_data_policy` object, required — Enriched with runtime state for an activated pack. Always returned. For STANDARD plans, only the type field will be returned.
        - `type` 'STANDARD' | 'UNLIMITED', required — Package type.
        - `reset_type` 'TIME_INTERVAL' | 'FIXED_TIME' | 'NONE', nullable — Method for resetting the high-speed data volume. Determines whether the interval or fixed_time field is returned. TIME_INTERVAL: high-speed volume resets on a recurring interval from activation (see interval field). FIXED_TIME: high-speed volume resets at a specific time of day (see fixed_time field). NONE: high-speed volume does not reset.
        - `interval` string, nullable — Interval duration for high-speed volume reset. Only present when reset_type is TIME_INTERVAL. For example, "24h" means the high-speed volume resets every 24 hours from activation.
        - `fixed_time` string, nullable — Time of day (HH:MM in UTC) when high-speed volume resets. Only present when reset_type is FIXED_TIME. Typically midnight ("00:00") but may vary due to time zone differences (e.g., "08:00").
        - `throttle_speed` string, nullable — Speed to throttle to after high-speed volume is used up.
        - `total_high_speed_volume` object, nullable — Total high-speed data volume before throttling. Only populated when extended_data_policy type is UNLIMITED.
          - `amount` integer, required — Numeric value of the data size.
          - `unit` 'TB' | 'GB' | 'MB' | 'KB' | 'B', required — Unit of the data size.
    - `profile` EsimProfile, nullable — eSIM profile information. Only returned when activation_type is DATA_PLAN. Not present for TOP_UP transactions.
      - `iccid` string, required — Integrated Circuit Card Identifier.
      - `activation_code` string, required — QR code content for eSIM installation.
      - `apple_universal_link` string, uri, required — Universal link for eSIM installation on Apple devices.
      - `android_universal_link` string, uri, required — Universal link for eSIM installation on Android devices.
      - `installation_url` string, uri, required — Generic installation URL for the eSIM.

## Other responses

- `default` — default error response

---

[API](https://skmtc.dev/dtone/apis/digital-value-services-api.md) · [All operations](https://skmtc.dev/dtone/apis/digital-value-services-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/dtone/digital-value-services-api/revisions/41b676566ef8/schema)
