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

# KYB Status

> To check where a business's verification stands, diagnose issues, and confirm when they're ready to use a rail, use the [KYC Status endpoint](https://docs.hifi.com/api-reference/kyc/retrieve-kyc-status). This guide focuses on interpreting the business-specific response.

<Tip>
  Read the [KYC Status](/kyc/kyc-status) guide first—it explains the compliance screening structure without Ultimate Beneficial Owners.
</Tip>

<Note>
  This guide focuses on the USD rail. Requirements and response structure differ for other rails—see the [API
  Reference](https://docs.hifi.com/api-reference/kyc/retrieve-kyc-status) for complete details.
</Note>

## Status Overview

Business KYB applications move through the same statuses as individual KYC:

| Status               | Description                                                                        |
| -------------------- | ---------------------------------------------------------------------------------- |
| **INACTIVE**         | No KYB submitted yet—call Submit KYC to begin verification                         |
| **INCOMPLETE**       | Submitted data needs updates—fix flagged items and resubmit                        |
| **PENDING**          | KYB submitted and is moving through automated compliance checks or bank onboarding |
| **MANUAL\_REVIEW**   | Compliance team manually reviewing before final decision                           |
| **RFI\_PENDING**     | Compliance requested additional information—check your compliance email            |
| **ACTIVE**           | Business passed compliance review and can use the USD rail                         |
| **REJECTED**         | Permanently denied for USD rail—resubmission not permitted                         |
| **CONTACT\_SUPPORT** | System couldn't confirm status—contact HIFI support                                |

<Info>
  Contact support if a business applicant remains in `PENDING` or `MANUAL_REVIEW` for more than 3 days.
</Info>

## Response Structure

### Top-Level Fields

The KYB status response has the same top-level structure as individual KYC, but with business-specific compliance categories in the `details` object.

<ResponseField name="status" type="string">
  Current KYB application status
</ResponseField>

<ResponseField name="message" type="string">
  Human-readable context for developers
</ResponseField>

<ResponseField name="reviewResult" type="object">
  Overall decision for the KYB submission (`APPROVED`, `DECLINED`, or empty while pending review).
</ResponseField>

<ResponseField name="details" type="object">
  Breakdown of business compliance categories and review results
</ResponseField>

### Review Result

Each compliance category includes a `reviewResult` object with a general summary of the compliance review outcome. The same schema is used for the top-level `reviewResult` field:

<ResponseField name="reviewAnswer" type="string">
  Screening outcome: `APPROVED` or `DECLINED`
</ResponseField>

<ResponseField name="reviewRejectType" type="string">
  Resubmission permission: `RETRY` (can resubmit) or `FINAL` (hard rejection). Only present when `reviewAnswer` is `DECLINED`.
</ResponseField>

<ResponseField name="rejectReasons" type="array[string]">
  Enumerated rejection reasons. Only present when `reviewAnswer` is `DECLINED`.
</ResponseField>

<ResponseField name="comment" type="string">
  Human-readable explanation of the rejection. Only present when `reviewAnswer` is `DECLINED`.
</ResponseField>

### Review Details

The `details` object returns the compliance review outcome for each information category. Every category includes a `reviewResult`, and some categories provide additional nested data.

<ResponseField name="companyInfo" type="object">
  Structured business data: legal name, registered address, registration number, tax identifiers, and other non-document metadata.

  <Expandable title="properties">
    <ResponseField name="reviewResult" type="ReviewResultObject">
      Outcome of the automated compliance checks for the provided company attributes.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="questionnaire" type="object">
  Responses to the compliance questionnaire (purpose of account, expected transaction volume, counterparties, source of funds).

  <Expandable title="properties">
    <ResponseField name="reviewResult" type="ReviewResultObject">
      Approval state for the questionnaire answers. `DECLINED` responses include the reason and remediation comment.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="legalPresence" type="object">
  Document verification for the legal presence requirements.

  <Expandable title="properties">
    <ResponseField name="reviewResult" type="ReviewResultObject">
      Aggregate result for all submitted documents in this category.
    </ResponseField>

    <ResponseField name="details" type="array[Document]">
      List of every uploaded document that was reviewed.

      <Expandable title="Document item">
        <ResponseField name="id" type="string">
          UUID for the document uploaded through Update KYC.
        </ResponseField>

        <ResponseField name="type" type="string">
          Document category such as `INCORPORATION_CERT`, `INFORMATION_STATEMENT`, or `PROOF_OF_ADDRESS`.
        </ResponseField>

        <ResponseField name="subType" type="string">
          Optional qualifier like `SINGLE_SIDE` or `FRONT_SIDE`.
        </ResponseField>

        <ResponseField name="reviewResult" type="ReviewResultObject">
          Outcome for the individual document; comments explain what to resubmit when declined.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="ownershipStructure" type="object">
  Document verification for the ownership structure requirements.

  <Expandable title="properties">
    <ResponseField name="reviewResult" type="ReviewResultObject">
      Aggregate result for all submitted documents in this category.
    </ResponseField>

    <ResponseField name="details" type="array[Document]">
      List of every uploaded document that was reviewed.

      <Expandable title="Document item">
        <ResponseField name="id" type="string">
          UUID for the document uploaded through Update KYC.
        </ResponseField>

        <ResponseField name="type" type="string">
          Document category such as `INCORPORATION_CERT`, `INFORMATION_STATEMENT`, or `PROOF_OF_ADDRESS`.
        </ResponseField>

        <ResponseField name="subType" type="string">
          Optional qualifier like `SINGLE_SIDE` or `FRONT_SIDE`.
        </ResponseField>

        <ResponseField name="reviewResult" type="ReviewResultObject">
          Outcome for the individual document; comments explain what to resubmit when declined.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="companyDetails" type="object">
  Document verification for the company details requirements.

  <Expandable title="properties">
    <ResponseField name="reviewResult" type="ReviewResultObject">
      Aggregate result for all submitted documents in this category.
    </ResponseField>

    <ResponseField name="details" type="array[Document]">
      List of every uploaded document that was reviewed.

      <Expandable title="Document item">
        <ResponseField name="id" type="string">
          UUID for the document uploaded through Update KYC.
        </ResponseField>

        <ResponseField name="type" type="string">
          Document category such as `INCORPORATION_CERT`, `INFORMATION_STATEMENT`, or `PROOF_OF_ADDRESS`.
        </ResponseField>

        <ResponseField name="subType" type="string">
          Optional qualifier like `SINGLE_SIDE` or `FRONT_SIDE`.
        </ResponseField>

        <ResponseField name="reviewResult" type="ReviewResultObject">
          Outcome for the individual document; comments explain what to resubmit when declined.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="controlStructure" type="object">
  Document verification for the control structure requirements.

  <Expandable title="properties">
    <ResponseField name="reviewResult" type="ReviewResultObject">
      Aggregate result for all submitted documents in this category.
    </ResponseField>

    <ResponseField name="details" type="array[Document]">
      List of every uploaded document that was reviewed.

      <Expandable title="Document item">
        <ResponseField name="id" type="string">
          UUID for the document uploaded through Update KYC.
        </ResponseField>

        <ResponseField name="type" type="string">
          Document category such as `INCORPORATION_CERT`, `INFORMATION_STATEMENT`, or `PROOF_OF_ADDRESS`.
        </ResponseField>

        <ResponseField name="subType" type="string">
          Optional qualifier like `SINGLE_SIDE` or `FRONT_SIDE`.
        </ResponseField>

        <ResponseField name="reviewResult" type="ReviewResultObject">
          Outcome for the individual document; comments explain what to resubmit when declined.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="ultimateBeneficialOwners" type="object">
  Aggregated status for all UBOs. It contains a category-level `reviewResult` and a `details` array with one entry per UBO. Each UBO entry mirrors the individual KYC structure described in the [KYC Status guide](/kyc/kyc-status) (personal info, identity documents, proof of address, questionnaire).

  <Expandable title="properties">
    <ResponseField name="reviewResult" type="ReviewResultObject">
      Combined decision for the UBO set. If declined, consult each entry for remediation guidance.
    </ResponseField>

    <ResponseField name="details" type="array[Ubo]">
      One entry per Ultimate Beneficial Owner.

      <Expandable title="UBO item">
        <ResponseField name="id" type="string">
          UUID used to update the UBO's information via Update KYC.
        </ResponseField>

        <ResponseField name="status" type="string">
          Current onboarding status for that UBO (`ACTIVE`, `INCOMPLETE`, etc.).
        </ResponseField>

        <ResponseField name="message" type="string">
          Contextual message for developers or support agents.
        </ResponseField>

        <ResponseField name="reviewResult" type="ReviewResultObject">
          Decision for the specific UBO.
        </ResponseField>

        <ResponseField name="details" type="object">
          Nested verification categories (`personalInfo`, `identity`, `proofOfAddress`, `questionnaire`) following the individual KYC schema.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

## Response Breakdown

<Tabs>
  <Tab title="ACTIVE">
    Business passed all compliance checks and completed bank onboarding. They can now use the USD rail.

    ```json expandable theme={null}
    {
      "status": "ACTIVE",
      "message": "",
      "reviewResult": {
        "reviewAnswer": "APPROVED",
        "reviewRejectType": "",
        "rejectReasons": [],
        "comment": ""
      },
      "details": {
        "companyInfo": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          }
        },
        "questionnaire": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          }
        },
        "legalPresence": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          },
          "details": [...]
        },
    	"ownershipStructure": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          },
          "details": [...]
        },
    	"companyDetails": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          },
          "details": [...]
        },
    	"controlStructure": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          },
          "details": [...]
        },
        "ultimateBeneficialOwners": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          },
          "details": [
            {
              "id": "74441b74-caab-5f74-8e24-3fcee83faac8",
              "status": "ACTIVE",
              "reviewResult": {
                "reviewAnswer": "APPROVED",
                "reviewRejectType": "",
                "rejectReasons": [],
                "comment": ""
              }
            }
          ]
        }
      }
    }
    ```
  </Tab>

  <Tab title="INACTIVE">
    No KYB submission made yet. Call the [Submit KYC endpoint](https://docs.hifi.com/api-reference/kyc/submit-kyc) to begin verification.

    ```json theme={null}
    {
      "status": "INACTIVE",
      "message": "The rail is not active.",
      "reviewResult": {},
      "details": {}
    }
    ```
  </Tab>

  <Tab title="PENDING">
    Application is moving through automated compliance screening or bank onboarding.

    ```json expandable theme={null}
    {
      "status": "PENDING",
      "message": "",
      "reviewResult": {},
      "details": {
        ...
      }
    }
    ```

    <Info>
      Contact support if status doesn't change within 3 days for business applicants.
    </Info>
  </Tab>

  <Tab title="MANUAL_REVIEW">
    Compliance team is manually reviewing the application. This typically follows `PENDING` when additional investigation is needed.

    ```json theme={null}
    {
      "status": "MANUAL_REVIEW",
      "message": "",
      "reviewResult": {},
      "details": {}
    }
    ```

    <Info>
      Contact support if status doesn't change within 3 days.
    </Info>
  </Tab>

  <Tab title="INCOMPLETE">
    Submitted data needs updates before verification can continue. Use the `reviewResult` in each compliance category to identify what needs fixing.

    ```json expandable theme={null}
    {
      "status": "INCOMPLETE",
      "message": "",
      "reviewResult": {
        "reviewAnswer": "DECLINED",
        "reviewRejectType": "RETRY",
        "rejectReasons": ["UNFILLED_ID"],
        "comment": ""
      },
      "details": {
        "companyInfo": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          }
        },
        "questionnaire": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          }
        },
        "legalPresence": {
          "reviewResult": {
            "reviewAnswer": "DECLINED",
            "reviewRejectType": "RETRY",
            "rejectReasons": ["SCREENSHOTS"],
            "comment": "Screenshots aren't accepted. Please upload a live photo of the document."
          },
          "details": [...]
        },
    	"ownershipStructure": {
          "reviewResult": {
            "reviewAnswer": "DECLINED",
            "reviewRejectType": "RETRY",
            "rejectReasons": ["SCREENSHOTS"],
            "comment": "Screenshots aren't accepted. Please upload a live photo of the document."
          },
          "details": [...]
        },
    	"companyDetails": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          },
          "details": [...]
        },
    	"controlStructure": {
          "reviewResult": {
            "reviewAnswer": "APPROVED",
            "reviewRejectType": "",
            "rejectReasons": [],
            "comment": ""
          },
          "details": [...]
        },
        "ultimateBeneficialOwners": {
          "reviewResult": {
            "reviewAnswer": "DECLINED",
            "reviewRejectType": "RETRY",
            "rejectReasons": ["SCREENSHOTS"],
            "comment": ""
          },
          "details": [
            {
              "id": "74441b74-caab-5f74-8e24-3fcee83faac8",
              "status": "INCOMPLETE",
              "reviewResult": {
                "reviewAnswer": "DECLINED",
                "reviewRejectType": "RETRY",
                "rejectReasons": ["SCREENSHOTS"],
                "comment": ""
              },
              "details": {
                "identity": {
                  "reviewResult": {
                    "reviewAnswer": "DECLINED",
                    "reviewRejectType": "RETRY",
                    "rejectReasons": ["SCREENSHOTS"],
                    "comment": "Screenshots aren't accepted. Please upload a live photo of the document."
                  }
                }
              }
            }
          ]
        }
      }
    }
    ```

    **How to resolve:**

    1. Check the `reviewResult` in each compliance category for `DECLINED` items
    2. Read the `comment` field for specific guidance
    3. For company data: Use [**Update KYC**](https://docs.hifi.com/api-reference/kyc/update-kyc-information) to update non-document information, or [**Update Document**](https://docs.hifi.com/api-reference/kyc/update-a-document) / [**Add Document**](https://docs.hifi.com/api-reference/kyc/add-documents) to update documentation.
    4. For UBO data: Update the specific UBO's information using their `id` with [Update UBO](https://docs.hifi.com/api-reference/kyc/update-a-ubo) or [**Update Document**](https://docs.hifi.com/api-reference/kyc/update-a-document) / [**Add Document**](https://docs.hifi.com/api-reference/kyc/add-documents) to update documentation.
    5. Call [Submit KYC](https://docs.hifi.com/api-reference/kyc/submit-kyc) to trigger a new review

    **Business compliance category mapping:**

    | Category                 | Contains                                                                                           |
    | ------------------------ | -------------------------------------------------------------------------------------------------- |
    | companyInfo              | Business name, address, registration number, tax ID                                                |
    | questionnaire            | Source of funds and intended use responses                                                         |
    | legalPresence            | [Legal presence documentation](https://docs.hifi.com/compliance/documents#business-documents)      |
    | ownershipStructure       | [Ownership structure documentation](https://docs.hifi.com/compliance/documents#business-documents) |
    | companyDetails           | [Company details documentation](https://docs.hifi.com/compliance/documents#business-documents)     |
    | controlStructure         | [Control structure documentation](https://docs.hifi.com/compliance/documents#business-documents)   |
    | ultimateBeneficialOwners | Individual KYC for each UBO (see [KYC Status](/kyc/kyc-status))                                    |

    <Info>
      For compliance reasons, detailed rejection information is only available for documentation—not for other categories. Each UBO follows the individual KYC structure detailed in the [KYC Status guide](/kyc/kyc-status).
    </Info>
  </Tab>

  <Tab title="RFI_PENDING">
    Compliance sent a Request for Information (RFI) to your compliance email asking for additional details about this business.

    ```json theme={null}
    {
      "status": "RFI_PENDING",
      "message": "",
      "reviewResult": {},
      "details": {}
    }
    ```

    <Info>
      Monitor your compliance inbox for RFI requests from **@hifi.com**
    </Info>
  </Tab>

  <Tab title="REJECTED">
    Business is permanently denied for the USD rail. Resubmission via API is not permitted.

    ```json theme={null}
    {
      "status": "REJECTED",
      "message": "",
      "reviewResult": {},
      "details": {}
    }
    ```

    <Info>
      Contact support if you believe this status is incorrect.
    </Info>
  </Tab>

  <Tab title="CONTACT_SUPPORT">
    System couldn't process the KYB or return the correct status. Contact HIFI support for resolution.

    ```json theme={null}
    {
      "status": "CONTACT_SUPPORT",
      "message": "",
      "reviewResult": {},
      "details": {}
    }
    ```
  </Tab>
</Tabs>
