Skip to content

docs(kyt): document KYT-screened payments as a use case + payee-destination field#94

Open
rodrigopavezi wants to merge 1 commit intodocs/revamp-redirect-urlfrom
docs/revamp-kyt
Open

docs(kyt): document KYT-screened payments as a use case + payee-destination field#94
rodrigopavezi wants to merge 1 commit intodocs/revamp-redirect-urlfrom
docs/revamp-kyt

Conversation

@rodrigopavezi
Copy link
Copy Markdown
Member

Adds end-to-end coverage of the KYT (Know Your Transaction) compliance
feature available today on payee destinations via the Auth API. Frames it
for merchants without naming the third-party screening provider.

New page: use-cases/compliance-gated-payments.mdx

  • Explains what KYT is and isn't (transaction screening, not KYC)
  • Audience: regulated fintech, marketplaces, B2B platforms
  • Configure call (POST /v1/payee-destination with accessPolicy)
  • Privacy options: hideUntilApproved + hidePayeeAddress
  • Payer-side experience matrix (passes / fails / in-progress)
  • Update/remove policy
  • Honest "what KYT does not cover" section so merchants don't treat
    it as a complete compliance program

Touched:

  • docs.json: added the new page to the Use Cases group
  • api-features/payee-destinations.mdx: documented the optional
    accessPolicy ParamField on POST /v1/payee-destination, with the
    three sub-fields (mode, hideUntilApproved, hidePayeeAddress) and a
    link into the new use case page. Response example also includes the
    policy when set.
  • tools/secure-payments.mdx: short payer-side note describing the
    compliance gate and the policy-failure outcome, with a pointer to
    the merchant-side guide.
  • use-cases/welcome.mdx: KYT-screened payments added to the Use Cases
    card description.

Deliberately not mentioned: the third-party screening service we
integrate with — that's an internal implementation detail that
shouldn't appear in customer-facing docs.

…nation field

Adds end-to-end coverage of the KYT (Know Your Transaction) compliance
feature available today on payee destinations via the Auth API. Frames it
for merchants without naming the third-party screening provider.

New page: use-cases/compliance-gated-payments.mdx
- Explains what KYT is and isn't (transaction screening, not KYC)
- Audience: regulated fintech, marketplaces, B2B platforms
- Configure call (POST /v1/payee-destination with accessPolicy)
- Privacy options: hideUntilApproved + hidePayeeAddress
- Payer-side experience matrix (passes / fails / in-progress)
- Update/remove policy
- Honest "what KYT does not cover" section so merchants don't treat
  it as a complete compliance program

Touched:
- docs.json: added the new page to the Use Cases group
- api-features/payee-destinations.mdx: documented the optional
  accessPolicy ParamField on POST /v1/payee-destination, with the
  three sub-fields (mode, hideUntilApproved, hidePayeeAddress) and a
  link into the new use case page. Response example also includes the
  policy when set.
- tools/secure-payments.mdx: short payer-side note describing the
  compliance gate and the policy-failure outcome, with a pointer to
  the merchant-side guide.
- use-cases/welcome.mdx: KYT-screened payments added to the Use Cases
  card description.

Deliberately not mentioned: the third-party screening service we
integrate with — that's an internal implementation detail that
shouldn't appear in customer-facing docs.
This was referenced May 8, 2026
@rodrigopavezi rodrigopavezi marked this pull request as ready for review May 8, 2026 14:54
Copy link
Copy Markdown
Member Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@rodrigopavezi rodrigopavezi requested review from aimen74 and bassgeta May 8, 2026 14:55
@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented May 8, 2026

Greptile Summary

