# Find one Payment

`GET /v2/payments/{id}`

Core API v2, Payments.

Retrieve a Payment by its ID

**Authentication:** Send `Authorization: Bearer <token>`. To authenticate, generate a Secret API Key from your ODUS Dashboard and include it in the `Authorization` header as follows: `Authorization: Bearer <YOUR_SECRET_API_KEY>`

## Parameters

### Path parameters

- `id` (string, required)

## Responses

### `200`

OK

Type: object (PaymentDTO).

- `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
- `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
- `id` (string, required): ID of the payment. Example: `pay_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
- `status` (string, required): Status of the payment. One of `open`, `requires_action`, `succeeded`, `cancelled`. Example: `succeeded`.
- `displayStatus` (string, required): A user-friendly aggregate status for display purposes. One of `retrying`, `chargeback`, `reversed`, `cancelled`, `partially_reversed`, `succeeded`, `uncaptured`, `incomplete`, `failed`, `unattempted`. Example: `succeeded`.
- `amount` (number, required): Payment amount in minor currency, e.g. 1500 for 15.00 USD. Example: `1500`.
- `note` (string, nullable): Optional note for the payment. Only available from the dashboard or the API using a secret key. Example: `This is a note for the payment`.
- `currency` (string, required): Currency of the payment. One of `usd`, `eur`, `gbp`, `cad`, `aud`, `pln`, `czk`, `sek`, `dkk`. Example: `usd`.
- `amountReversed` (number, required): Amount reversed for the payment. Example: `0`.
- `amountCaptured` (number, required): Amount captured for the payment. Example: `1500`.
- `isCaptured` (boolean, required): Indicates if the payment has been captured. Example: `true`.
- `isRedirectRequired` (boolean, required): Indicates if a redirect is required for the payment. Example: `false`.
- `isReversed` (boolean, required): Indicates if the payment has been partially reversed. Example: `false`.
- `isFullyReversed` (boolean, required): Indicates if the payment has been fully reversed. Example: `false`.
- `isRecovered` (boolean, required): Whether the payment recovered after one or more retry attempts and eventually succeeded. Example: `true`.
- `isRetrying` (boolean, required): Whether the payment is currently in a retrying state after a failed attempt. Example: `true`.
- `isChargebacked` (boolean): Whether a chargeback has been recorded for this payment. Only available from the dashboard or the API using a secret key. Example: `false`.
- `chargebackRecordedAt` (string (date-time), nullable): The timestamp when a chargeback was recorded for this payment. Only available from the dashboard or the API using a secret key. Example: `2026-01-15T10:30:00.000Z`.
- `authorizedAt` (string (date-time), nullable): The timestamp when an authorization was recorded for this payment. Only available from the dashboard or the API using a secret key. Example: `2026-01-15T10:30:00.000Z`.
- `capturedAt` (string (date-time), nullable): The timestamp when a capture was recorded for this payment. Only available from the dashboard or the API using a secret key. Example: `2026-01-15T10:35:00.000Z`.
- `reversedAt` (string (date-time), nullable): The timestamp when a reversal was recorded for this payment. Only available from the dashboard or the API using a secret key. Example: `2026-01-20T14:00:00.000Z`.
- `initiator` (string, required): The initiator of the payment, indicating who initiated the payment. One of `customer`, `merchant`. Example: `customer`.
- `offSessionType` (string, required, nullable): The off-session type of the payment. Only present for merchant-initiated payments. One of `recurring`, `unscheduled`. Example: `recurring`.
- `statementDescriptor` (string, nullable): Statement to be shown on bank statement. Only available from the dashboard or the API using a secret key. Example: `Some product`.
- `statementDescriptorSuffix` (string, nullable): Statement descriptor suffix, appended to your account's descriptor by gateways that support a per-payment suffix. Only available from the dashboard or the API using a secret key. Example: `PRO PLAN`.
- `latestMessage` (string, required, nullable): Latest message available for the payment. This message is non-sensitive and may be displayed to the customer. Example: `Payment was declined by the issuing bank.`.
- `latestDeclineType` (string, nullable): The decline type for the latest transaction. Only available from the dashboard or the API using a secret key. One of `soft_decline`, `hard_decline`, `not_attempted`. Example: `hard_decline`.
- `action` (object, required, nullable): The action that needs to be taken for this payment, e.g. redirecting the customer to a payment gateway.
  - `redirectUrl` (string, required): URL to redirect the customer to for completing payment authentication (e.g., 3D Secure) Example: `https://example.com`.
