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

# Send the verification link

> Emails the beneficiary a new identity verification link, required before their `EUR` / `USD` bank accounts can be paid.
Use it when they lost the email, or to start verification for a beneficiary saved before it existed.

Errors: `no_verified_account`, `email_required`, `country_not_supported`, `email_used_by_other_entity_type`, `verification_request_rejected` (422); `already_verified`, `resend_too_soon` (less than 10 minutes since the last link), `verification_unavailable` (409); `verification_provider_error` (502).

**API key scope:** `payouts:write`



## OpenAPI

````yaml POST /v1/counterparties/{id}/verification
openapi: 3.1.0
info:
  title: KryptaPay API
  version: 1.0.0
  description: >-
    Collect and pay out across Africa — Mobile Money, bank transfers and
    stablecoins — through one REST API.


    Authenticate every request with your secret API key: `Authorization: Bearer
    kp_<env>_…`.

    All responses use the envelope `{ "ok": boolean, "data"?: …, "error"?: {
    "code", "message", "details"? } }`.
  contact:
    name: KryptaPay Support
    email: support@krypta-pay.com
    url: https://krypta-pay.com
servers:
  - url: https://staging.api.krypta-pay.com
    description: Sandbox
  - url: https://api.krypta-pay.com
    description: Production
security:
  - apiKey: []
tags:
  - name: Payins
    description: Collect money from your customers' Mobile Money wallets.
  - name: Payouts
    description: Send money to Mobile Money wallets, bank accounts and crypto addresses.
  - name: Beneficiaries
    description: >-
      People and companies you pay, with their payment accounts and identity
      verification.
  - name: Fees
    description: Know the exact fee before you move money.
  - name: FX
    description: Exchange rates, quotes and conversions between your wallets.
  - name: Wallets
    description: Balances of your multi-currency wallets.
  - name: Transactions
    description: Unified history of every movement on your account.
  - name: Networks
    description: Which payment networks are currently available.
  - name: Status
    description: Public platform status.
