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

# Verify Contact

> Notifies RemitJunction that a customer email or phone has been verified externally, triggering the full KYC lifecycle.

Use this endpoint when your agent handles email or phone verification independently, instead of having RemitJunction send the verification link or OTP to the customer.

Calling this endpoint marks the outstanding email or phone KYC requirement as fulfilled and triggers the full KYC lifecycle automatically — including risk score adjustment, compliance decision re-evaluation, and account approval if all requirements are met.

## When to Use This Endpoint

This endpoint is relevant when your agent has one or both of the following settings enabled on the agent configuration:

| Setting                         | Behaviour when enabled                                                                                                                              |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `doNotForwardEmailVerification` | RemitJunction does **not** send the email verification link. Your system must verify the customer's email and call this endpoint with `type=EMAIL`. |
| `doNotForwardPhoneVerification` | RemitJunction does **not** send the phone OTP. Your system must verify the customer's phone and call this endpoint with `type=PHONE_NUMBER`.        |

If neither setting is enabled, RemitJunction sends the verification automatically when you call [Initiate Compliance Action](/api/ciam/initiate-compliance-action) and this endpoint is not needed.

## Request Parameters

| Parameter | Type   | Required | Description                                                         |
| --------- | ------ | -------- | ------------------------------------------------------------------- |
| `userId`  | string | Yes      | The customer's user ID returned from the register-customer endpoint |
| `type`    | string | Yes      | The contact type to verify. Must be `EMAIL` or `PHONE_NUMBER`       |

## Response

The response `data` object contains the verification result:

| Field                 | Type    | Description                                                    |
| --------------------- | ------- | -------------------------------------------------------------- |
| `type`                | string  | The contact type that was verified (`EMAIL` or `PHONE_NUMBER`) |
| `verified`            | boolean | Whether the requirement was marked as fulfilled                |
| `rawProviderResponse` | string  | The raw response from the verification provider                |

## Behaviour

When this endpoint is called:

1. RemitJunction locates the outstanding KYC requirement for the specified `userId` and contact `type`.
2. The requirement is marked as fulfilled.
3. The customer's risk score is updated to reflect the completed requirement.
4. The compliance decision is re-evaluated against the configured thresholds.
5. If the customer meets the approval threshold, their account is confirmed automatically.

If no outstanding requirement is found for the given `userId` and `type`, the call succeeds but no KYC action is taken.


## OpenAPI

````yaml POST /compliance/external-provider/verify-contact
openapi: 3.0.0
info:
  title: FinCode API
  version: v6
servers:
  - url: https://{tenant}.fincode.software/api/v6/services
    description: API v6
    variables:
      tenant:
        default: remitjunction
        description: Enter your tenant subdomain
  - url: https://{tenant}.fincode.software/api/v1/services
    description: API v1
    variables:
      tenant:
        default: finlend
        description: Enter your tenant subdomain
  - url: https://api.stag.songhaiexchange.io
    description: Songhai Exchange API
security: []
paths:
  /compliance/external-provider/verify-contact:
    post:
      tags:
        - Compliance
      summary: Verify Contact
      description: >-
        Notifies RemitJunction that a customer's email or phone has been
        verified externally. Marks the outstanding KYC requirement as fulfilled
        and triggers the full KYC lifecycle — including risk score adjustment,
        compliance decision re-evaluation, and account approval if all
        thresholds are met.
      operationId: verifyContact
      parameters:
        - $ref: '#/components/parameters/platformHeader'
        - $ref: '#/components/parameters/uuidHeader'
        - in: header
          name: X-Auth-Token
          schema:
            type: string
          required: true
          description: Authentication token for the API request
        - in: query
          name: userId
          schema:
            type: string
          required: true
          description: The customer's userId returned from the register-customer endpoint
        - in: query
          name: type
          schema:
            type: string
            enum:
              - EMAIL
              - PHONE_NUMBER
          required: true
          description: The contact type to mark as verified
      responses:
        '200':
          description: Contact verification processed successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: SUCCESS
                  message:
                    type: string
                    example: Contact verified successfully.
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - EMAIL
                          - PHONE_NUMBER
                        example: EMAIL
                      verified:
                        type: boolean
                        example: true
                      rawProviderResponse:
                        type: string
                        example: deliverable
        '400':
          description: Invalid request — missing or unrecognised userId or type
        '401':
          description: Invalid authentication details
        '500':
          description: Internal server error
components:
  parameters:
    platformHeader:
      in: header
      name: platform
      schema:
        type: string
        default: fincode
      required: true
    uuidHeader:
      in: header
      name: uuid
      schema:
        type: string
        default: '200'
      required: true

````