> ## 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.

# 启用 Travel Rule 出站计费 - 免费加入

> 在 Didit 管理 API 中为工作区开启出站 Travel Rule 计费功能，即打开工作区的出站 Travel Rule 计费开关。



启用出站计费 API 提示词
        将提示词复制到剪贴板



      
      

\<pre>

\``Turns outbound Travel Rule billing on for the workspace. Receiving stays free. This cannot be turned back off through the API: contact Didit support.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/workspace/billing/

Authentication:
Use the x-api-key header with the API key returned when the account was created.

Request body (application/json):
\{"enabled": true}

Failure modes:
\- 400 - `enabled` was false.
\- 404 - This application did not join free, so it has no free workspace.

Guide: /transaction-monitoring/travel-rule-interoperability#email-pickup.``

\</pre>



      
      

粘贴到



## OpenAPI

````yaml zh/openapi-25.json POST /v3/travel-rule/workspace/billing/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 身份证件验证 API。使用 x-api-key 请求头进行身份验证。
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/workspace/billing/:
    post:
      tags:
        - Travel Rule
      summary: 启用出站计费
      description: 为工作区开启出站 Travel Rule 计费。接收仍然免费。此设置无法通过 API 关闭：请联系 Didit 支持团队。
      operationId: enableTravelRuleWorkspaceBilling
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleWorkspaceBillingRequest'
            example:
              enabled: true
      responses:
        '200':
          description: 已设置 `billing_enabled` 为 true 的工作区。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWorkspace'
        '400':
          description: '`enabled` 为 false。'
        '404':
          description: 此应用未加入免费额度，因此没有免费工作区。
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/workspace/billing/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"enabled": true}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.workspace.enable_billing(
                enabled=True,
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.travelRule.workspace.enableBilling({
              enabled: true,
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.Workspace.EnableBilling(ctx, didit.TravelRuleWorkspaceBillingRequest{\n\tEnabled: didit.Bool(true),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.TravelRuleWorkspaceBillingRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().workspace().enableBilling(TravelRuleWorkspaceBillingRequest.builder()
                    .enabled(true)
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->travelRule->workspace->enableBilling([
                'enabled' => true,
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.travel_rule.workspace.enable_billing(enabled: true)
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.TravelRule.Workspace.EnableBillingAsync(new
            TravelRuleWorkspaceBillingRequest

            {
                Enabled = true,
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TravelRuleWorkspaceBillingRequest:
      type: object
      properties:
        enabled:
          type: boolean
          default: true
          description: 仅接受 `true`：无法通过 API 重新关闭出站计费。
    TravelRuleWorkspace:
      type: object
      description: 免费加入的应用所享有的免费 Travel Rule 工作区。
      properties:
        joined_free:
          type: boolean
        work_email:
          type: string
          format: email
        joined_at:
          type: string
          format: date-time
          nullable: true
        claim:
          type: object
          properties:
            status:
              type: string
              enum:
                - unclaimed
                - pending_review
                - claimed
                - rejected
            proved_by_domain:
              type: boolean
            claimed_at:
              type: string
              format: date-time
              nullable: true
            reviewed_at:
              type: string
              format: date-time
              nullable: true
            review_note:
              type: string
            vasp_id:
              type: string
              format: uuid
              nullable: true
            vasp_name:
              type: string
        prefill:
          type: object
          description: >-
            取自目录条目的个人资料值：`vasp_id`、`legal_name`、`lei`、`jurisdiction`、`compliance_email`、`domains`。在发起认领之前不会写入任何内容。
        domain:
          type: object
          properties:
            domain:
              type: string
            status:
              type: string
              enum:
                - unverified
                - code_sent
                - verified
            verified_at:
              type: string
              format: date-time
              nullable: true
            txt:
              $ref: '#/components/schemas/TravelRuleWorkspaceTxtRecord'
        billing_enabled:
          type: boolean
          description: 接收 Travel Rule 数据是免费的。仅在启用计费后，发送数据才会收取费用。
        billing_enabled_at:
          type: string
          format: date-time
          nullable: true
        didit_network:
          type: object
          description: Didit 网络中是否列出了此 VASP；如果未列出，则包含其仍未满足的各项条件。
        settings:
          $ref: '#/components/schemas/TravelRuleSettingsDetail'
    TravelRuleWorkspaceTxtRecord:
      type: object
      description: 为 DNS 证明而发布的 TXT 记录。在证明启动前为空。
      properties:
        host:
          type: string
          example: didit-tr-verify.example.com
        value:
          type: string
    TravelRuleSettingsDetail:
      type: object
      properties:
        is_enabled:
          type: boolean
          description: 此应用上出向 `travelRule` 交易的托管 Travel Rule 协商流程是否处于活动状态。
        jurisdiction:
          type: string
          maxLength: 8
          description: >-
            您的 VASP 运营管辖区代码。默认为 `"EU"`。Didit 会将其映射到标记在您 Travel Rule 交易上的规管机制
            `travel_rule_regime`（例如 `EU` 或欧盟成员国代码将变为 `eu`），交易规则可据此进行匹配。一旦 Didit
            网络列出您的资料，其他 Didit 客户将在 VASP 目录中将其视为您的管辖区。
        name_matching_strictness:
          type: string
          enum:
            - NONE
            - STRICT
            - CONTAINS
            - DEFAULT
            - FUZZY
          description: >-
            转账达到 COMPLETED 状态前，收款人姓名必须匹配的严格程度。`CONTAINS`
            接受一个名称的所有词均出现在另一个名称中的情况。
        confirmation_timeout_hours:
          type: integer
          minimum: 1
          description: AWAITING_COUNTERPARTY 状态的转账在被定期清理程序过期前可保持未确认的小时数。默认为 48。
        timeout_outcome:
          type: string
          enum:
            - HOLD
            - REJECT
            - PROCEED
          description: >-
            转账过期时对底层交易的处理方式。默认值为 HOLD。当 sunrise_policy 和 non_responsive_policy
            适用且已设置时，以它们为准。
        threshold_amount:
          type: string
          description: >-
            十进制字符串，以您应用的默认货币计。触发托管交换的最低转账金额；低于该金额的转账直接解析为 NOT_APPLICABLE。Didit
            会比对换算为您默认货币后的交易金额，或您发送的
            `amount_in_default_currency`；当无可用的换算金额时，该阈值不适用。默认为 "0.00"（欧盟 TFR
            不适用最低金额限制）。
        ownership_validation_mode:
          type: string
          enum:
            - FULL
            - SIMPLIFIED
            - AUTOMATED
          description: >-
            钱包所有权所需的证明力度。`FULL`
            始终需要证明（签名消息、测试存款或经过审核的截图），绝不单凭终端用户的陈述。`SIMPLIFIED` 在低于
            `simplified_validation_threshold` 时接受自主声明，高于该阈值时需要证明。`AUTOMATED`
            允许地址簿和先前的证明自行响应，当 `allow_self_declaration` 为 true 时包含自主声明。默认值为
            `AUTOMATED`。
        simplified_validation_threshold:
          type: string
          description: >-
            十进制字符串，默认为 "0.00"。在 `SIMPLIFIED`
            模式下，低于此金额（以阈值货币计）的转账接受自主申报。未标明该货币金额的转账视为高于该金额。
        data_sharing_fields:
          $ref: '#/components/schemas/TravelRuleDataSharingFields'
        matching_rules:
          $ref: '#/components/schemas/TravelRuleMatchingRules'
        legal_name:
          type: string
          description: 您的 VASP 法定名称。将 is_enabled 设为 true 时必填（非空）。
        lei:
          type: string
          description: 您的法人实体标识符（LEI），展示在 VASP 名录中。
        compliance_email:
          type: string
          format: email
          description: >-
            您 VASP 档案的合规联系人邮箱。只有在通过邮件发送的链接（POST
            /v3/travel-rule/settings/compliance-email/confirmation/）确认该地址后，Didit
            网络才会列出您的档案；更改此地址需要重新确认。
        is_discoverable:
          type: boolean
          description: >-
            您的 VASP 资料是否可以在 Didit 网络中被列出：可被其他 Didit 客户在 GET
            /v3/travel-rule/vasps/ 中检索到，并可通过 INTERNAL 轨道触达。列出还需要拥有已上线应用、开启
            Travel Rule、提供法定名称以及经过确认的合规邮箱；didit_network 会指出缺少哪些项。默认值为 true。
        inbound_auto_accept:
          type: boolean
          description: >-
            为 true 时，如果入账 TRP 问询的收款人钱包是地址簿中经过验证且姓名匹配的条目，则该问询会自动获批。为 false
            时，该问询将在 ON_HOLD 中等待您通过所有权 endpoint 进行批准或拒绝。INTERNAL 轨道和充值后转账不受影响。默认为
            true。
        allow_self_declaration:
          type: boolean
          description: 为 true 时，钱包所有权小组件提供自我声明作为备用证明方式。默认为 true。
        allow_screenshot_proof:
          type: boolean
          description: 为 true 时，钱包所有权小组件提供屏幕截图上传作为所有权证明方式。默认为 true。
        auto_wallet_verification:
          type: boolean
          description: >-
            为 true 时，提交需要终端用户提供钱包控制证明的出账 Travel Rule
            转账会自动生成绑定到该交易的钱包所有权小组件会话，并将其放入交易的 action_required 块中。默认为 true。
        vasp_attribution_enabled:
          type: boolean
          description: >-
            为 true 时，任何无法由任何轨道路由的出账 Travel Rule 转账都将通过区块链分析进行归因：目标钱包将解析为其所属的
            VASP，该实体将记录在转账和 VASP 目录中，并且轨道将使用归因名称重新运行一次。默认为 true。
        counterparty_screening_enabled:
          type: boolean
          description: >-
            对交易对手 VASP 进行可选的制裁和负面新闻筛查，按企业 AML 筛查价格按次计费。开启后，Didit
            会筛查出站交易所触达的交易对手（复用 30 天内的筛查结果），您也可以使用 POST
            /v3/travel-rule/vasps/{vasp_id}/screening/ 对其进行筛查。默认为
            false：不进行任何筛查或计费。
        sunrise_policy:
          type: string
          enum:
            - ''
            - HOLD
            - REJECT
            - PROCEED
          description: >-
            当交易对手是 sunrise_jurisdictions 中尚未强制实施 Travel Rule
            的司法管辖区目录条目时，过期转账对其交易的处理方式：HOLD 将其移至审核，REJECT 将其拒绝，PROCEED
            保持其状态不变。留空（默认值）则遵循 timeout_outcome。在 non_responsive_policy 之前生效。
        sunrise_jurisdictions:
          type: array
          items:
            type: string
          readOnly: true
          description: >-
            只读。Didit 视为处于 Travel Rule 日出期的国家/地区（ISO 3166 alpha-2），在此期间适用
            sunrise_policy。目前包括 CO、KH 和 VN。任何其他司法管辖区，以及为空或未知的管辖区，均遵循
            timeout_outcome。
        non_responsive_policy:
          type: string
          enum:
            - ''
            - HOLD
            - REJECT
            - PROCEED
          description: >-
            当交易对手是响应状态为 UNRESPONSIVE 的目录条目时，过期转账对其交易的处理方式：HOLD、REJECT 或
            PROCEED（与 timeout_outcome 相同）。留空（默认值）则遵循
            timeout_outcome。当两者均符合条件时，sunrise_policy 优先适用。
        travel_address:
          type: string
          description: >-
            只读。您所在 VASP 专属的 Travel Address，即其他 VASP 用于联系您的编码入站 TRP 查询 endpoint。当
            `is_enabled` 为 false 时为空。
        disabled_networks:
          type: array
          items:
            type: string
            enum:
              - GTR
              - TRUST
              - VERIFYVASP
              - SYGNA
          description: 已选择退出平台成员资格的网络。这不会停用您已关联的自有成员资格，也不会配置不可用的网络。
          default: []
        networks:
          type: object
          readOnly: true
          description: >-
            按网络列出：此应用将如何发送以及为何无法发送。默认不包含任何网络（包括 GTR）：网络可通过您自己已连接的成员资格访问，或者在
            Didit 在该网络上的成员资格生效且您自己在该网络上的参与方处于活跃状态后，通过 Didit
            的成员资格访问。非实时健康状态或投递检查。
          properties:
            gtr:
              $ref: '#/components/schemas/TravelRuleNetworkState'
            trust:
              $ref: '#/components/schemas/TravelRuleNetworkState'
            verifyvasp:
              $ref: '#/components/schemas/TravelRuleNetworkState'
            sygna:
              $ref: '#/components/schemas/TravelRuleNetworkState'
        didit_network:
          type: object
          readOnly: true
          description: >-
            Didit 网络是否收录了您的 VASP 资料（以便其他 Didit 客户能在名录中找到并能通过 INTERNAL
            轨道联系到它），以及其目前仍欠缺的各项条件。
          properties:
            listed:
              type: boolean
            missing:
              type: array
              items:
                type: string
                enum:
                  - travel_rule_off
                  - sandbox_application
                  - not_discoverable
                  - legal_name_missing
                  - compliance_email_missing
                  - compliance_email_unconfirmed
                  - excluded_by_staff
                  - internal_organization
              description: >-
                列出时为空。compliance_email_unconfirmed：使用 POST
                /v3/travel-rule/settings/compliance-email/confirmation/
                发送确认邮件并打开邮件中的链接。excluded_by_staff：Didit 已将该应用标记为测试、演示或内部应用。
            compliance_email_confirmed:
              type: boolean
              description: 当前的 compliance_email 是否已通过邮件中的链接确认。
    TravelRuleDataSharingFields:
      type: object
      description: >-
        Didit 就您自己的用户按实体类型向交易对手 VASP 发送的字段。无论列表内容如何，始终会发送 `name` 和
        `wallet_address`。您未选择过的实体类型将共享所有字段。空列表也是一种选择：仅共享姓名和钱包。
      properties:
        individual:
          type: array
          items:
            type: string
            enum:
              - name
              - wallet_address
              - address
              - national_id
              - customer_identification
              - date_of_birth
              - place_of_birth
          description: 共享的自然人字段。
        company:
          type: array
          items:
            type: string
            enum:
              - name
              - wallet_address
              - address
              - national_id
              - customer_identification
          description: 共享的法人字段。
    TravelRuleMatchingRules:
      type: object
      description: >-
        按实体类型，交易对手数据的各个字段与您持有的数据进行比对的严格程度。省略的字段将保留其默认值。`NONE` 跳过比对，`STRICT`
        要求词语完全一致，`CONTAINS` 接受一个值的所有词均出现在另一个值中，`DEFAULT` 为标准子集匹配，`FUZZY`
        接受相近的拼写（对于出生日期，允许日和月调换）。
      properties:
        individual:
          type: object
          description: 自然人规则。
          properties:
            name:
              type: string
              enum:
                - NONE
                - STRICT
                - CONTAINS
                - DEFAULT
                - FUZZY
              description: 默认：遵循 `name_matching_strictness`。
            date_of_birth:
              type: string
              enum:
                - NONE
                - STRICT
                - CONTAINS
                - DEFAULT
                - FUZZY
              description: 默认为 `NONE`。
            address:
              type: string
              enum:
                - NONE
                - STRICT
                - CONTAINS
                - DEFAULT
                - FUZZY
              description: 默认为 `NONE`。
            account:
              type: string
              enum:
                - NONE
                - STRICT
                - CONTAINS
                - DEFAULT
                - FUZZY
              description: 交易所路由经过的钱包。默认值为 `STRICT`。
        company:
          type: object
          description: 法人规则。
          properties:
            name:
              type: string
              enum:
                - NONE
                - STRICT
                - CONTAINS
                - DEFAULT
                - FUZZY
              description: 默认：遵循 `name_matching_strictness`。
            address:
              type: string
              enum:
                - NONE
                - STRICT
                - CONTAINS
                - DEFAULT
                - FUZZY
              description: 默认为 `NONE`。
            account:
              type: string
              enum:
                - NONE
                - STRICT
                - CONTAINS
                - DEFAULT
                - FUZZY
              description: 交易所路由经过的钱包。默认值为 `STRICT`。
    TravelRuleNetworkState:
      type: object
      description: 该应用在特定网络上将如何发送 Travel Rule 消息，以及无法发送的原因。此项为配置状态，并非实时健康状态或投递检查。
      properties:
        rail:
          type: string
          enum:
            - GTR
            - TRUST
            - VERIFYVASP
            - SYGNA
        mode:
          type: string
          enum:
            - own
            - didit
            - 'off'
            - unavailable
          description: >-
            own：使用应用已关联的成员资格；didit：Didit 的成员资格将该应用作为自身有效参与者接入；off：在
            disabled_networks 中禁用了平台路由，且无自身成员资格；unavailable：目前无法在此网络上发送任何内容（参见
            state 和 reason）。
        state:
          type: string
          enum:
            - own_membership
            - live_through_didit
            - 'off'
            - didit_onboarding
            - questionnaire_needed
            - questionnaire_in_review
            - request_access
            - request_sent
            - unavailable
            - error
          description: >-
            own_membership：通过您关联的成员资格发送；live_through_didit：通过 Didit
            成员资格下的专属参与者发送；off：您关闭了平台路由；didit_onboarding：Didit
            自身在该网络上的成员资格尚未生效，因此无法接入任何人；questionnaire_needed /
            questionnaire_in_review：尽职调查问卷必须提交或正在由 Didit
            审核；request_access：问卷已通过，可申请接入网络；request_sent：您的参与者正在入驻中；unavailable：参见
            reason；error：参见 reason。
        reason:
          type: string
          enum:
            - own_membership_connected
            - platform_network_switched_off
            - own_membership_only
            - sandbox_application
            - didit_membership_not_live
            - participant_suspended
            - participant_rejected
            - questionnaire_not_submitted
            - questionnaire_submitted
            - questionnaire_changes_requested
            - questionnaire_rejected
            - participant_not_requested
            - participant_active
            - participant_key_missing
            - participant_key_unresolved
            - provisioning_failed
            - questionnaire_pending
            - submitted_to_network
          description: >-
            状态的机器可读详情。own_membership_only：Didit
            在此网络（TRUST）上不承载应用，请连接您自己的成员资格；sandbox_application：沙盒转账绝不会送达网络；provisioning_failed：网络拒绝了注册，参与者的
            last_error 指明了原因，再次请求该网络将重试。
        platform_available:
          type: boolean
          description: Didit 自身在该网络中的成员身份是否已配置；并非实时健康状态检查。
        connected:
          type: boolean
          description: 是否存在已连接的客户成员身份。凭证在本地进行验证；网络验证则在实时交互中进行。
        participant:
          $ref: '#/components/schemas/TravelRuleNetworkParticipantSummary'
        vasps_reachable:
          type: integer
          description: 在此网络上可达的目录中的 VASP。
        routed_30d:
          type: integer
          description: 过去 30 天内该应用在此网络上进行的转账。
    TravelRuleNetworkParticipantSummary:
      type: object
      nullable: true
      description: 该应用自身在该网络上的参与者，若无则为 null。
      properties:
        mode:
          type: string
          enum:
            - platform
            - own
          description: platform：由 Didit 的成员资格承载；own：在应用自身的成员资格下入驻。
        status:
          type: string
          enum:
            - not_requested
            - questionnaire_pending
            - submitted_to_network
            - active
            - suspended
            - rejected
          description: >-
            not_requested：从未请求过，或网络拒绝了首次请求（参见
            last_error）；questionnaire_pending：等待尽职调查问卷审核通过；submitted_to_network：已提交至网络入驻流程；active：网络已为该应用分配专属参与者代码；suspended
            / rejected：Didit 已暂停或拒绝该请求。
        participant_code:
          type: string
          description: 网络分配给此应用的代号（对于 GTR，为其 VASP 代号）。出站消息携带此代号，绝不携带 Didit 自身的代号。
        requested_at:
          type: string
          format: date-time
          nullable: true
        activated_at:
          type: string
          format: date-time
          nullable: true
        last_error:
          type: string
          description: 网络拒绝注册时的答复；其他情况下为空。
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        您的应用 API 密钥，可在 Business Console 的“开发者 -> API
        密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域：针对每个资源设为无权限、只读或读写，限定于特定工作流或已通过的会话、限定于
        IP 地址列表，以及设置到期日期。401 表示密钥错误、已撤销或已过期；403 表示未发送密钥、密钥无权访问该资源或操作，或请求来自其 IP
        列表之外的地址；在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF
        URL 将为 null；没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅
        https://docs.didit.me/console/api-keys。

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.