paths:
  /v1/counterparties/{id}/verification:
    post:
      tags:
        - Beneficiaries
      summary: Send the verification link
      description: >-
        Emails the beneficiary a new identity verification link, required before
        their `EUR` / `USD` bank accounts can be paid.

        Use it when they lost the email, or to start verification for a
        beneficiary saved before it existed.


        Errors: `no_verified_account`, `email_required`,
        `country_not_supported`, `email_used_by_other_entity_type`,
        `verification_request_rejected` (422); `already_verified`,
        `resend_too_soon` (less than 10 minutes since the last link),
        `verification_unavailable` (409); `verification_provider_error` (502).


        **API key scope:** `payouts:write`
      operationId: sendBeneficiaryVerification
      parameters:
        - schema:
            type: string
          in: path
          name: id
          required: true
          description: Beneficiary id.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    enum:
                      - true
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      fullName:
                        type: string
                      type:
                        type: string
                      country:
                        type: string
                      tradeName:
                        type:
                          - string
                          - 'null'
                      legalForm:
                        type:
                          - string
                          - 'null'
                      registrationNumber:
                        type:
                          - string
                          - 'null'
                      taxId:
                        type:
                          - string
                          - 'null'
                      address:
                        type:
                          - string
                          - 'null'
                      contactName:
                        type:
                          - string
                          - 'null'
                      contactRole:
                        type:
                          - string
                          - 'null'
                      contactPhone:
                        type:
                          - string
                          - 'null'
                      bankName:
                        type:
                          - string
                          - 'null'
                      msisdn:
                        type:
                          - string
                          - 'null'
                      email:
                        type:
                          - string
                          - 'null'
                      iban:
                        type:
                          - string
                          - 'null'
                      swiftBic:
                        type:
                          - string
                          - 'null'
                      bankAccount:
                        type:
                          - string
                          - 'null'
                      walletAddress:
                        type:
                          - string
                          - 'null'
                      walletChain:
                        type:
                          - string
                          - 'null'
                        enum:
                          - MTN_BJ
                          - MTN_CI
                          - MTN_CM
                          - ORANGE_CI
                          - ORANGE_SN
                          - ORANGE_ML
                          - ORANGE_BF
                          - ORANGE_CM
                          - MOOV_BJ
                          - MOOV_TG
                          - MOOV_CI
                          - MOOV_BF
                          - WAVE_CI
                          - WAVE_SN
                          - FREE_SN
                          - TMONEY_TG
                          - MOBICASH_ML
                          - MOBICASH_BF
                          - DJAMO_CI
                          - MIXX_SN
                          - MTN_CG
                          - AIRTEL_CG
                          - ORANGE_CD
                          - AIRTEL_CD
                          - VODACOM_CD
                          - AFRICELL_CD
                          - AIRTEL_GA
                          - MOMO_NG
                          - AIRTEL_NG
                          - OPAY_NG
                          - MTN_GH
                          - VODAFONE_GH
                          - AIRTELTIGO_GH
                          - BANK_XOF
                          - BANK_XAF
                          - BANK_NGN
                          - BANK_GHS
                          - BANK_CDF
                          - BANK_EUR
                          - BANK_USD
                          - ETH
                          - POLYGON
                          - TRON
                      documents:
                        type:
                          - array
                          - 'null'
                        items:
                          type: object
                          properties:
                            kind:
                              type: string
                            filename:
                              type: string
                            storageKey:
                              type: string
                          required:
                            - kind
                            - filename
                            - storageKey
                          additionalProperties: false
                      isBlacklisted:
                        type: boolean
                      approvalStatus:
                        type: string
                        enum:
                          - PENDING
                          - APPROVED
                          - REJECTED
                        description: >-
                          KryptaPay review. Only an `APPROVED` beneficiary can
                          be paid.
                      approvedAt:
                        type:
                          - string
                          - 'null'
                      rejectionReason:
                        type:
                          - string
                          - 'null'
                      entityType:
                        type: string
                        enum:
                          - INDIVIDUAL
                          - BUSINESS
                        default: BUSINESS
                        description: >-
                          `INDIVIDUAL` or `BUSINESS`. Set at creation, cannot be
                          changed.
                      verificationRequiredAt:
                        type:
                          - string
                          - 'null'
                        default: null
                        description: >-
                          When set, the beneficiary's EUR / USD bank accounts
                          can only be paid once `verification` is `APPROVED`
                          with `tosAccepted: true`.
                      verification:
                        type:
                          - object
                          - 'null'
                        properties:
                          status:
                            type: string
                            enum:
                              - NOT_STARTED
                              - IN_PROGRESS
                              - UNDER_REVIEW
                              - ACTION_REQUIRED
                              - APPROVED
                              - REJECTED
                              - SUSPENDED
                          tosAccepted:
                            type: boolean
                          nameMismatch:
                            type: boolean
                          lastSentAt:
                            type:
                              - string
                              - 'null'
                          rejectionReasons:
                            type: array
                            items:
                              type: string
                        required:
                          - status
                          - tosAccepted
                          - nameMismatch
                          - lastSentAt
                          - rejectionReasons
                        additionalProperties: false
                        default: null
                        description: >-
                          Identity verification for EUR / USD bank accounts.
                          `null` until a verification link is sent.
                      accounts:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            kind:
                              type: string
                              enum:
                                - BANK
                                - MOMO
                                - CRYPTO
                            currency:
                              $ref: '#/components/schemas/Currency'
                            label:
                              type:
                                - string
                                - 'null'
                            bankName:
                              type:
                                - string
                                - 'null'
                            bankAddress:
                              type:
                                - string
                                - 'null'
                            bankCountry:
                              type:
                                - string
                                - 'null'
                            accountHolder:
                              type:
                                - string
                                - 'null'
                            iban:
                              type:
                                - string
                                - 'null'
                            bankAccount:
                              type:
                                - string
                                - 'null'
                            swiftBic:
                              type:
                                - string
                                - 'null'
                            network:
                              type:
                                - string
                                - 'null'
                              enum:
                                - MTN_BJ
                                - MTN_CI
                                - MTN_CM
                                - ORANGE_CI
                                - ORANGE_SN
                                - ORANGE_ML
                                - ORANGE_BF
                                - ORANGE_CM
                                - MOOV_BJ
                                - MOOV_TG
                                - MOOV_CI
                                - MOOV_BF
                                - WAVE_CI
                                - WAVE_SN
                                - FREE_SN
                                - TMONEY_TG
                                - MOBICASH_ML
                                - MOBICASH_BF
                                - DJAMO_CI
                                - MIXX_SN
                                - MTN_CG
                                - AIRTEL_CG
                                - ORANGE_CD
                                - AIRTEL_CD
                                - VODACOM_CD
                                - AFRICELL_CD
                                - AIRTEL_GA
                                - MOMO_NG
                                - AIRTEL_NG
                                - OPAY_NG
                                - MTN_GH
                                - VODAFONE_GH
                                - AIRTELTIGO_GH
                                - BANK_XOF
                                - BANK_XAF
                                - BANK_NGN
                                - BANK_GHS
                                - BANK_CDF
                                - BANK_EUR
                                - BANK_USD
                                - ETH
                                - POLYGON
                                - TRON
                            msisdn:
                              type:
                                - string
                                - 'null'
                            momoCountry:
                              type:
                                - string
                                - 'null'
                            momoHolderName:
                              type:
                                - string
                                - 'null'
                            momoHolderId:
                              type:
                                - string
                                - 'null'
                            walletChain:
                              type:
                                - string
                                - 'null'
                              enum:
                                - MTN_BJ
                                - MTN_CI
                                - MTN_CM
                                - ORANGE_CI
                                - ORANGE_SN
                                - ORANGE_ML
                                - ORANGE_BF
                                - ORANGE_CM
                                - MOOV_BJ
                                - MOOV_TG
                                - MOOV_CI
                                - MOOV_BF
                                - WAVE_CI
                                - WAVE_SN
                                - FREE_SN
                                - TMONEY_TG
                                - MOBICASH_ML
                                - MOBICASH_BF
                                - DJAMO_CI
                                - MIXX_SN
                                - MTN_CG
                                - AIRTEL_CG
                                - ORANGE_CD
                                - AIRTEL_CD
                                - VODACOM_CD
                                - AFRICELL_CD
                                - AIRTEL_GA
                                - MOMO_NG
                                - AIRTEL_NG
                                - OPAY_NG
                                - MTN_GH
                                - VODAFONE_GH
                                - AIRTELTIGO_GH
                                - BANK_XOF
                                - BANK_XAF
                                - BANK_NGN
                                - BANK_GHS
                                - BANK_CDF
                                - BANK_EUR
                                - BANK_USD
                                - ETH
                                - POLYGON
                                - TRON
                            walletAddress:
                              type:
                                - string
                                - 'null'
                            cryptoAsset:
                              type:
                                - string
                                - 'null'
                            createdAt:
                              type: string
                          required:
                            - id
                            - kind
                            - currency
                            - label
                            - bankName
                            - bankAddress
                            - bankCountry
                            - accountHolder
                            - iban
                            - bankAccount
                            - swiftBic
                            - network
                            - msisdn
                            - momoCountry
                            - momoHolderName
                            - momoHolderId
                            - walletChain
                            - walletAddress
                            - cryptoAsset
                            - createdAt
                          additionalProperties: false
                        default: []
                      createdAt:
                        type: string
                    required:
                      - id
                      - fullName
                      - type
                      - country
                      - tradeName
                      - legalForm
                      - registrationNumber
                      - taxId
                      - address
                      - contactName
                      - contactRole
                      - contactPhone
                      - bankName
                      - msisdn
                      - email
                      - iban
                      - swiftBic
                      - bankAccount
                      - walletAddress
                      - walletChain
                      - documents
                      - isBlacklisted
                      - approvalStatus
                      - approvedAt
                      - rejectionReason
                      - createdAt
                    additionalProperties: false
                required:
                  - ok
                  - data
                additionalProperties: false
              example:
                ok: true
                data:
                  id: cmh1a2b3c0001xyz
                  entityType: INDIVIDUAL
                  fullName: Jean Dupont
                  type: FOURNISSEUR
                  country: FR
                  email: jean.dupont@example.com
                  approvalStatus: PENDING
                  rejectionReason: null
                  isBlacklisted: false
                  verificationRequiredAt: '2026-11-11T10:15:00.000Z'
                  verification:
                    status: NOT_STARTED
                    tosAccepted: false
                    nameMismatch: false
                    lastSentAt: '2026-11-11T10:15:00.000Z'
                    rejectionReasons: []
                  accounts:
                    - id: cmh1a2b3c0002xyz
                      kind: BANK
                      currency: EUR
                      label: null
                      bankName: BNP Paribas
                      accountHolder: Jean Dupont
                      iban: FR7630006000011234567890189
                      swiftBic: BNPAFRPP
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
        '502':
          $ref: '#/components/responses/UpstreamUnavailable'