- `checkoutKey` (string): The checkout key for this payment, used for client-side payment processing by the Checkout SDK. Example: `ck_live_abc123def456`.
- `metadata` (object, required, nullable): Metadata for the payment.
- `attribution` (object, required, nullable): Attribution data for marketing tracking, including UTM parameters and platform click IDs.
  - `utm_source` (string, required, nullable): Traffic source (platform/site) Example: `google`.
  - `utm_medium` (string, required, nullable): Marketing medium/channel. Example: `cpc`.
  - `utm_campaign` (string, required, nullable): Campaign name/identifier. Example: `summer_sale`.
  - `utm_term` (string, required, nullable): Paid search keywords. Example: `running+shoes`.
  - `utm_content` (string, required, nullable): Differentiates ads/links. Example: `banner_a`.
  - `utm_id` (string, required, nullable): Used in URLs to assign a unique identifier or numerical ID to a specific marketing campaign. Example: `utm_123`.
  - `utm_contentid` (string, required, nullable): Content ID for tracking. Example: `content_123`.
  - `ref_id` (string, required, nullable): Reference ID for tracking. Example: `ref_abc`.
  - `fbclid` (string, required, nullable): Facebook click identifier. Example: `fbclid_abc`.
  - `cmpid` (string, required, nullable): Campaign ID. Example: `cmp_123`.
  - `sub1` (string, required, nullable): Sub-tracking parameter 1.
  - `sub2` (string, required, nullable): Sub-tracking parameter 2.
  - `sub3` (string, required, nullable): Sub-tracking parameter 3.
  - `sub4` (string, required, nullable): Sub-tracking parameter 4.
  - `sub5` (string, required, nullable): Sub-tracking parameter 5.
  - `sub6` (string, required, nullable): Sub-tracking parameter 6.
  - `sub7` (string, required, nullable): Sub-tracking parameter 7.
  - `sub8` (string, required, nullable): Sub-tracking parameter 8.
  - `sub9` (string, required, nullable): Sub-tracking parameter 9.
  - `sub10` (string, required, nullable): Sub-tracking parameter 10.
- `retry` (object, nullable): Retry details for this payment.
  - `attempts` (number, required): The number of retry attempts made. Example: `2`.
  - `nextAt` (string (date-time), required, nullable): The date when the next retry attempt is scheduled.
  - `nextAmount` (number, required, nullable): The amount to be charged for the next retry attempt. Example: `999`.
