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

# Add Card

> Get a ready-made web page link that lets one of your users add their own
payment card. You show this page inside your own website (inside an
iframe). The user types their card details on that page, and we store the
card safely for them.

### What you get back
- ``user_id`` — the user this link is for.
- ``add_card_url`` — the link to load inside an iframe. It can be used once.
- ``expires_at`` — the time the link stops working (about 10 minutes away).

### How you find out the result
- When the card is added successfully, we send your server an automatic
  notification (a ``payment_method.card.added`` webhook) with the card
  details and the ``user_id``. This notification is the official way to
  know it worked.
- If something goes wrong on the page (the link expired, was tampered with,
  or the details didn't pass our checks), nothing is saved and no
  notification is sent. Simply call this endpoint again to get a fresh link
  — links cannot be renewed.

The link contains no details about which company processes the card behind
the scenes. Treat it as a plain string with no meaning of its own.



## OpenAPI

````yaml GET /v1/platform/card/add-card/{user_id}
openapi: 3.1.0
info:
  title: Finogate Platform API v1
  version: 0.1.0
servers:
  - url: https://api-sandbox.finogates.com
    description: Sandbox
  - url: https://api.finogates.com
    description: Production
security: []
tags:
  - name: auth
  - name: users
  - name: payees
  - name: verification
  - name: bank accounts
  - name: card processing
  - name: digital-assets
  - name: international
  - name: onboarding
  - name: pending-applications
  - name: wallets
  - name: payments
  - name: catalog
  - name: webhooks
  - name: phone-numbers
  - name: sms
  - name: calls
  - name: listings
  - name: embed-tokens
paths:
  /v1/platform/card/add-card/{user_id}:
    get:
      tags:
        - card processing
      summary: Get a Link for the User to Add a Card
      description: >-
        Get a ready-made web page link that lets one of your users add their own

        payment card. You show this page inside your own website (inside an

        iframe). The user types their card details on that page, and we store
        the

        card safely for them.


        ### What you get back

        - ``user_id`` — the user this link is for.

        - ``add_card_url`` — the link to load inside an iframe. It can be used
        once.

        - ``expires_at`` — the time the link stops working (about 10 minutes
        away).


        ### How you find out the result

        - When the card is added successfully, we send your server an automatic
          notification (a ``payment_method.card.added`` webhook) with the card
          details and the ``user_id``. This notification is the official way to
          know it worked.
        - If something goes wrong on the page (the link expired, was tampered
        with,
          or the details didn't pass our checks), nothing is saved and no
          notification is sent. Simply call this endpoint again to get a fresh link
          — links cannot be renewed.

        The link contains no details about which company processes the card
        behind

        the scenes. Treat it as a plain string with no meaning of its own.
      operationId: get_hosted_add_card_url_v1_platform_card_add_card__user_id__get
      parameters:
        - name: user_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The unique ID of the user the card is being added for.
            examples:
              - b3a9b622-cc63-4d3c-aad6-2d8e29e6f9d4
            title: User Id
          description: The unique ID of the user the card is being added for.
        - name: card_processing_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Optional. Tie this card to one specific approved card-processing
              account (use the ``id`` returned by ``GET
              /v1/platform/card-processing/users/{user_id}``). The card will
              then always be charged, captured, and refunded through that same
              account. Leave this out to use the user's default card-processing
              account.
            title: Card Processing Id
          description: >-
            Optional. Tie this card to one specific approved card-processing
            account (use the ``id`` returned by ``GET
            /v1/platform/card-processing/users/{user_id}``). The card will then
            always be charged, captured, and refunded through that same account.
            Leave this out to use the user's default card-processing account.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - _AuthenticatedBearer: []
components:
  schemas:
    CommonResponse:
      properties:
        status_code:
          type: integer
          title: Status Code
          description: HTTP status code for the response.
        data:
          title: Data
          description: Payload or error details.
        query_generated_time:
          type: integer
          title: Query Generated Time
          description: >-
            UTC timestamp (milliseconds since epoch) when response was
            generated.
      type: object
      required:
        - status_code
        - data
        - query_generated_time
      title: CommonResponse
      description: |-
        Standard response wrapper for single-object responses and errors.

        Generic over the payload type. A route that declares
        ``CommonResponse[SomeModel]`` gets the real ``data`` schema rendered in
        OpenAPI/Swagger; a bare ``CommonResponse`` leaves ``data`` untyped.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    _AuthenticatedBearer:
      type: oauth2
      flows:
        password:
          scopes: {}
          tokenUrl: /v1/platform/auth/token

````