components:
  schemas:
    Currency:
      type: string
      enum:
        - XOF
        - XAF
        - NGN
        - GHS
        - CDF
        - EUR
        - USD
        - USDC
        - USDT
      description: ISO currency code (fiat) or stablecoin ticker.
    Error:
      type: object
      properties:
        ok:
          type: boolean
          enum:
            - false
        error:
          type: object
          properties:
            code:
              type: string
              description: Stable, machine-readable code. Branch on this, not on `message`.
            message:
              type: string
              description: Human-readable explanation. May change; do not parse.
            details:
              description: >-
                Extra context. For `validation_error`: `{ formErrors,
                fieldErrors }`.
          required:
            - code
            - message
      required:
        - ok
        - error
  responses:
    Unauthorized:
      description: Missing, invalid or expired API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            ok: false
            error:
              code: unauthorized
              message: Invalid or expired API key
    Forbidden:
      description: >-
        The key lacks the required scope (`insufficient_scope`), or the account
        is not KYB-approved (`kyb_required`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            ok: false
            error:
              code: kyb_required
              message: Your organization must complete KYB verification.
    NotFound:
      description: The resource does not exist or belongs to another account.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            ok: false
            error:
              code: not_found
              message: Payout not found
    Conflict:
      description: The resource is not in a state that allows this action.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            ok: false
            error:
              code: bad_status
              message: Cannot cancel in status PROCESSING
    ValidationError:
      description: >-
        The request failed validation or a business rule. See `error.code` and,
        for `validation_error`, `error.details.fieldErrors`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            ok: false
            error:
              code: validation_error
              message: 'amount: Invalid amount'
    RateLimited:
      description: >-
        Too many requests. Wait for the number of seconds in the `retry-after`
        header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            ok: false
            error:
              code: rate_limited
              message: Rate limit exceeded, retry in 1 minute
    UpstreamUnavailable:
      description: >-
        The payment operator could not process the request. Retry with backoff
        or use another network.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            ok: false
            error:
              code: payin_unavailable
              message: Le paiement Mobile Money est momentanément indisponible.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        Secret API key from **Dashboard → Developers**: `kp_sandbox_…` for
        Sandbox, `kp_live_…` for Production. Server-side only.

````

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