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

# Submit business verification

> Send a business customer's details, overriding the prefill where you pass a field

`kind` is always `business`. Any field you leave out is taken from `prefill`. Individual customers return `422` with `code: use_onboarding_page`.

See [Verify a business customer with your own form](https://docs.yativo.com/yativo-fiat/card-checkout.md#or-verify-a-business-customer-with-your-own-form).

```bash cURL theme={null}
curl -X POST 'https://api.yativo.com/api/v1/card-checkout/customers/4f0c1e1a-8d2b-4c7e-9b1a-3e5f6a7b8c9d/verification' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  -H 'X-Api-Secret: YOUR_API_SECRET' \
  -H 'Idempotency-Key: 2d8a1c4e-9f3b-4a7c-8e1d-6b5f0a2c9d11' \
  -H 'Content-Type: application/json' \
  -d '{
    "kind": "business",
    "business_name": "Acme LLC",
    "country": "US",
    "business_structure": "private_corporation"
  }'
```


## OpenAPI

````yaml openapi-fiat.yaml POST /card-checkout/customers/{customer_id}/verification
openapi: 3.0.3
info:
  title: Yativo Fiat API
  description: >
    The Yativo Fiat API enables businesses to manage customers, run KYC/KYB,
    send and receive

    cross-border payments, issue virtual accounts and virtual cards, accept card
    payments through

    Card Checkout, manage beneficiaries, and more.


    **Base URLs**

    | Environment | URL |

    |---|---|

    | Production | `https://api.yativo.com/api/v1` |

    | Sandbox | `https://smtp.yativo.com/api/v1` |


    **Authentication**

    Send `X-Api-Key` and `X-Api-Secret` on every request. Create keys in the
    dashboard under

    **Developers → API Keys**. Each key only works from the server IPs listed on
    it (enforced since

    14 October 2026). Keys don't expire and there's no login call or token
    refresh.


    Login tokens (`POST /auth/login` with an Account ID and App Secret, and
    `Authorization: Bearer`)

    have been discontinued and don't work for API requests.


    Endpoints that change how a person signs in (passkeys, two-factor
    authentication, PIN)

    or delete the account can't be called with an API key. Use the dashboard for
    those.

    API keys and IP whitelists can only be managed in the dashboard.


    **Rate limits**

    Per business account: 20 writes (`POST`, `PUT`, `PATCH`, `DELETE`) and 50
    reads (`GET`) a second.

    Some plans set their own limit. Enterprise plans have no general limit.


    **Idempotency**

    Send an `Idempotency-Key` header on every `POST`, `PUT`, `PATCH` and
    `DELETE` request. Use a new

    key for each distinct operation. Reusing a key for a completed request
    within 60 minutes returns

    `409`. Reusing a key with a different body also returns `409`.


    **KYC endpoints** are hosted on a separate platform at
    `https://kyc.yativo.com`. They are

    documented here for completeness but use that base URL, not the main API
    base.
  version: 1.0.0
  contact:
    name: Yativo Support
    url: https://yativo.com
servers:
  - url: https://api.yativo.com/api/v1
    description: Production
  - url: https://smtp.yativo.com/api/v1
    description: Sandbox
security:
  - apiKey: []
    apiSecret: []
tags:
  - name: Customers
    description: Create and manage customer profiles.
  - name: KYC / KYB
    description: >
      Identity verification for individual customers (KYC) and business
      customers (KYB).

      Submission endpoints are on `https://kyc.yativo.com/api`.
  - name: KYC Lookups
    description: >
      Lists your KYC and KYB forms need: countries, subdivisions, postal code
      formats, ID types,

      occupations, industries and allowed values. Served from
      `https://kyc.yativo.com/api`.
  - name: Payments & Transfers
    description: Exchange rates, quotes, payout methods, and wallet payouts.
  - name: Card Checkout
    description: >-
      Let your customers sell by debit and credit card on a Yativo-hosted
      checkout page.
  - name: Deposits
    description: Initiate and retrieve payin deposits.
  - name: Virtual Accounts
    description: Issue and manage virtual bank accounts for customers.
  - name: Wallets
    description: View balances, create wallets, and list wallet payouts.
  - name: Beneficiaries
    description: >-
      Save recipients' account details as beneficiaries and reuse them in
      payouts.
  - name: Transactions
    description: List, retrieve, track, and download receipts for all transaction types.
  - name: Virtual Cards
    description: >-
      Issue, manage, and terminate prepaid virtual cards. Every card request
      works only on your own cards. Any other card ID returns `404` with `Card
      not found`.
  - name: Payouts
    description: Single payouts to beneficiaries.
  - name: Currency Swap
    description: Swap balance between your own currency wallets.
  - name: IP Whitelist
    description: Check whether your server's IP can use your API key.
  - name: Corporate Cards
    description: >-
      Employees, their KYC, cards, card balances, memos and the USDC funding
      address. By invitation only.
  - name: Corporate Card Transactions
    description: Card activity on your corporate cards, with disputes, notes and invoices.
  - name: Corporate Card Links
    description: >-
      Each corporate card's employee-only page for card details and PIN,
      employee card sign-in, and branding.
  - name: Webhooks
    description: Register and manage webhook endpoints for real-time event notifications.
  - name: Sandbox
    description: Endpoints that exist only on the sandbox host. Production refuses them.
  - name: Developer
    description: Webhook event inspection.
  - name: RFIs
    description: >-
      Compliance requests for information; save draft answers via API (not
      auto-submitted upstream).
paths:
  /card-checkout/customers/{customer_id}/verification:
    post:
      tags:
        - Card Checkout
      summary: Submit business verification
      description: >
        Send a business customer's details with corrections over the prefill.
        Any field you leave out is taken from `prefill`. A field you send
        overrides it.


        Individual customers return `422` with `code: use_onboarding_page`.


        See [Card
        Checkout](/yativo-fiat/card-checkout#or-verify-a-business-customer-with-your-own-form).
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
        - name: customer_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CardCheckoutSubmitVerificationRequest'
      responses:
        '201':
          description: Verification submitted
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: success
                  status_code:
                    type: integer
                    example: 201
                  message:
                    type: string
                    example: Verification submitted
                  data:
                    $ref: '#/components/schemas/CardCheckoutVerificationResult'
        '403':
          description: Card Checkout is not enabled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardCheckoutError'
        '404':
          description: Not one of your customers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardCheckoutError'
        '409':
          description: Endorsement not submitted, already verified, or nothing to submit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardCheckoutError'
        '422':
          description: >-
            Individual customer, missing fields, invalid structure, or a detail
            was rejected
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardCheckoutError'
        '502':
          description: >-
            Verification is temporarily unavailable (`code:
            provider_unavailable`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardCheckoutError'
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: true
      schema:
        type: string
      description: A unique string per request to ensure idempotent processing.
  schemas:
    CardCheckoutSubmitVerificationRequest:
      type: object
      required:
        - kind
      properties:
        kind:
          type: string
          enum:
            - business
          description: >-
            Always `business`. Individual customers add their ID and selfie on
            the onboarding page.
        business_name:
          type: string
          description: Legal business name. Required unless prefilled.
        country:
          type: string
          minLength: 2
          maxLength: 2
          description: >-
            Country of incorporation, ISO 3166-1 alpha-2. Required unless
            prefilled.
          example: US
        business_structure:
          type: string
          description: >-
            Legal structure valid for `country`. Leave it out for countries
            without structures.
          example: private_corporation
        business_tax_identification_number:
          type: string
          description: EIN (US), Business Number (CA), Company Number (UK).
        place_of_incorporation:
          type: string
          description: State or region of incorporation.
          example: DE
        business_website:
          type: string
          format: uri
        address:
          $ref: '#/components/schemas/CardCheckoutAddress'
        first_name:
          type: string
          description: Business representative. Required unless prefilled.
        last_name:
          type: string
          description: Business representative. Required unless prefilled.
        date_of_birth:
          type: string
          format: date
          description: Representative's date of birth, `YYYY-MM-DD`, 18 or older.
        tax_identification_number:
          type: string
          description: Representative's personal tax ID. Sent once and not stored.
    CardCheckoutVerificationResult:
      type: object
      properties:
        verification_status:
          type: string
          example: action_required
        information_requested:
          type: array
          items:
            $ref: '#/components/schemas/CardCheckoutInformationItem'
    CardCheckoutError:
      type: object
      properties:
        status:
          type: string
          example: failed
        status_code:
          type: integer
          example: 403
        message:
          type: string
        data:
          type: object
          properties:
            error:
              type: string
              example: >-
                Card checkout is not enabled for your account. Contact support
                to request access.
            code:
              type: string
              example: card_checkout_not_enabled
              description: >
                Common values: `card_checkout_not_enabled`,
                `card_checkout_access_declined`, `merchant_not_enabled`,
                `customer_not_endorsed`, `customer_not_found`,
                `duplicate_reference`, `endorsement_not_submitted`,
                `endorsement_not_approved`, `already_verified`,
                `verification_not_started`, `nothing_requested`,
                `currency_not_supported`, `amount_out_of_range`,
                `amount_exceeds_available`, `no_payout_method`,
                `payout_method_not_found`, `payout_method_rejected`,
                `payout_method_fields_required`, `payout_not_found`,
                `payout_not_cancelable`, `payout_refused`,
                `payment_method_not_enabled`, `use_onboarding_page`,
                `missing_fields`, `invalid_business_structure`,
                `verification_refused`, `provider_unavailable`.
        error:
          $ref: '#/components/schemas/ErrorSummary'
        error_details:
          $ref: '#/components/schemas/ErrorDetails'
    CardCheckoutAddress:
      type: object
      properties:
        line1:
          type: string
          example: 1 Corp Way
        line2:
          type: string
          nullable: true
        city:
          type: string
          example: Dover
        state:
          type: string
          example: DE
        postal_code:
          type: string
          example: '19901'
        country:
          type: string
          description: ISO 3166-1 alpha-2. Used when answering an address item.
    CardCheckoutInformationItem:
      type: object
      properties:
        id:
          type: string
          description: Send this back with the answer.
          example: inrqi_01hxyz
        requirement:
          type: string
          example: business_verification_document
        type:
          type: string
          enum:
            - files
            - id_document
            - text
            - text_with_files
            - date
            - phone
            - select
            - address
        label:
          type: string
          example: Company Verification Document
        options:
          type: array
          items:
            type: string
          description: >-
            Allowed values for a `select` item, or accepted ID types for an
            `id_document` item.
        multiple:
          type: boolean
        optional:
          type: boolean
        files_allowed:
          type: boolean
        errors:
          type: string
          description: Why a previous answer was rejected.
    ErrorSummary:
      type: object
      description: Short error summary included in every failed response.
      properties:
        code:
          type: string
          enum:
            - invalid_argument
            - unauthenticated
            - permission_denied
            - not_found
            - method_not_allowed
            - rate_limited
            - internal_error
          description: Short code from the HTTP status.
          example: invalid_argument
        message:
          type: string
          description: Same as the top-level `message`.
        request_id:
          type: string
          description: >-
            Your `X-Request-Id` header if you sent one, otherwise an ID starting
            `req_`. Quote it when you contact support.
          example: req_5f2c9a1e7b3d4c8a6e0f1b2d
    ErrorDetails:
      type: object
      description: >-
        Included on every failed response, with the same shape for every
        endpoint.
      properties:
        code:
          type: string
          enum:
            - bad_request
            - unauthenticated
            - payment_required
            - forbidden
            - not_found
            - method_not_allowed
            - conflict
            - validation_error
            - rate_limited
            - server_error
            - not_implemented
            - upstream_error
            - service_unavailable
            - upstream_timeout
          example: validation_error
        message:
          type: string
          example: The amount field is required.
        http_status:
          type: integer
          example: 422
        fields:
          type: object
          description: >-
            Messages per field. When the error isn't about a field, the message
            is under `error`.
          additionalProperties:
            type: array
            items:
              type: string
        retryable:
          type: boolean
          description: '`true` for 409, 429, 500, 502, 503 and 504.'
          example: false
        retry_after:
          type: integer
          nullable: true
          description: Seconds to wait before retrying, from the `Retry-After` header.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key
      description: >-
        Your API key (`yativo_pk_...`) from Developers → API Keys. Send together
        with X-Api-Secret.
    apiSecret:
      type: apiKey
      in: header
      name: X-Api-Secret
      description: Your API secret (`yativo_sk_...`), shown once when the key is created.

````

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