---
api: 'Merchant API'
---

# Retrieve payment details

Retrieve information about a specific payment, based on the payment's ID.

Use this endpoint to track a payment's lifecycle, for example:
  - When you develop a [1-click checkout process](/docs/guides/merchant/optimise-checkout/save-payment-methods/checkout-with-saved-card)
  - When you build a [subscription management system](/docs/guides/merchant/optimise-checkout/save-payment-methods/subscription-management)

## Endpoint

GET `/api/payments/{payment_id}`

## Returns

### 200

Payment details

#### Response attributes

- `order_id` (string, optional)
    The ID of the associated order.
- `id` (string)
    The ID of the payment.
- `state` (enum)
    The status of the payment.
    Possible enum values:

    - `pending`
    - `authentication_challenge`
    - `authentication_verified`
    - `authorisation_started`
    - `authorisation_passed`
    - `authorised`
    - `capture_started`
    - `captured`
    - `refund_validated`
    - `refund_started`
    - `cancellation_started`
    - `declining`
    - `completing`
    - `cancelling`
    - `failing`
    - `completed`
    - `declined`
    - `soft_declined`
    - `cancelled`
    - `failed`
- `decline_reason` (enum, optional)
    The reason for a `failed` or `declined` payment.
    
    A failed or declined payment can result from multiple reasons. To learn more, check our [failure reasons](/docs/guides/merchant/reference/error-codes/decline-reasons).
    Possible enum values:

    - `3ds_challenge_abandoned`
    - `3ds_challenge_failed_manually`
    - `cardholder_name_missing`
    - `customer_challenge_abandoned`
    - `customer_challenge_failed`
    - `customer_name_mismatch`
    - `do_not_honour`
    - `expired_card`
    - `high_risk`
    - `insufficient_funds`
    - `invalid_address`
    - `invalid_amount`
    - `invalid_card`
    - `invalid_country`
    - `invalid_cvv`
    - `invalid_email`
    - `invalid_expiry`
    - `invalid_merchant`
    - `invalid_phone`
    - `invalid_pin`
    - `issuer_not_available`
    - `pick_up_card`
    - `rejected_by_customer`
    - `restricted_card`
    - `suspected_fraud`
    - `technical_error`
    - `transaction_not_allowed_for_cardholder`
    - `unknown_card`
    - `withdrawal_limit_exceeded`
- `bank_message` (string, optional)
    The reason for a `failed` or `declined` payment, sent by the financial institution processing the payment.
- `created_at` (string)
    The date and time the payment was created.
- `updated_at` (string)
    The date and time the payment was last updated.
- `token` (string, optional)
    Temporary token of the payment used to fetch the reward offer during checkout and link user registrations to the given offers. 
    
    The token is only valid for a limited time.
- `amount` (integer)
    The payment amount in minor units (e.g., cents). The value of this field depends on the payment type and state.
    
    | Payment type | State | Amount value |
    |--------------|-------|--------------|
    | Standard payment | Any | Total payment amount |
    | Pre-authorised payment | `authorisation_started` | New amount being authorised (during increment processing) |
    | Pre-authorised payment | `authorised` | Currently authorised amount (equals `authorised_amount`) |
    
    :::info
    For pre-authorised payments, see the `authorised_amount` field for tracking the currently authorised amount separately.
    :::
- `authorised_amount` (integer, optional)
    The currently authorised amount for this payment (in minor units).
    
    For pre-authorised payments with incremental authorization:
    - Initially equals the `amount` field
    - Remains unchanged during increment processing
    - Updates to new amount upon successful increment
    - Remains at original amount if increment is declined
    
    For standard payments, this field may not be present or will equal the `amount` field.
- `currency` (string, optional)
    [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
    
    :::info
    For more information about the supported currencies, see: [Help Center](https://help.revolut.com/business/help/merchant-accounts/payments/in-which-currencies-can-i-accept-payments/).
    :::
- `settled_amount` (integer, optional)
    The amount of the settled payment (minor currency unit). For example, `7034` stands for €70.34.
- `settled_currency` (string, optional)
    The currency of the settled payment. [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
    
    :::info
    For more information about the supported currencies, see: [Help Center](https://help.revolut.com/business/help/merchant-accounts/payments/in-which-currencies-can-i-accept-payments/).
    :::
- `payment_method` (object, optional)
    The details of the payment method used to make the payment.
- `authentication_challenge` (object, optional)
    Details about the authentication challenge that should be performed to complete the authentication process. For more information about Revolut's 3DS solution, see: [3D Secure overview](/docs/guides/merchant/reference/3d-secure).
    
    Only returned if the payment's state is `authentication_challenge`.
- `billing_address` (object, optional)
    Object containing address details.
  - `billing_address.street_line_1` (string, optional)
      Street line 1 information.
  - `billing_address.street_line_2` (string, optional)
      Street line 2 information.
  - `billing_address.region` (string, optional)
      The region associated with the address.
  - `billing_address.city` (string, optional)
      The city associated with the address.
  - `billing_address.country_code` (string)
      The 2-letter country code of the country associated with the address.
  - `billing_address.postcode` (string)
      The postcode associated with the address.
- `risk_level` (enum, optional)
    The risk level of the card.
    
    If the risk level is `high`, the payment might be declined.
    Possible enum values:

    - `low`
    - `high`
- `fees` (array of object, optional)
    The details of the order fee.
  - `fees[].type` (enum, optional)
      The type of the order fee.
      Possible enum values:

      - `fx`
      - `acquiring`
  - `fees[].amount` (integer, optional)
      The amount of the payment fee (minor currency unit). For example, enter `7034` for €70.34 in the field.
  - `fees[].currency` (string, optional)
      The currency of the payment fee. [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
      
      :::info
      For more information about the supported currencies, see: [Help Center](https://help.revolut.com/business/help/merchant-accounts/payments/in-which-currencies-can-i-accept-payments/).
      :::
- `payer` (object, optional)
    The person who made the payment. This object is present when an email or phone number is provided during the payment flow.
    
    Capturing payer details lets you identify exactly who authorised the charge, reach the right person for receipts or refund queries, and support compliance or fraud-review workflows where the paying identity matters.
  - `payer.email` (string, optional)
      The email of the person who made the payment.
  - `payer.phone` (string, optional)
      The phone number of the payer in [E.164 format](https://en.wikipedia.org/wiki/E.164).

## Error responses

| HTTP status code | Description |
| --- | --- |
| 400 | Bad Request |
| 401 | Unauthorized |
| 404 | Not Found |
