> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gnosispay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Decide a 3DS challenge

> Approves or declines a 3DS challenge on behalf of a cardholder.

Submit the decision only after the cardholder has reviewed the transaction.
A `202` response means the decision was accepted for processing; poll the
challenge or wait for a webhook until it reaches a terminal status.



## OpenAPI

````yaml https://core.sandbox.gnosispay.in/partner-api/openapi.json post /v1/3ds/challenges/{challenge_id}/decision
openapi: 3.1.0
info:
  title: Gnosis Pay Partner API
  version: 1.0.0
  description: >-
    Server-to-server API for onboarding users, creating accounts and cards,
    moving

    funds, and managing the card lifecycle. Call this API only from a trusted

    backend. Every request requires a partner access token, and every resource
    is

    scoped to the authenticated partner.
servers:
  - url: https://core.prod.gnosispay.com/partner-api
    description: Production
    variables: {}
  - url: https://core.sandbox.gnosispay.in/core
    description: Sandbox
    variables: {}
security:
  - BearerAuth: []
tags:
  - name: Accounts
  - name: Cards
  - name: Card transactions
  - name: KYC
  - name: Deposits
  - name: Withdrawals
  - name: PCI
  - name: 3DS
  - name: Webhooks
paths:
  /v1/3ds/challenges/{challenge_id}/decision:
    post:
      tags:
        - 3DS
      summary: Decide a 3DS challenge
      description: >-
        Approves or declines a 3DS challenge on behalf of a cardholder.


        Submit the decision only after the cardholder has reviewed the
        transaction.

        A `202` response means the decision was accepted for processing; poll
        the

        challenge or wait for a webhook until it reaches a terminal status.
      operationId: three_ds_challenges.decide.v1
      parameters:
        - name: challenge_id
          in: path
          required: true
          description: The challenge ID.
          schema:
            $ref: '#/components/schemas/uuid'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ThreeDSDecisionRequest'
        description: Cardholder and approve-or-decline decision.
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThreeDSChallengeDetail'
        '202':
          description: >-
            The request has been accepted for processing, but processing has not
            yet completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThreeDSChallengeDetail'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    uuid:
      type: string
      format: uuid
    ThreeDSDecisionRequest:
      type: object
      required:
        - cardholder_id
        - decision
      properties:
        cardholder_id:
          $ref: '#/components/schemas/uuid'
          description: Cardholder associated with the challenge.
        decision:
          $ref: '#/components/schemas/ThreeDSDecision'
          description: Cardholder's decision.
    ThreeDSChallengeDetail:
      type: object
      required:
        - server_time
        - challenge
      properties:
        server_time:
          type: string
          format: date-time
          description: >-
            Current server time. Use it to adjust countdowns for client clock
            skew.
        challenge:
          $ref: '#/components/schemas/ThreeDSChallenge'
          description: Current challenge state.
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
          description: HTTP status code.
        message:
          type: string
          description: Generic human-readable text for the status code. Do not parse it.
        reason:
          type: string
          description: >-
            Stable machine-readable code identifying the specific cause, present
            only

            for errors that expose one (e.g. `CREATE_CARD_LIMIT_EXCEEDED`).
            Branch on

            this rather than on `message`.
    ThreeDSDecision:
      type: string
      enum:
        - approve
        - decline
    ThreeDSChallenge:
      type: object
      required:
        - id
        - card_id
        - account_id
        - amount
        - currency
        - decimals
        - merchant
        - status
        - started_at
        - expires_at
        - decision_available
      properties:
        id:
          $ref: '#/components/schemas/uuid'
          description: Unique identifier of the 3DS challenge.
        card_id:
          $ref: '#/components/schemas/uuid'
          description: Card being used for the transaction.
        account_id:
          $ref: '#/components/schemas/uuid'
          description: Account associated with the card.
        amount:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          description: Transaction amount in the smallest unit indicated by `decimals`.
        currency:
          type: string
          minLength: 1
          description: ISO-4217 transaction currency code.
        decimals:
          type: integer
          format: int32
          minimum: 0
          maximum: 9
          description: Number of decimal places used to display `amount`.
        merchant:
          $ref: '#/components/schemas/ThreeDSMerchant'
          description: Merchant information to show before requesting a decision.
        status:
          $ref: '#/components/schemas/ThreeDSChallengeStatus'
          description: Current challenge status.
        decision:
          $ref: '#/components/schemas/ThreeDSDecision'
          description: Submitted decision, when one has been recorded.
        started_at:
          type: string
          format: date-time
          description: Time at which the challenge started.
        expires_at:
          type: string
          format: date-time
          description: Deadline for submitting a decision.
        decision_available:
          type: boolean
          description: Whether the challenge currently accepts a decision.
    ThreeDSMerchant:
      type: object
      required:
        - display_name
      properties:
        id:
          type: string
          description: Merchant identifier when supplied with the authentication request.
        display_name:
          type: string
          minLength: 1
          description: Merchant name suitable for display to the cardholder.
        country:
          type: string
          description: Merchant country code when available.
        category_code:
          type: string
          description: Merchant category code when available.
    ThreeDSChallengeStatus:
      type: string
      enum:
        - pending
        - processing
        - approved
        - declined
        - cancelled
        - expired
        - failed
  securitySchemes:
    BearerAuth:
      type: http
      scheme: Bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.