This PR documents the KYT (Know Your Transaction) compliance feature for payee destinations, adding a new use-case guide, updating the payee-destinations API reference with the accessPolicy field, and surfacing the payer-side experience in the secure-payments tool page.

  • New page use-cases/compliance-gated-payments.mdx covers end-to-end KYT configuration — modes, privacy flags, payer experience matrix, and a clear scope statement for what KYT does not replace.
  • api-features/payee-destinations.mdx adds the accessPolicy ParamField to the POST endpoint and includes it in the response example; however, the PUT endpoint is not updated to document accessPolicy, creating a gap for merchants trying to update or remove a policy via the API reference alone.
  • Navigation (docs.json) and the Use Cases welcome card are updated consistently.

Confidence Score: 3/5

The new KYT guide is clear and accurate, but the API reference for PUT /v1/payee-destination omits accessPolicy, leaving merchants without a way to discover policy updates through the reference docs.

The use-case guide explicitly directs merchants to use PUT to update or remove a KYT policy, yet the PUT endpoint in the API reference lists only tokenAddress and chainId. A merchant reading the reference would have no way to discover that accessPolicy is accepted on PUT, making the "Update or remove a policy" section of the guide effectively unverifiable from the API docs alone.

api-features/payee-destinations.mdx — the PUT endpoint section needs accessPolicy documented to match what the use-case guide promises.

Important Files Changed

Filename Overview
api-features/payee-destinations.mdx Adds accessPolicy ParamField to POST; the PUT endpoint is missing the same accessPolicy parameter, leaving a documentation gap for merchants who need to update or remove a KYT policy via PUT.
use-cases/compliance-gated-payments.mdx New use-case guide for KYT-screened payments; content is accurate and well-structured, though the "How it works" flow uses a plain numbered list instead of the <Steps> Mintlify component.
tools/secure-payments.mdx Adds a short payer-side note on compliance gating and links to the new use-case page; no issues found.
docs.json Registers use-cases/compliance-gated-payments in the Use Cases navigation group; straightforward and correct.
use-cases/welcome.mdx Appends "KYT-screened payments" to the Use Cases card description; no issues.

Sequence Diagram

sequenceDiagram
    participant Merchant
    participant AuthAPI as Auth API
    participant Payer
    participant SecurePayApp as Secure Payment App
    participant KYTGate as KYT Compliance Gate

    Merchant->>AuthAPI: POST /v1/payee-destination (accessPolicy: kyt_all_wallets)
    AuthAPI-->>Merchant: destinationId + accessPolicy

    Payer->>SecurePayApp: Opens payment link
    SecurePayApp->>Payer: Wallet connect prompt
    Payer->>SecurePayApp: Connects wallet

    SecurePayApp->>KYTGate: Screen wallet address
    alt Screening passes
        KYTGate-->>SecurePayApp: PASS
        SecurePayApp->>Payer: Show payment options (sign step)
        Payer->>SecurePayApp: Signs and submits transaction
    else Screening fails
        KYTGate-->>SecurePayApp: FAIL
        SecurePayApp->>Payer: Policy-failure view (sign disabled)
    else Screening in progress
        KYTGate-->>SecurePayApp: PENDING
        SecurePayApp->>Payer: Brief loading state
    end

    Merchant->>AuthAPI: PUT /v1/payee-destination (accessPolicy: mode off)
    AuthAPI-->>Merchant: Updated destination (screening removed)
Loading

Comments Outside Diff (1)

  1. api-features/payee-destinations.mdx, line 126-138 (link)

    P1 PUT endpoint missing accessPolicy parameter

    The PUT /v1/payee-destination section only documents tokenAddress and chainId, but compliance-gated-payments.mdx explicitly tells merchants to use this endpoint to update or remove a KYT policy. A merchant following the API reference for PUT would have no indication they can pass accessPolicy — the field would appear silently ignored or unsupported, and removing a policy via PUT is undiscoverable from the reference alone.

Reviews (1): Last reviewed commit: "docs(kyt): document KYT-screened payment..." | Re-trigger Greptile

Comment on lines +96 to +104
<ParamField body="accessPolicy" type="object">
Optional KYT (Know Your Transaction) compliance policy applied to payments into this destination. When set, every payer wallet that connects to a payment link backed by this destination is screened before the payment can proceed. See [Compliance-gated payments](/use-cases/compliance-gated-payments) for the full guide.