- `cart` (object, required, nullable): Cart associated with the payment, if any.
  - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
  - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
  - `metadata` (map of string to string, nullable): Metadata used by merchants to store additional information about the entity.
  - `id` (string, required): ID of the cart.
  - `currency` (string, required): Currency of the cart. One of `usd`, `eur`, `gbp`, `cad`, `aud`, `pln`, `czk`, `sek`, `dkk`. Example: `eur`.
  - `items` (array of object, required): List of items in the cart.
    - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
    - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
    - `metadata` (map of string to string, nullable): Metadata used by merchants to store additional information about the entity.
    - `id` (string, required): ID of the line item.
    - `currency` (string, required): Currency of the line item. One of `usd`, `eur`, `gbp`, `cad`, `aud`, `pln`, `czk`, `sek`, `dkk`. Example: `usd`.
    - `description` (string, required): Buyer-facing text for the line item. Defaults at creation to the price name or the product name, following the merchant's `lineItemDescriptionSource` setting, and can be overridden per line item. Example: `Pro Plan`.
    - `amount` (number, required): Amount of the line item in minor units (e.g., cents) Example: `1500`.
    - `lineAmount` (number, required): Line amount of the line item in minor units (e.g., cents), calculated as `amount` * `quantity` Example: `3000`.
    - `quantity` (number, required): Quantity of the line item. Example: `2`.
    - `subscription` (string, required, nullable): ID of the subscription this line item started. Set only on the recurring line items of the payment that starts a subscription, shortly after that payment succeeds rather than at the same moment, so it can briefly be empty. Always empty on renewal payments. The `subscription.active` webhook is sent once the subscription exists.
    - `price` (object): The price used for this line item. Only available from the dashboard or the API using a secret key.
      - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
      - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
      - `metadata` (map of string to string, required, nullable): Metadata used by merchants to store additional information about the entity.
      - `id` (string, required): ID of the price. Example: `price_2R4e2xDqbww8ewmkIYWE1A6Zcfp`.
      - `type` (string, required): Type of the price. One of `one_time`, `recurring`. Example: `recurring`.
      - `active` (boolean, required): Indicates if the price is currently active. Inactive prices will be hidden from the dashboard, but can still be used in the API. Example: `true`.
      - `name` (string, required): Name of the price. Only available from the dashboard or the API using a secret key. Example: `My Digital Subscription`.
      - `amount` (number, required): Amount of the price in minor units (e.g., cents) Example: `1500`.
      - `quantity` (number, required): Number of units this price represents. The `amount` covers all of them, so a line item referencing this price gets this quantity at a per-unit amount of `amount / quantity`. Example: `1`.
      - `currency` (string, required): Currency of the price. One of `usd`, `eur`, `gbp`, `cad`, `aud`, `pln`, `czk`, `sek`, `dkk`. Example: `usd`.
      - `product` (object, required): The product that this price represents. Only available from the dashboard or the API using a secret key.
        - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
        - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
        - `metadata` (map of string to string, required, nullable): Metadata used by merchants to store additional information about the entity.
        - `id` (string, required): ID of the product. Example: `prod_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
        - `active` (boolean, required): Indicates if the product is currently active. Inactive products will be hidden from the dashboard, but can still be used in the API. Example: `true`.
        - `name` (string, required): Name of the product. Only available from the dashboard or the API using a secret key. Example: `My product`.
        - `description` (string, required, nullable): Description of the product. Only available from the dashboard or the API using a secret key. Example: `Best selling product`.
        - `statementDescriptor` (string, required, nullable): Statement descriptor for the product that will be used in the bank statement. Example: `Face Yoga subscription`.
        - `statementDescriptorSuffix` (string, required, nullable): Statement descriptor suffix for the product, appended to your account's descriptor by gateways that support a per-payment suffix. Only available from the dashboard or the API using a secret key. Example: `PRO PLAN`.
        - `category` (string, required, nullable): Category of the product, sent to the payment provider so the VAT split between digital services and physical goods can be reconstructed from the provider reports. Plays no part in fulfillment. Only available from the dashboard or the API using a secret key. One of `digital`, `physical`. Example: `digital`.
        - `shippable` (boolean, required): Whether the product takes part in Order Management: a payment for one of its prices becomes an order item. Only available from the dashboard or the API using a secret key. Example: `false`.
        - `sku` (string, required, nullable): Stock Keeping Unit the warehouse ships this product under, used on the 3PL manifest. For a shippable product it decides whether the resulting order item physically ships: an item without one is kept on the order but never fulfilled. Null when the product has none. Only available from the dashboard or the API using a secret key. Example: `FY-YOGA-MAT-01`.
      - `recurringSchedule` (object, required, nullable): Recurring schedule for recurring prices. Only available from the dashboard or the API using a secret key.
        - `intervalUnit` (string, required): Recurring interval unit. One of `minute`, `hour`, `day`, `week`, `month`, `year`. Example: `month`.
        - `intervalCount` (number, required): Recurring interval count. Example: `1`.
        - `trial` (object, required, nullable): Trial schedule details when present.
          - `intervalUnit` (string, required): Trial interval unit. One of `minute`, `hour`, `day`, `week`, `month`, `year`. Example: `day`.
          - `intervalCount` (number, required): Trial interval count. Example: `7`.
          - `amount` (number, required): Initial setup/trial payment amount in minor units. This is the amount charged during the first billing cycle before the regular recurring amount takes effect. Example: `199`.
- `paymentMethodOptions` (object): Processing options for the payment. Only available from the dashboard or the API using a secret key.
  - `captureMethod` (string, required): Capture method for the payment. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request. One of `automatic`, `automaticDelayed`, `manual`. Example: `automatic`.
  - `captureDelay` (number, required, nullable): Delay in days before capture occurs. Only applicable when captureMethod is 'automaticDelayed'. Example: `7`.
  - `recurringCaptureMethod` (string, required, nullable): Capture method to use for recurring charges. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request. One of `automatic`, `automaticDelayed`, `manual`. Example: `automatic`.
  - `recurringCaptureDelay` (number, required, nullable): Delay in days before capture occurs for recurring charges. Only applicable when recurringCaptureMethod is 'automaticDelayed'. Example: `7`.
  - `card` (object, required, nullable): Card-specific processing options.
    - `mode` (string, required): The processing mode for card payments. One of `cascade`, `direct`, `route`. Example: `cascade`.
    - `gatewayProfile` (object, required, nullable): Specific gateway profile to use, bypassing cascade routing. Only present if `mode` is `direct`
      - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
      - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
      - `metadata` (map of string to string, required, nullable): Metadata used by merchants to store additional information about the entity.
      - `id` (string, required): ID of the Gateway Profile. Example: `gwp_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
      - `active` (boolean, required): Whether the gateway profile is active and available for processing. Example: `true`.
      - `title` (string, required): Title of the Gateway Profile. Example: `Profile #1`.
      - `integration` (string, required): Associated Gateway Integration. One of `stripe`, `adyen`, `checkout`, `paypal`. Example: `stripe`.
      - `environment` (string, required, nullable): The environment the gateway profile operates in. One of `live`, `test`. Example: `test`.
      - `supportedPaymentMethods` (array of string, required): Supported payment methods for the Gateway Profile. Each item: One of `card`, `paypal`, `applePay`.
    - `cascade` (object, required, nullable): The cascade to use for gateway routing. Only present if `mode` is `cascade`
      - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
      - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
      - `metadata` (map of string to string, required, nullable): Metadata used by merchants to store additional information about the entity.
      - `id` (string, required): The unique identifier of the cascade.
      - `name` (string, required): Example: `My Cascade`.
      - `description` (string, required, nullable): Example: `Simple cascade`.
      - `active` (boolean, required): Whether the cascade is active and available for routing. Example: `true`.
      - `algorithm` (string, required): The algorithm used for gateway selection. Available options: roundRobin, weightedRoundRobin, priorityQueue. One of `roundRobin`, `weightedRoundRobin`, `priorityQueue`. Example: `weightedRoundRobin`.
    - `captureMethod` (string, required, nullable): Capture method for card payments. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request. One of `automatic`, `automaticDelayed`, `manual`. Example: `automatic`.
    - `captureDelay` (number, required, nullable): Delay in days before capture occurs. Only applicable when captureMethod is 'automaticDelayed'. Example: `7`.
    - `recurringCaptureMethod` (string, required, nullable): Capture method to use for recurring card payments. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request. One of `automatic`, `automaticDelayed`, `manual`. Example: `automatic`.
    - `recurringCaptureDelay` (number, required, nullable): Delay in days before capture occurs for recurring charges. Only applicable when recurringCaptureMethod is 'automaticDelayed'. Example: `7`.
    - `route` (object, required, nullable): The route that chooses the gateway for each card payment when `mode` is `route`. `null` when no route is set.
      - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
      - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
      - `metadata` (map of string to string, required, nullable): Metadata used by merchants to store additional information about the entity.
      - `id` (string, required): The unique identifier of the route. Example: `rte_2mXGTxXIkqv4uSdbm8DJCzvHUIu`.
      - `name` (string, required): Example: `Card routing`.
      - `description` (string, required, nullable): Example: `Sends US-issued cards to a domestic gateway`.
      - `active` (boolean, required): Whether the route is active. A route is available for routing only while it is active and has an active version. Example: `true`.
  - `paypal` (object, required, nullable): PayPal-specific processing options.
    - `mode` (string, required): Processing mode for PayPal payments, will always be `direct` One of `cascade`, `direct`. Example: `direct`.
    - `gatewayProfile` (object, required): Gateway profile ID for PayPal processing.
      - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
      - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
      - `metadata` (map of string to string, required, nullable): Metadata used by merchants to store additional information about the entity.
      - `id` (string, required): ID of the Gateway Profile. Example: `gwp_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
      - `active` (boolean, required): Whether the gateway profile is active and available for processing. Example: `true`.
      - `title` (string, required): Title of the Gateway Profile. Example: `Profile #1`.
      - `integration` (string, required): Associated Gateway Integration. One of `stripe`, `adyen`, `checkout`, `paypal`. Example: `stripe`.
      - `environment` (string, required, nullable): The environment the gateway profile operates in. One of `live`, `test`. Example: `test`.
      - `supportedPaymentMethods` (array of string, required): Supported payment methods for the Gateway Profile. Each item: One of `card`, `paypal`, `applePay`.
    - `captureMethod` (string, required, nullable): Capture method for PayPal payments. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request. One of `automatic`, `automaticDelayed`, `manual`. Example: `automatic`.
    - `captureDelay` (number, required, nullable): Delay in days before capture occurs for PayPal payments. Only applicable when captureMethod is 'automaticDelayed'. Example: `7`.
    - `recurringCaptureMethod` (string, required, nullable): Capture method to use for recurring PayPal payments. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request. One of `automatic`, `automaticDelayed`, `manual`. Example: `automatic`.
    - `recurringCaptureDelay` (number, required, nullable): Delay in days before capture occurs for recurring PayPal payments. Only applicable when recurringCaptureMethod is 'automaticDelayed'. Example: `7`.
  - `applePay` (object, required, nullable): Apple Pay-specific processing options.
    - `mode` (string, required): Processing mode for Apple Pay payments, will always be `direct` One of `cascade`, `direct`. Example: `direct`.
    - `gatewayProfile` (object, required): Gateway profile ID for Apple Pay processing.
      - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
      - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
      - `metadata` (map of string to string, required, nullable): Metadata used by merchants to store additional information about the entity.
      - `id` (string, required): ID of the Gateway Profile. Example: `gwp_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
      - `active` (boolean, required): Whether the gateway profile is active and available for processing. Example: `true`.
      - `title` (string, required): Title of the Gateway Profile. Example: `Profile #1`.
      - `integration` (string, required): Associated Gateway Integration. One of `stripe`, `adyen`, `checkout`, `paypal`. Example: `stripe`.
      - `environment` (string, required, nullable): The environment the gateway profile operates in. One of `live`, `test`. Example: `test`.
      - `supportedPaymentMethods` (array of string, required): Supported payment methods for the Gateway Profile. Each item: One of `card`, `paypal`, `applePay`.
    - `captureMethod` (string, required, nullable): Capture method for Apple Pay payments. 'automatic' captures immediately, 'automaticDelayed' captures after a configurable delay, 'manual' requires a separate capture request. One of `automatic`, `automaticDelayed`, `manual`. Example: `automatic`.
    - `captureDelay` (number, required, nullable): Delay in days before capture occurs for Apple Pay payments. Only applicable when captureMethod is 'automaticDelayed'. Example: `7`.
    - `recurringCaptureMethod` (string, required, nullable): Capture method to use for recurring Apple Pay payments. 'automatic' captures immediately, 'automaticDelayed' captures after a delay, 'manual' requires a separate capture request. One of `automatic`, `automaticDelayed`, `manual`. Example: `automatic`.
    - `recurringCaptureDelay` (number, required, nullable): Delay in days before capture occurs for recurring Apple Pay payments. Only applicable when recurringCaptureMethod is 'automaticDelayed'. Example: `7`.
