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

# Submit customer contact/billing info before card submit

> Optional step to record customer information (name, email, address, phone) against the
session before the card is submitted. Does **not** create a transaction.




## OpenAPI

````yaml /api-reference/card-submit/paysight_card_submit_api.yaml post /api/{productId}/info
openapi: 3.0.0
info:
  title: Paysight Card Submit API
  version: 2.0.0
  description: >
    Submit credit card payment and customer info for a given product via
    Paysight.


    ## Response Overview


    The API returns `HTTP 200 OK` for the vast majority of outcomes, including
    declined transactions.

    `HTTP 400` is returned when the request body cannot be parsed, and `HTTP
    500` for unexpected server errors.

    Both `400` and `500` responses indicate that **no transaction was logged**.


    > **See also:** Error & Decline Handling Guide — a human-readable supplement
    covering

    > decision trees, retry guidance, and the complete `statusId` reference.


    ### The `info` Field


    Every `200` response includes an `info` field indicating the high-level
    outcome:


    | `info` value | Transaction logged? | Meaning |

    |---|:---:|---|

    | `Success` | ✅ | Transaction completed successfully. `subscribeSuccess`
    and/or `chargeSuccess` will be `true`. |

    | `Error` | ✅ | Transaction-level failure. A transaction was attempted;
    check `statusId` for the decline reason. |

    | `AlreadySubscribed` | ❌ | Customer is already subscribed to this product.
    No new transaction was created. |

    | `Pending` | ❌ | 3D Secure authentication is in progress. `threeDSecureId`
    is populated; call `POST /api/{productId}/3ds` to complete. |

    | `RedirectRequired` | ❌ | A redirect is required to complete the
    transaction. |

    | `Failed` | ❌ | Pre-processing validation failure. Check the `error` field.
    `statusId` will be `0`. |

    | `LimitReached` | ❌ | A rate or frequency limit was hit. Check the `error`
    field. `statusId` will be `0`. |

    | `UserBlocked` | ❌ | The user, card, BIN, or email is blocked. Check the
    `error` field. `statusId` will be `0`. |


    ### Errors Without a Transaction


    The following `info` / `error` combinations are returned when no transaction
    is logged.

    In all cases `statusId` will be `0`.


    #### `info: "Failed"` — validation failures


    | `error` value | Cause |

    |---|---|

    | `"Blocked"` | Request blocked at the platform level. |

    | `"Blocked Card"` | The specific card is blocked. |

    | `"Invalid expiry"` | Card `expiryMonth` or `expiryYear` is zero or
    missing. |

    | `"Invalid CVV"` | CVV/CVC value is invalid or missing. |

    | `"Invalid CC Number"` | Card number failed validation. |

    | `"Invalid Email"` | Email address is invalid or missing. |

    | `"VISA cards not Supported"` | VISA cards are not accepted for this
    product/MID. |

    | `"Mastercard cards not supported"` | Mastercard cards are not accepted for
    this product/MID. |

    | `"Discover cards not supported"` | Discover cards are not accepted for
    this product/MID. |

    | `"AMEX cards not supported"` | American Express cards are not accepted for
    this product/MID. |

    | `"MAESTRO cards not supported"` | Maestro cards are not accepted for this
    product/MID. |

    | `"Bin and Last4 required along with Encrypted data"` | When submitting
    encrypted card data, `bin` and `lastFour` must also be provided. |

    | `"Specified Mid not found"` | The `mid` field does not match any known
    MID. |

    | `"Specified Mid does not belong to Tenant account"` | The `mid` field
    references a MID from a different tenant. |


    #### `info: "LimitReached"` — rate / frequency limits


    | `error` value | Cause |

    |---|---|

    | `"CC entered too many times in quick succession"` | The same card number
    has been submitted too frequently in a short window. |

    | `"Email entered too many times for this product"` | The same email address
    has been used too many times for this product. |


    #### `info: "UserBlocked"` — blocked users / cards / BINs


    | `error` value | Cause |

    |---|---|

    | `"Blocked card"` | Card BIN is from a blocked country. |

    | `"Blocked"` | User is blacklisted (by email, card number, or BIN). |


    #### `info: "None"` — action required


    | `error` value | Cause |

    |---|---|

    | `"3DS-ACTION-REQUIRED"` | 3D Secure authentication must be completed
    before the transaction can proceed. |

    | `"MaxActiveSubsReached"` | Customer has reached the maximum number of
    active subscriptions for this product. |
servers:
  - description: Test Server
    url: https://test.paysight.io
  - description: Production Server
    url: https://secure.paysight.io
security:
  - ApiKeyAuth: []
tags:
  - name: Card
    description: Card payment submission and 3D Secure completion.
  - name: Session
    description: Session and customer contact info management.
externalDocs:
  description: Error & Decline Handling Guide
  url: https://docs.paysight.io/card-submit-error-handling
paths:
  /api/{productId}/info:
    post:
      tags:
        - Session
      summary: Submit customer contact/billing info before card submit
      description: >
        Optional step to record customer information (name, email, address,
        phone) against the

        session before the card is submitted. Does **not** create a transaction.
      operationId: submitInfo
      parameters:
        - name: productId
          in: path
          required: true
          schema:
            type: integer
          description: ID of the Paysight product.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InfoData'
      responses:
        '200':
          description: Session identifier confirming the info was recorded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClickResult'
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    InfoData:
      type: object
      properties:
        paysightSession:
          type: string
          description: Paysight session identifier.
        partnerSession:
          type: string
          description: Partner session identifier.
        firstName:
          type: string
          description: Customer first name.
        lastName:
          type: string
          description: Customer last name.
        email:
          type: string
          description: Customer email address.
        phone:
          type: string
          description: Customer phone number.
        address:
          type: string
          description: Street address.
        city:
          type: string
          description: City.
        postalCode:
          type: string
          description: ZIP or postal code.
        props:
          type: object
          additionalProperties:
            type: string
          description: Additional metadata key-value pairs.
    ClickResult:
      type: object
      properties:
        paysightSession:
          type: string
          description: The Paysight session ID to use for subsequent calls.
        partnerSession:
          type: string
          description: The partner session ID echoed back.
    ErrorResponse:
      type: object
      description: >-
        Returned for HTTP 400 and HTTP 500 responses. No transaction is logged
        for these errors.
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          description: A description of the error.
          example: Invalid JSON body
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: This will be provided by Paysight

````