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

# Business KYB History

> Retrieve every KYB session tied to a Didit Business entity, inspect registry data and AML hits, trigger re-verification, and generate compliance reports.

export const AgentPromptAccordion = ({prompt, title = "AI Agent Integration Prompt"}) => {
  const [copied, setCopied] = React.useState(false);
  const handleCopy = e => {
    e.stopPropagation();
    if (!prompt) return;
    navigator.clipboard.writeText(prompt.trim()).then(() => {
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    });
  };
  const agents = ["Claude Code", "Codex", "Cursor", "Devin", "Windsurf", "GitHub Copilot"];
  return <div className="didit-agent-card">
      {}
      <div className="didit-agent-titlebar">
        <div className="didit-agent-dots" aria-hidden="true">
          <span className="didit-agent-dot didit-agent-dot-red"></span>
          <span className="didit-agent-dot didit-agent-dot-yellow"></span>
          <span className="didit-agent-dot didit-agent-dot-green"></span>
        </div>
        <span className="didit-agent-filename">{title}</span>
        <button type="button" className={`didit-agent-copy ${copied ? "didit-agent-copy-copied" : ""}`} onClick={handleCopy} title="Copy prompt to clipboard" aria-label={copied ? "Copied!" : "Copy prompt to clipboard"}>
          {copied ? <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <path d="M3 8.5l3.5 3.5L13 4" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
              </svg>
              <span>Copied</span>
            </> : <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <rect x="5" y="5" width="9" height="9" rx="1.5" stroke="currentColor" strokeWidth="1.5" />
                <path d="M11 5V3.5A1.5 1.5 0 0 0 9.5 2h-6A1.5 1.5 0 0 0 2 3.5v6A1.5 1.5 0 0 0 3.5 11H5" stroke="currentColor" strokeWidth="1.5" />
              </svg>
              <span>Copy</span>
            </>}
        </button>
      </div>

      {}
      <pre className="didit-agent-body"><code>{prompt.trim()}</code></pre>

      {}
      <div className="didit-agent-footer">
        <span className="didit-agent-footer-label">Paste into</span>
        <div className="didit-agent-chips">
          {agents.map(name => <span key={name} className="didit-agent-chip">{name}</span>)}
        </div>
      </div>
    </div>;
};

<AgentPromptAccordion
  title="KYB History Prompt"
  prompt={`# Goal — read a business's full KYB history and trigger re-verification

Every KYB session is linked to the Business entity via \`vendor_data\`. List sessions, retrieve each decision, and create new sessions for re-KYB.

## List every KYB session for a business

\`\`\`bash
curl -G https://verification.didit.me/v3/sessions/ \\
-H "x-api-key: $DIDIT_API_KEY" \\
--data-urlencode "vendor_data=biz-acme" \\
--data-urlencode "page_size=50"
\`\`\`

KYB session payloads carry \`session_kind: "business"\` and \`business_session_id\` to distinguish them from KYC sessions.

## Inspect a single KYB decision

\`\`\`bash
curl https://verification.didit.me/v3/session/$SESSION_ID/decision/ \\
-H "x-api-key: $DIDIT_API_KEY"
\`\`\`

KYB decisions include:

- Company registry data (legal name, registration, status, incorporation date, addresses)
- \`key_people_checks[]\` — UBOs, shareholders, directors, officers (registry-sourced and user-submitted, with role tags)
- \`aml_screenings[]\` — company AML and per-person AML
- \`document_verifications[]\` — uploaded docs with OCR extracts and signed image URLs

See /business-verification/response-schema for the full payload.

## Fast path — fully verified right now?

\`\`\`bash
curl https://verification.didit.me/v3/businesses/biz-acme/ \\
-H "x-api-key: $DIDIT_API_KEY"
# data.features = { kyb_registry: "APPROVED", kyb_company_aml: "APPROVED", kyb_documents: "APPROVED", kyb_key_people: "IN_REVIEW" }
\`\`\`

The Business entity's \`features\` map reflects the latest state of each KYB feature across all sessions.

## Trigger re-KYB

Annual re-KYB or trigger-based re-checks: create a new session against the same \`vendor_data\`. The new session attaches to the existing Business entity.

\`\`\`bash
curl -X POST https://verification.didit.me/v3/session/ \\
-H "x-api-key: $DIDIT_API_KEY" \\
-H "Content-Type: application/json" \\
-d '{"workflow_id": "wf_kyb_annual", "vendor_data": "biz-acme"}'
\`\`\`

## Generate a KYB PDF report

\`\`\`bash
curl https://verification.didit.me/v3/session/$SESSION_ID/generate-pdf/ \\
-H "x-api-key: $DIDIT_API_KEY" \\
-o kyb-report.pdf
\`\`\`

PDF covers registry data, ownership structure, AML hits, document images, per-officer KYC status, questionnaires, phone verification, email verification, and IP analysis when those features are part of the workflow.

## Resubmit vs new session

| Scenario | Use |
|---|---|
| Registry needs corrected company name | Resubmit — analyst edits data and re-runs registry |
| Additional document requested | Resubmit — business uploads the missing document |
| Annual / trigger-based re-KYB | Create a brand new session |

\`kyb_key_people\` and \`kyb_registry\` cannot be resubmitted directly — to re-verify a person, resubmit their child KYC session; the parent Key People feature re-aggregates automatically.

## Share a session

\`\`\`bash
curl -X POST https://verification.didit.me/v3/session/$SESSION_ID/share/ \\
-H "x-api-key: $DIDIT_API_KEY"

curl -X POST https://verification.didit.me/v3/session/import-shared/ \\
-H "x-api-key: $RECEIVER_API_KEY" \\
-H "Content-Type: application/json" \\
-d '{"share_token": "..."}'
\`\`\`

## Failure modes

- \`404\` — wrong \`vendor_data\` casing or no KYB sessions yet.
- Stale signed image URLs — re-fetch the decision.
- \`session_kind: "user"\` events in the same list — filter on \`session_kind === "business"\` for KYB-only handling.

## Sources of truth

- /business-verification/response-schema — full KYB decision payload
- /business-verification/statuses — feature state machine
- /entities/businesses/data-model — features map computation
- /core-technology/reusable-kyc/overview — share / import pattern
- /integration/integration-prompt — canonical end-to-end prompt
`}
/>

