---
title: "Check checkout status"
method: GET
path: "/v2/checkouts/{checkoutId}"
tags: ["checkouts"]
---

# Check checkout status

`GET /v2/checkouts/{checkoutId}`

## Path parameters

- `checkoutId` string, uuid, required

## Response `200`

Request has been processed by PawaPay.

- CheckoutSearchResult
  - `status` 'FOUND' | 'NOT_FOUND', required — The result of this operation. - `FOUND` - The payment was found in PawaPay. - `NOT_FOUND` - The payment was not found in PawaPay.
  - `data` Checkout
    - `checkoutId` string, uuid, required — The unique ID for this payment in PawaPay as specified by you during initiation.
    - `status` 'WAITING_PAYMENT' | 'PROCESSING' | 'COMPLETED' | 'FAILED' | 'EXPIRED' | 'CANCELLED', required — Possible checkout lifecycle statuses. This is distinct from the initiation status (`CheckoutCreationStatus`) returned when the checkout is created. * `WAITING_PAYMENT` - The checkout and its hosted payment page have been created and are waiting for the customer to pay. * `PROCESSING` - A payment attempt is in progress and the checkout is still being processed. * `COMPLETED` - The checkout has completed successfully. This is a **final status.** * `FAILED` - The checkout has failed. Inspect `deposit` or `depositsHistory` for the latest attempt result when available. This is a **final status.** * `EXPIRED` - The checkout has expired and can no longer be used. This is a **final status.** * `CANCELLED` - The customer cancelled the payment on the hosted payment page. This is a **final status.**
    - `redirectUrl` string, uri, required — The URL to which the customer must be redirected to open and complete the hosted payment page.
    - `returnUrl` string, uri — The URL the customer should be redirected to after the payment is processed.
    - `returnMethod` 'INSTANT' | 'COUNTDOWN' | 'CUSTOMER_ACTION' — Controls how the customer is returned from the hosted payment page to the `returnUrl` once the payment is finished or cancelled. The customer is always returned eventually; this only affects the experience. * `INSTANT` - The customer is redirected back immediately, with no extra screen. * `COUNTDOWN` - A short countdown is shown, then the customer is redirected automatically. * `CUSTOMER_ACTION` - The checkout page waits until the customer presses "Return to merchant".
    - `defaultLanguage` string — The default language of the checkout when one was specified during creation.
    - `countries` CheckoutCountry[], required — The list of countries that the hosted payment page should allow for this checkout.
    - `expiresAfter` integer — Number of minutes after creation when this checkout is configured to expire. Between 3 and 60; defaults to 15.
    - `amounts` CheckoutAmount[], required — The fixed amount the customer is asked to pay, specified per country and currency, as configured for this checkout. When set, it contains an entry for each country in the `countries` array, defining the amount the customer pays for the country and currency they select on the hosted payment page. If not set, the customer enters the amount themselves on the hosted payment page.
      - `country` string, required — The country this amount is for. Format is ISO 3166-1 alpha-3, three character country code in upper case. Read more from [Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3#Officially_assigned_code_elements).
      - `currency` string, required — The currency in which the `amount` is specified. Format must be the ISO 4217 three character currency code in upper case. Read more from [Wikipedia](https://en.wikipedia.org/wiki/ISO_4217#Active_codes). Find the supported currencies for the [provider](/v2/docs/providers). The [active configuration](/v2/api-reference/toolkit/active-configuration) endpoint has all the providers configured for your account together with the supported currencies.
      - `amount` string, required — The amount of the payment. Amount must follow below requirements or the request will be **rejected**: * Not all providers support decimals. Find which ones do from [providers](/v2/docs/providers) or dynamically using [active configuration](/v2/api-reference/toolkit/active-configuration) endpoint. * Transaction limits apply. Find them from the [Active Configuration](/v2/api-reference/toolkit/active-configuration) endpoint. * Leading zeroes are not permitted except where the value is less than 1. For any value less than one, one and only one leading zero must be supplied.
    - `payer` CheckoutPayer — Details of the payer that should be pre-filled for the hosted payment page, if specified.
      - `type` 'MMO', required — The type of account involved in the transaction. At the moment, only **MMO** is supported.
      - `accountDetails` CheckoutAccountDetails, required
        - `phoneNumber` string — The phone number (MSISDN) of the customer paying or receiving payment. The format is described in [Wikipedia](https://en.wikipedia.org/wiki/MSISDN). Use [predict provider](/v2/api-reference/toolkit/predict-provider) to validate and sanitise the phone number. Phone number validation has following rules: * Only digits without whitespaces or any other separators or prefixes like '+'. * Should not start with zero. * Country code is mandatory. * Should not exceed or be less than the valid length of specified country.
        - `provider` string — The provider represents the mobile money operator or processor that can process payments. Find here a list of all the supported [providers](/v2/docs/providers). The [active configuration](/v2/api-reference/toolkit/active-configuration) endpoint provides the list of provider configured for your account. You can use the [predict provider](/v2/api-reference/toolkit/predict-provider) enpoint to predict the provider to use based on the phone number (MSISDN).
        - `allowCustomerToOverride` boolean, required — Indicates whether the customer may change the pre-filled payer details in the hosted payment page.
    - `clientReferenceId` string — A reference to an entity in your system that this payment relates to. For example, an invoice ID, customer ID etc.
    - `created` string, date-time — The timestamp of when the payment was created in the PawaPay platform. Format defined by 'date-time' in RFC3339 section 5.6 from [IETF](https://tools.ietf.org/html/rfc3339#section-5.6)
    - `providerTransactionId` string — The unique ID for this payment assigned by the provider. The customer would see this ID on their SMS receipt and transaction history.
    - `depositStatus` 'PROCESSING' | 'COMPLETED' | 'FAILED' — Current aggregate status for the checkout, representing the latest payment attempt: * `PROCESSING` - The latest payment attempt is still being processed. Attempts undergoing reconciliation also remain `PROCESSING` until a final status is determined. * `COMPLETED` - The latest payment attempt completed successfully. * `FAILED` - The latest payment attempt failed.
    - `deposit` CheckoutDeposit
      - `depositId` string, uuid, required — The unique ID for this payment in PawaPay as specified by you during initiation.
      - `status` 'ACCEPTED' | 'PROCESSING' | 'COMPLETED' | 'FAILED', required — Possible statuses for a payment attempt inside the checkout: * `ACCEPTED` - The payment attempt has been accepted by PawaPay for processing. * `PROCESSING` - The payment attempt is being processed. Attempts undergoing reconciliation also remain `PROCESSING` until a final status is determined. * `COMPLETED` - The payment attempt completed successfully. * `FAILED` - The payment attempt failed.
      - `created` string, date-time, required — The timestamp of when the payment was created in the PawaPay platform. Format defined by 'date-time' in RFC3339 section 5.6 from [IETF](https://tools.ietf.org/html/rfc3339#section-5.6)
      - `providerTransactionId` string — The unique ID for this payment assigned by the provider. The customer would see this ID on their SMS receipt and transaction history.
      - `failureReason` CheckoutDepositFailureReason — The failure reason of the payment attempt when its status is `FAILED`.
        - `failureCode` string, required — Failure code of the payment attempt. Checkout payments use the same failure codes as standard deposits.
        - `failureMessage` string — Human readable description of the payment attempt failure.
      - `amount` string — The amount of the payment. Amount must follow below requirements or the request will be **rejected**: * Not all providers support decimals. Find which ones do from [providers](/v2/docs/providers) or dynamically using [active configuration](/v2/api-reference/toolkit/active-configuration) endpoint. * Transaction limits apply. Find them from the [Active Configuration](/v2/api-reference/toolkit/active-configuration) endpoint. * Leading zeroes are not permitted except where the value is less than 1. For any value less than one, one and only one leading zero must be supplied.
      - `currency` string — The currency in which the `amount` is specified. Format must be the ISO 4217 three character currency code in upper case. Read more from [Wikipedia](https://en.wikipedia.org/wiki/ISO_4217#Active_codes). Find the supported currencies for the [provider](/v2/docs/providers). The [active configuration](/v2/api-reference/toolkit/active-configuration) endpoint has all the providers configured for your account together with the supported currencies.
      - `country` string — The country in which the payment was initiated. Format is ISO 3166-1 alpha-3, three character country code in upper case. Read more from [Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3#Officially_assigned_code_elements).
      - `payer` PayerOrRecipient — Details about the customer who is paying or receiving the payment.
        - `type` 'MMO', required — The type of account involved in the transaction. At the moment, only **MMO** is supported.
        - `accountDetails` AccountDetails, required
          - `phoneNumber` string, required — The phone number (MSISDN) of the customer paying or receiving payment. The format is described in [Wikipedia](https://en.wikipedia.org/wiki/MSISDN). Use [predict provider](/v2/api-reference/toolkit/predict-provider) to validate and sanitise the phone number. Phone number validation has following rules: * Only digits without whitespaces or any other separators or prefixes like '+'. * Should not start with zero. * Country code is mandatory. * Should not exceed or be less than the valid length of specified country.
          - `provider` string, required — The provider represents the mobile money operator or processor that can process payments. Find here a list of all the supported [providers](/v2/docs/providers). The [active configuration](/v2/api-reference/toolkit/active-configuration) endpoint provides the list of provider configured for your account. You can use the [predict provider](/v2/api-reference/toolkit/predict-provider) enpoint to predict the provider to use based on the phone number (MSISDN).
      - `customerMessage` string — A short narration for the transaction. Depending on the 'provider', this message may be visible to the customer in the SMS receipt or within their transaction history. Defaults to your company name as registered on your PawaPay account trimmed to fit the length limitations.
      - `metadata` TransactionMetadataResponse — The metadata that was provided in the original initation request in a JSON object format.
        - `additionalProperties` string — Each passed in metadata field will be a property of the metadata JSON object.
    - `depositsHistory` CheckoutDeposit[], required — History of payment attempts within this checkout. A single checkout can contain multiple attempts, but at most one can complete successfully.
      - `depositId` string, uuid, required — The unique ID for this payment in PawaPay as specified by you during initiation.
      - `status` 'ACCEPTED' | 'PROCESSING' | 'COMPLETED' | 'FAILED', required — Possible statuses for a payment attempt inside the checkout: * `ACCEPTED` - The payment attempt has been accepted by PawaPay for processing. * `PROCESSING` - The payment attempt is being processed. Attempts undergoing reconciliation also remain `PROCESSING` until a final status is determined. * `COMPLETED` - The payment attempt completed successfully. * `FAILED` - The payment attempt failed.
      - `created` string, date-time, required — The timestamp of when the payment was created in the PawaPay platform. Format defined by 'date-time' in RFC3339 section 5.6 from [IETF](https://tools.ietf.org/html/rfc3339#section-5.6)
      - `providerTransactionId` string — The unique ID for this payment assigned by the provider. The customer would see this ID on their SMS receipt and transaction history.
      - `failureReason` CheckoutDepositFailureReason — The failure reason of the payment attempt when its status is `FAILED`.
        - `failureCode` string, required — Failure code of the payment attempt. Checkout payments use the same failure codes as standard deposits.
        - `failureMessage` string — Human readable description of the payment attempt failure.
      - `amount` string — The amount of the payment. Amount must follow below requirements or the request will be **rejected**: * Not all providers support decimals. Find which ones do from [providers](/v2/docs/providers) or dynamically using [active configuration](/v2/api-reference/toolkit/active-configuration) endpoint. * Transaction limits apply. Find them from the [Active Configuration](/v2/api-reference/toolkit/active-configuration) endpoint. * Leading zeroes are not permitted except where the value is less than 1. For any value less than one, one and only one leading zero must be supplied.
      - `currency` string — The currency in which the `amount` is specified. Format must be the ISO 4217 three character currency code in upper case. Read more from [Wikipedia](https://en.wikipedia.org/wiki/ISO_4217#Active_codes). Find the supported currencies for the [provider](/v2/docs/providers). The [active configuration](/v2/api-reference/toolkit/active-configuration) endpoint has all the providers configured for your account together with the supported currencies.
      - `country` string — The country in which the payment was initiated. Format is ISO 3166-1 alpha-3, three character country code in upper case. Read more from [Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3#Officially_assigned_code_elements).
      - `payer` PayerOrRecipient — Details about the customer who is paying or receiving the payment.
        - `type` 'MMO', required — The type of account involved in the transaction. At the moment, only **MMO** is supported.
        - `accountDetails` AccountDetails, required
          - `phoneNumber` string, required — The phone number (MSISDN) of the customer paying or receiving payment. The format is described in [Wikipedia](https://en.wikipedia.org/wiki/MSISDN). Use [predict provider](/v2/api-reference/toolkit/predict-provider) to validate and sanitise the phone number. Phone number validation has following rules: * Only digits without whitespaces or any other separators or prefixes like '+'. * Should not start with zero. * Country code is mandatory. * Should not exceed or be less than the valid length of specified country.
          - `provider` string, required — The provider represents the mobile money operator or processor that can process payments. Find here a list of all the supported [providers](/v2/docs/providers). The [active configuration](/v2/api-reference/toolkit/active-configuration) endpoint provides the list of provider configured for your account. You can use the [predict provider](/v2/api-reference/toolkit/predict-provider) enpoint to predict the provider to use based on the phone number (MSISDN).
      - `customerMessage` string — A short narration for the transaction. Depending on the 'provider', this message may be visible to the customer in the SMS receipt or within their transaction history. Defaults to your company name as registered on your PawaPay account trimmed to fit the length limitations.
      - `metadata` TransactionMetadataResponse — The metadata that was provided in the original initation request in a JSON object format.
        - `additionalProperties` string — Each passed in metadata field will be a property of the metadata JSON object.
    - `metadata` TransactionMetadataResponse, required — The metadata that was provided in the original initation request in a JSON object format.
      - `additionalProperties` string — Each passed in metadata field will be a property of the metadata JSON object.
    - `reason` CheckoutReason, required — Localized reason values shown to the customer inside the hosted payment page.
    - `checkoutCode` string, required — A unique identifier that forms part of the checkout's redirect URL.

## Other responses

- `401` — Authentication failed. Make sure you have added the API token into the header.
- `403` — Authorization failure. Please check your authentication token.
- `500` — An unknown failure has occured.

---

[API](https://skmtc.net/pawapay/apis/pawapay-merchant-api-v2.md) · [All operations](https://skmtc.net/pawapay/apis/pawapay-merchant-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pawapay/pawapay-merchant-api-v2/revisions/ce13c31e9746/schema)