- `customer` (object, required, nullable): Customer associated with the payment.
  - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
  - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
  - `metadata` (map of string to string, nullable): Metadata used by merchants to store additional information about the entity.
  - `id` (string, required): The ID of the customer. Example: `cus_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
  - `email` (string, required): The email of the customer. Example: `user@gmail.com`.
  - `name` (string, required, nullable): The name of the customer. Example: `John Doe`.
  - `phoneNumber` (string, required, nullable): The phone number of the customer. Numbers submitted since normalisation began are stored in E.164 format (`+` followed by digits) when they could be validated; any other number is returned as it was sent. Example: `+12015550123`.
  - `dateOfBirth` (string (date), required, nullable): The date of birth of the customer. Pattern `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$`. Example: `2020-01-01`.
  - `gender` (string, required, nullable): The gender of the customer. One of `male`, `female`, `other`. Example: `male`.
  - `restrictMit` (boolean): Whether the customer is restricted from making merchant-initiated payments. Only available from the dashboard or the API using a secret key. Example: `false`.
  - `restrictCit` (boolean): Whether the customer is restricted from making customer-initiated payments. Only available from the dashboard or the API using a secret key. Example: `false`.
  - `restrictReason` (string, nullable): Reason for restricting the customer. Only available from the dashboard or the API using a secret key. Example: `Customer restricted due to suspicious activity`.
  - `isRestricted` (boolean): Whether the customer has at least one restriction applied (either `restrictMit` or `restrictCit`). Only available from the dashboard or the API using a secret key. Example: `true`.
  - `billingAddress` (object, required): The billing address of the customer.
    - `firstName` (string, required, nullable)
    - `lastName` (string, required, nullable)
    - `companyName` (string, required, nullable)
    - `line1` (string, required, nullable)
    - `line2` (string, required, nullable)
    - `city` (string, required, nullable)
    - `state` (string, required, nullable)
    - `postalCode` (string, required, nullable)
    - `country` (string, required, nullable)
  - `shippingAddress` (object, required): The shipping address of the customer.
    - `firstName` (string, required, nullable)
    - `lastName` (string, required, nullable)
    - `companyName` (string, required, nullable)
    - `line1` (string, required, nullable)
    - `line2` (string, required, nullable)
    - `city` (string, required, nullable)
    - `state` (string, required, nullable)
    - `postalCode` (string, required, nullable)
    - `country` (string, required, nullable)
- `paymentMethod` (object, nullable): Payment method used for the payment. Only available from the dashboard or the API using a secret key.
  - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
  - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
  - `metadata` (map of string to string, required, nullable): Metadata used by merchants to store additional information about the entity.
  - `id` (string, required): The ID of the payment method. Example: `pm_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
  - `type` (string, required): The type of the payment method. One of `card`, `paypal`, `applePay`. Example: `card`.
  - `customer` (string, required, nullable): The ID of the customer who this payment method belongs to. Example: `cus_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
  - `isDefault` (boolean, required): Whether the payment method is the default one for the customer. Example: `false`.
  - `card` (object, required, nullable): The card details of the payment method. Set only when `type` is `card`.
    - `brand` (string, required, nullable): The brand of the card. One of `visa`, `mastercard`, `amex`, `discover`. Example: `amex`.
    - `lastFour` (string, required): The last four digits of the card. Example: `1234`.
    - `bin` (string, required): The card BIN/IIN (Bank/Issuer Identification Number) - 4 to 8 digits. Example: `123456`.
    - `expMonth` (string, required, nullable): The expiration month of the card (in MM format) Example: `12`.
    - `expYear` (string, required, nullable): The expiration year of the card (in YYYY format) Example: `2025`.
    - `cardholderName` (string, required, nullable): The name on the card. Example: `John Doe`.
  - `applePay` (object, required, nullable): The Apple Pay details of the payment method. Set only when `type` is `applePay`.
    - `displayName` (string, required, nullable): The display name of the Apple Pay payment method. Example: `MasterCard 1234`.
- `latestTransaction` (object, required, nullable): The latest transaction for this payment. Only available from the dashboard or the API using a secret key.
  - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
  - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
  - `metadata` (map of string to string, nullable): Metadata used by merchants to store additional information about the entity.
  - `id` (string, required): The unique identifier of the transaction.
  - `status` (string, required): Current status of the transaction. One of `pending`, `confirmation_requested`, `authorized`, `failed`. Example: `authorized`.
  - `authentication` (string, required): How far the transaction got through customer authentication — 3-D Secure for a card, the equivalent payer-action step for a redirect-based method. `not_requested` when the gateway never asked for it, so an absent challenge is distinguishable from a failed one. One of `not_requested`, `pending`, `succeeded`, `failed`. Example: `not_requested`.
  - `amount` (number, required): Transaction amount in minor currency units (e.g., 1500 for $15.00) Example: `1500`.
  - `initiator` (string, required): The initiator of the transaction. One of `customer`, `merchant`. Example: `customer`.
  - `statementDescriptor` (string, nullable): The statement descriptor that will appear on the customer's statement. Only available from the dashboard or the API using a secret key. Example: `Hello World`.
  - `statementDescriptorSuffix` (string, nullable): The statement descriptor suffix, appended to your account's descriptor by gateways that support a per-payment suffix. Only available from the dashboard or the API using a secret key. Example: `PRO PLAN`.
  - `amountReversed` (number, required): The amount that has been reversed by refunds or voids. Example: `0`.
  - `amountCaptured` (number, required): The amount that has been captured. Example: `1500`.
  - `isReversed` (boolean, required): Whether the transaction has been reversed. Example: `false`.
  - `isFullyReversed` (boolean, required): Whether the transaction has been fully reversed. Example: `false`.
  - `isCaptureFailed` (boolean, required): Whether the capture operation failed. Example: `false`.
  - `isReverseFailed` (boolean, required): Whether the reverse operation failed. Example: `false`.
  - `isRefundFailed` (boolean, required): Whether the refund operation failed. Example: `false`.
  - `isVoidFailed` (boolean, required): Whether the void operation failed. Example: `false`.
  - `isCaptured` (boolean, required): Whether the transaction has been captured. Example: `true`.
  - `isChargebacked` (boolean, required): Whether the transaction has a chargeback recorded. Example: `false`.
  - `chargebackRecordedAt` (string (date-time), nullable): The timestamp when a chargeback was recorded for this transaction. Example: `2026-01-15T10:30:00.000Z`.
  - `captureMethod` (string, required): Capture method used for this transaction. One of `automatic`, `automaticDelayed`, `manual`. Example: `automatic`.
  - `captureDelay` (number, required, nullable): Delay in days before capture occurs. Only applicable for 'automaticDelayed' capture method. Example: `0`.
  - `currency` (string, required): Currency of the transaction. One of `usd`, `eur`, `gbp`, `cad`, `aud`, `pln`, `czk`, `sek`, `dkk`. Example: `usd`.
  - `processorId` (string, nullable): The external transaction ID from the payment processor. Only available from the dashboard or the API using a secret key. Example: `ch_1J8lZpJ9j1bSv2Jr6sVjXZ1N`.
  - `outcome` (object, nullable): Outcome details from the gateway operation. Only available from the dashboard or the API using a secret key.
    - `status` (string, required): One of `success`, `partial`, `failure`.
    - `errorCode` (string, required, nullable): One of `internal_error`, `not_supported`, `generic_decline`, `insufficient_funds`, `authentication_failed`, `authentication_cancelled`, `authentication_unavailable`, `cancelled`, `invalid_card_details`, `expired_card`, `authentication_required`, `transaction_not_permitted`, `generic_issuer_error`, `generic_processor_error`, `processor_rate_limited`, `processor_timeout`, `fraud_suspected`, `card_restricted`, `authentication_rejected`, `payment_method_unusable`, `generic_hard_decline`, `already_captured`, `merchant_account_restricted`, `merchant_configuration_error`, `invalid_request`, `blocked_by_policy`, `order_not_permitted`, `stored_credential_revoked`.
    - `errorMessage` (string, required, nullable)
    - `safeErrorMessage` (string, required, nullable)
    - `declineType` (string, required, nullable): One of `soft_decline`, `hard_decline`, `not_attempted`.
    - `retryStrategy` (string, required, nullable): One of `never_retry`, `retry_with_new_payment_method`, `retry_after_delay`, `retry_immediately`.
    - `specialCode` (string, required, nullable): One of `confirmation_requested`.
    - `authCode` (string, required, nullable)
    - `processorCode` (string, required, nullable)
    - `processorMessage` (string, required, nullable)
  - `gatewayProfile` (object): Gateway profile used for this transaction. Only available from the dashboard or the API using a secret key.
    - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
    - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
    - `metadata` (map of string to string, required, nullable): Metadata used by merchants to store additional information about the entity.
    - `id` (string, required): ID of the Gateway Profile. Example: `gwp_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
    - `active` (boolean, required): Whether the gateway profile is active and available for processing. Example: `true`.
    - `title` (string, required): Title of the Gateway Profile. Example: `Profile #1`.
    - `integration` (string, required): Associated Gateway Integration. One of `stripe`, `adyen`, `checkout`, `paypal`. Example: `stripe`.
    - `environment` (string, required, nullable): The environment the gateway profile operates in. One of `live`, `test`. Example: `test`.
    - `supportedPaymentMethods` (array of string, required): Supported payment methods for the Gateway Profile. Each item: One of `card`, `paypal`, `applePay`.
  - `execution` (string, nullable): The cascade execution associated with this transaction. Only available from the dashboard or the API using a secret key.
  - `paymentMethod` (object, required): The payment method used for this transaction.
    - `createdAt` (string (date-time), required): The date and time when the entity was created. Example: `2024-02-18T12:00:00Z`.
    - `updatedAt` (string (date-time), required, nullable): The date and time when the entity was last updated. Example: `2024-02-21T12:15:00Z`.
    - `metadata` (map of string to string, nullable): Metadata used by merchants to store additional information about the entity.
    - `id` (string, required): The ID of the payment method. Example: `pm_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
    - `type` (string, required): The type of the payment method. One of `card`, `paypal`, `applePay`. Example: `card`.
    - `customer` (string, required, nullable): The ID of the customer who this payment method belongs to. Example: `cus_2QC7PqoUeOxQEWscJJt6B3PkvyL`.
    - `isDefault` (boolean, required): Whether the payment method is the default one for the customer. Example: `false`.
    - `card` (object, required, nullable): The card details of the payment method. Set only when `type` is `card`.
      - `brand` (string, required, nullable): The brand of the card. One of `visa`, `mastercard`, `amex`, `discover`. Example: `amex`.
      - `lastFour` (string, required): The last four digits of the card. Example: `1234`.
      - `bin` (string, required): The card BIN/IIN (Bank/Issuer Identification Number) - 4 to 8 digits. Example: `123456`.
      - `expMonth` (string, required, nullable): The expiration month of the card (in MM format) Example: `12`.
      - `expYear` (string, required, nullable): The expiration year of the card (in YYYY format) Example: `2025`.
      - `cardholderName` (string, required, nullable): The name on the card. Example: `John Doe`.
    - `applePay` (object, required, nullable): The Apple Pay details of the payment method. Set only when `type` is `applePay`.
      - `displayName` (string, required, nullable): The display name of the Apple Pay payment method. Example: `MasterCard 1234`.
  - `customer` (string, required, nullable): The ID of the customer associated with this transaction.

### `202`

The merchant is entitled but its environment is not provisioned yet. Provisioning has been kicked off (exactly once) and is in progress; retry the request — it succeeds once the environment is ready. Returned only for identity-token (dashboard) requests bound to a merchant, not for secret-key API calls; any such endpoint can return it while provisioning is underway.

Type: object (ProvisioningInProgress).

- `status` (string, required): Signals the merchant environment is still being provisioned. One of `provisioning`.
- `merchantAccountId` (string, required): The merchant account whose environment is being provisioned. Example: `dAI3aa87ROOeupeBCjNSKCOBOisBCYjB`.

### Errors

- `400`: The request was rejected. `type` is `invalid_request_error` when the request itself is at fault — `errors` then lists every problem found, with field-attributable entries prefixed by the field’s path; or `invalid_state_error` when the request was well-formed but the resource is not in a state that allows it.
- `401`: No API key was supplied, or the key is not valid. `type` is `authentication_error`.
- `403`: The API key is valid but lacks the permission this operation requires. `type` is `permission_error`.
- `404`: No resource exists with the requested identifier. `type` is `not_found_error`.
- `429`: Too many requests. A limit applies per operation; requests to other operations are unaffected. `type` is `rate_limit_error`. Use the `Retry-After-global` header to know when to retry.
- `500`: The request could not be completed because of an unexpected error. `type` is `api_error`.
- `503`: The request could not be served right now: the API is temporarily at capacity, or a dependency needed to authorize the request is unavailable — the auth service that verifies credentials, or the entitlement lookup behind it. `type` is `api_error`. It is raised before the operation runs, so the request had no effect, and unlike a plain 500 the condition is transient: retry with backoff.
- `504`: The request exceeded the processing time limit and was abandoned. `type` is `api_error` and `code` is `timeout` — unlike a plain 500 the request may still have taken effect, so retry with the same idempotency key rather than blindly.

Every error response has the same body: see [Errors](https://docs.odus.com/docs/guides/api-features/errors.md).

---

Generated from the Core API v2 OpenAPI document, https://api.odus.com/openapi.v2.json. Interactive page: https://docs.odus.com/docs/api/core/v2/payment-controller-find-one