Every Business Verification (KYB) session a Business has run stays permanently linked to the Business entity. You can retrieve the full history, inspect each session's registry data and AML hits, trigger re-verification, and generate PDF reports for audits.

## Listing all Business Verification (KYB) sessions for a business

Filter the Sessions list by `vendor_data`:

```bash theme={null}
curl -G https://verification.didit.me/v3/sessions/ \
  -H "x-api-key: YOUR_API_KEY" \
  --data-urlencode "vendor_data=biz-acme" \
  --data-urlencode "page_size=50"
```

Response includes every Business Verification (KYB) session (regardless of status).

## Understanding KYB features

Business entities track features independently:

| Feature           | What it covers                                                      |
| ----------------- | ------------------------------------------------------------------- |
| `kyb_registry`    | Company registry lookup — existence, status, identity cross-check   |
| `kyb_company_aml` | Company-level AML screening (sanctions, adverse media, watchlists)  |
| `kyb_documents`   | Document collection and OCR cross-referencing                       |
| `kyb_key_people`  | Officers, UBOs, beneficial owners — identification and optional KYC |

The `features` map on the business entity reflects the latest status of each:

```json theme={null}
"features": {
  "kyb_registry": "APPROVED",
  "kyb_company_aml": "APPROVED",
  "kyb_documents": "APPROVED",
  "kyb_key_people": "IN_REVIEW"
}
```

See [KYB feature statuses](/business-verification/statuses) for the full reference.

## Inspecting a single Business Verification (KYB) session

```bash theme={null}
curl https://verification.didit.me/v3/session/{session_id}/decision/ \
  -H "x-api-key: YOUR_API_KEY"
```

The KYB decision includes:

* Company registry data (legal name, registration, status, incorporation date, addresses)
* Officers and UBOs extracted from the registry
* Ownership structure (cap table, beneficial ownership percentages)
* Company AML results (hits, scores)
* Per-person AML for each UBO and officer
* Document results with OCR extracts
* Decision reason codes

See [KYB response schema](/business-verification/response-schema) for the full payload.

## Triggering re-verification

Annual re-KYB, trigger-based re-checks, or remediation flows all start with a new session:

```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "workflow_id": "wf_kyb_annual",
    "vendor_data": "biz-acme"
  }'
```

The new session attaches to the existing Business entity and updates the `features` map on completion.

## Resubmission vs new Business Verification (KYB) session

| Scenario                                        | Use                                                |
| ----------------------------------------------- | -------------------------------------------------- |
| Registry lookup needs a corrected company name  | Resubmit — analyst edits data and re-runs registry |
| Additional document requested from the business | Resubmit — business uploads the missing document   |
| Annual or trigger-based re-KYB                  | Create a new session                               |

## Exporting a KYB report

Generate a comprehensive PDF for any Business Verification (KYB) session:

```bash theme={null}
curl https://verification.didit.me/v3/session/{session_id}/generate-pdf/ \
  -H "x-api-key: YOUR_API_KEY" \
  -o kyb-report.pdf
```

The PDF includes registry data, ownership structure, AML hits, document images, officer KYC status, and a cover page with decision reason.

## Sharing a Business Verification (KYB) session

For consortium or partner workflows:

* `POST /v3/session/{session_id}/share/` — generate a shareable token.
* `POST /v3/session/import-shared/` — import on the receiving side.

## Ongoing monitoring

Business entities in ongoing monitoring mode get periodic AML rescans. When a new sanctions or adverse media hit is detected, the business's `kyb_company_aml` feature is updated and a `business.data.updated` webhook fires.

Configure ongoing monitoring in the console at *Workflows → \[KYB workflow] → AML → Ongoing monitoring*.

## Next steps

<CardGroup cols={3}>
  <Card title="KYB overview" icon="building" href="/business-verification/overview">
    How Business Verification (KYB) sessions work end-to-end.
  </Card>

  <Card title="KYB response" icon="file-lines" href="/business-verification/response-schema">
    Full decision payload reference.
  </Card>

  <Card title="Key people" icon="users" href="/entities/businesses/key-people">
    Officers, UBOs, and linked Users.
  </Card>
</CardGroup>