| Sub-field | Type | Description |
| --- | --- | --- |
| `mode` | `"off"` \| `"kyt_all_wallets"` | `off` (default): no screening. `kyt_all_wallets`: every payer wallet is screened. |
| `hideUntilApproved` | `boolean` | When `true`, payment metadata is hidden in the payer UI until the wallet passes screening. |
| `hidePayeeAddress` | `boolean` | When `true`, the payee address is masked in the payer UI (no copy / no explorer link). |
</ParamField>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 The accessPolicy sub-fields are documented as a plain Markdown table inside the ParamField body. Per the AGENTS.md style guide, nested object properties should use the Expandable component with nested ParamField entries for consistent, scannable API docs.

Suggested change
<ParamField body="accessPolicy" type="object">
Optional KYT (Know Your Transaction) compliance policy applied to payments into this destination. When set, every payer wallet that connects to a payment link backed by this destination is screened before the payment can proceed. See [Compliance-gated payments](/use-cases/compliance-gated-payments) for the full guide.
| Sub-field | Type | Description |
| --- | --- | --- |
| `mode` | `"off"` \| `"kyt_all_wallets"` | `off` (default): no screening. `kyt_all_wallets`: every payer wallet is screened. |
| `hideUntilApproved` | `boolean` | When `true`, payment metadata is hidden in the payer UI until the wallet passes screening. |
| `hidePayeeAddress` | `boolean` | When `true`, the payee address is masked in the payer UI (no copy / no explorer link). |
</ParamField>
<ParamField body="accessPolicy" type="object">
Optional KYT (Know Your Transaction) compliance policy applied to payments into this destination. When set, every payer wallet that connects to a payment link backed by this destination is screened before the payment can proceed. See [Compliance-gated payments](/use-cases/compliance-gated-payments) for the full guide.
<Expandable title="accessPolicy fields">
<ParamField body="mode" type='"off" | "kyt_all_wallets"'>
`off` (default): no screening. `kyt_all_wallets`: every payer wallet is screened.
</ParamField>
<ParamField body="hideUntilApproved" type="boolean">
When `true`, payment metadata is hidden in the payer UI until the wallet passes screening.
</ParamField>
<ParamField body="hidePayeeAddress" type="boolean">
When `true`, the payee address is masked in the payer UI (no copy / no explorer link).
</ParamField>
</Expandable>
</ParamField>

Context Used: AGENTS.md (source)

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Comment on lines +18 to +21
1. Payer opens your payment link.
2. Before the payment options view loads, Request Network's compliance gate screens the connected wallet (and, for smart-account payments, the parent EOA as well).
3. If the screening **passes**, the payment continues normally.
4. If the screening **fails**, the secure payment page shows a policy-failure view and the payer cannot reach the sign step.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 The "How it works" section uses a plain numbered list for a sequential, step-by-step procedure. AGENTS.md calls for the <Steps> Mintlify component for "procedures and sequential instructions" to get consistent styling and scannability.

Suggested change
1. Payer opens your payment link.
2. Before the payment options view loads, Request Network's compliance gate screens the connected wallet (and, for smart-account payments, the parent EOA as well).
3. If the screening **passes**, the payment continues normally.
4. If the screening **fails**, the secure payment page shows a policy-failure view and the payer cannot reach the sign step.
<Steps>
<Step title="Payer opens your payment link" />
<Step title="Wallet screening">
Before the payment options view loads, Request Network's compliance gate screens the connected wallet (and, for smart-account payments, the parent EOA as well).
</Step>
<Step title="Screening passes">
The payment continues normally.
</Step>
<Step title="Screening fails">
The secure payment page shows a policy-failure view and the payer cannot reach the sign step.
</Step>
</Steps>

Context Used: AGENTS.md (source)

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant