Skip to main content

Proof of Source of Funds (PoSoF)

Proof of Source of Funds (PoSoF) entitlements allow users to increase their deposit limits by providing verifiable documentation regarding the origin of their funds.

By default, all onboarded accounts have a basic deposit limit (Level 1). To upgrade to higher tiers, users must undergo a PoSoF verification process involving manual compliance review.


Entitlement Summary

FieldValueDescription
Nameposof_level_2, posof_level_3 (Person)The per-level system names used to trigger Person upgrades. Corporates have a single PoSoF entitlement with no level in the name (see Corporate PoSoF).
Applies ToPerson, CorporateFor Persons, upgrades are triggered by you via the API. For Corporates, PoSoF is triggered by DLT's compliance team (see Corporate PoSoF).
Prerequisites1. Onboarded: The entity must have completed KYC/KYB Onboarding.
OutcomeThe account's PoSoF tier is updated. The final tier is decided by compliance and returned in the completion webhook.

PoSoF Tiers

LevelDescriptionVerification Type
Level 1Basic tier granted upon successful onboarding. For Corporates, the initial level is derived automatically from the onboarding risk assessment.Automated
Level 2Increased deposit limits.Manual Review
Level 3Maximum deposit limits.Manual Review

High-Level Workflow

The PoSoF process follows the standard Entitlement Trigger Flow. Unlike the automated Level 1 checks, higher tiers involve a manual review by the compliance team.

  1. Trigger: Initiate the upgrade request via POST /persons/{id}/entitlement_triggers using the desired level's name (posof_level_2 or posof_level_3).
  2. Initial Requirements: The system issues a requirementsQuestionnaire webhook (Reason: posof_level_upgrade). The user must provide information about their wealth and upload supporting documents.
  3. Manual Review & Additional Information Loop: A compliance officer reviews the submission.
    • Iterative Requests: If the documents are unclear or more detail is needed, the officer can trigger a new requirements loop.
    • Notification: Your application will receive a new requirementsQuestionnaire webhook (Reason: posof_level_upgrade).
  4. Final Decision: The compliance officer makes the final determination on the account's tier.
  5. Completion: The workflow concludes with an entitlementCompleted webhook.

Upgrade Rules

Direct Upgrades

Users are not required to follow a linear progression (Level 1 → Level 2 → Level 3). A user currently at Level 1 can trigger Level 3 directly if they have the necessary documentation to support the higher limit.

Compliance Decision & Agent Discretion

When a user triggers an upgrade (e.g., Level 3), the compliance team evaluates all provided documents. The compliance officer has the final say on the granted level. Even if a user requests Level 3, the officer may determine that only Level 2 is appropriate based on the documentation.

The actual level granted is communicated via the entitlementCompleted webhook payload:

{
"notification_type": "entitlementCompleted",
"details": {
"posof_level": "Level 2"
}
}

Corporate PoSoF

For Corporates there are no per-level entitlements - a single PoSoF entitlement covers the review, and the compliance officer decides the granted level at the end. The review is triggered by DLT's compliance team, not via the partner API. The rest of the flow matches the retail process, with these specifics:

  1. Start: You receive an entitlementStarted webhook (owner_type: corporate) when the review begins.

  2. Account Locking: The system may apply withdrawal, trading, and/or funding locks for the duration of the review, announced via the applyWithdrawalLock/applyTradingLock/applyFundingLock notifications. Released locks are announced with the corresponding release...Lock events.

  3. Requirements: A requirementsQuestionnaire webhook (Reason: posof_level_upgrade) requests the source-of-funds information. Submit responses via POST /corporates/{corporate_id}/questionnaires/{questionnaire_id}/response.

  4. Completion: The review always concludes with an entitlementCompleted webhook carrying the compliance decision - posof_upgraded (Accepted/Rejected) and the granted level:

    {
    "notification_type": "entitlementCompleted",
    "details": {
    "posof_upgraded": "Accepted",
    "posof_level": "Level 2"
    }
    }
    Rejection also arrives as entitlementCompleted

    A rejected corporate PoSoF review is delivered as entitlementCompleted with "posof_upgraded": "Rejected" and "posof_level": null - no entitlementFailed webhook is sent. Evaluate posof_upgraded, not just the notification type.

The corporate's initial PoSoF level is assigned automatically during KYB Onboarding, derived from the onboarding risk assessment.


Workflow Diagram