> ## 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 عبر البريد الإلكتروني

> قبول أو رفض تبادل Travel Rule من رابط استلام بريد إلكتروني لمرة واحدة، مع تقديم اسم المستفيد لمطابقة اسم المُرسِل في Didit.



موجّه الرد على Email Pickup API
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\`Accept or decline a pending Travel Rule exchange from a one-time email pickup link - the counterparty-facing side of Didit's EMAIL fallback rail.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/pickup/{token}/respond/

Authentication:
None - the one-time link token is the credential.

Request body (application/json):
\{"decision": "accept", "beneficiary_name": "Carlos Ruiz"}
or
\{"decision": "decline", "decline_reason": "not_our_customer"}

Optional fields:
\- ivms_response - your full IVMS 101 response (up to 16384 characters); its beneficiary name wins over beneficiary_name.
\- beneficiary_name - up to 255 characters.
\- decline_reason - data_mismatch | not_our_customer | wallet_not_hosted | sanctions | risk_appetite | jurisdiction | insufficient_data | other, or empty (the default) for no reason.
\- decline_detail - up to 512 characters; required when decision is decline and decline_reason is other.
\- contact - the contact the link was sent to, as a UUID; when the body leaves it out, the contact query parameter (the link's ?contact= value) is used.

Behavior:
\- accept - the beneficiary name is run through the originator's name rule: the transfer moves to COMPLETED on a match, COUNTERPARTY_MISMATCHED_DATA otherwise. Supply the name exactly as your records hold it. The response is {"status": "..."}.
\- decline - the transfer moves to COUNTERPARTY_VASP_GENERAL_DECLINE, and the sender's timeline records the reason. The response is {"status": "COUNTERPARTY_VASP_GENERAL_DECLINE", "decline_reason": "..."}.
\- You can answer once: afterwards both pickup endpoints return 410.

Failure modes:
\- 404 - unknown token.
\- 410 - the window closed: the counterparty already answered, the transfer left AWAITING_COUNTERPARTY, or the pickup deadline passed.
\- 400 - decision is missing or is not accept or decline, decline_detail is missing for a decline with reason other, ivms_response is not an IVMS 101 object or is too long, or a contact in the body is not a UUID ({"contact": ["Must be a valid UUID."]}).

Counterparty integration guide: /transaction-monitoring/travel-rule-interoperability#email-pickup.`

\</pre>



      
      

الصق في



## OpenAPI

````yaml ar/openapi-25.json POST /v3/travel-rule/pickup/{token}/respond/
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/pickup/{token}/respond/:
    post:
      tags:
        - Travel Rule
      summary: الرد على عملية استلام عبر مسار البريد الإلكتروني
      description: >-
        عام وغير مصادق عليه. يقبل التبادل أو يرفضه من رابط الاستلام المرسل عبر
        البريد الإلكتروني. عند القبول، يتم فحص beneficiary_name مقابل سياسة
        name_matching_strictness الخاصة بالمُرسِل.
      operationId: respondTravelRulePickup
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
        - name: contact
          in: query
          required: false
          schema:
            type: string
          description: >-
            قيمة `?contact=` الخاصة بالرابط. تُستخدم عندما لا يرسل نص الطلب أي
            `contact`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRulePickupRespondRequest'
            example:
              decision: accept
              beneficiary_name: Carlos Ruiz
      responses:
        '200':
          description: >-
            حالة التبادل الناتجة: COMPLETED أو COUNTERPARTY_MISMATCHED_DATA بعد
            القبول، أو COUNTERPARTY_VASP_GENERAL_DECLINE بعد الرفض، والتي تعكس
            أيضاً `decline_reason`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  decline_reason:
                    type: string
                    description: موجود بعد الرفض.
              examples:
                accepted:
                  value:
                    status: COMPLETED
                declined:
                  value:
                    status: COUNTERPARTY_VASP_GENERAL_DECLINE
                    decline_reason: not_our_customer
        '400':
          description: >-
            حقل غير صالح: على سبيل المثال، `decision` مفقود أو لا يحمل القيمة
            `accept` أو `decline`، أو `decline_detail` مفقود في حالة الرفض مع
            `decline_reason: other`، أو `ivms_response` ليس كائن IVMS 101 أو
            أطول من 16384 حرفاً، أو `contact` في نص الطلب ليس بصيغة UUID
            (`{"contact": ["Must be a valid UUID."]}`).
          content:
            application/json:
              example:
                decline_detail:
                  - Say what the reason is when you choose another reason.
        '404':
          description: token غير معروف.
        '410':
          description: >-
            أُغلقت النافذة: استجاب الطرف المقابل بالفعل، أو غادر التحويل حالة
            AWAITING_COUNTERPARTY، أو انقضى الموعد النهائي.
      security:
        - {}
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/pickup/{token}/respond/
            \
              -H 'Content-Type: application/json' \
              -d '{"decision": "accept", "beneficiary_name": "Carlos Ruiz"}'
components:
  schemas:
    TravelRulePickupRespondRequest:
      type: object
      required:
        - decision
      properties:
        decision:
          type: string
          enum:
            - accept
            - decline
        beneficiary_name:
          type: string
          description: >-
            اسم المستفيد كما هو مدون في سجلاتك، بعد معالجته وفق قاعدة الاسم
            الخاصة بـ VASP المُرسِل. تكون الأولوية لـ `ivms_response` عندما يحدد
            اسم المستفيد.
          maxLength: 255
        decline_reason:
          type: string
          enum:
            - ''
            - data_mismatch
            - not_our_customer
            - wallet_not_hosted
            - sanctions
            - risk_appetite
            - jurisdiction
            - insufficient_data
            - other
          description: >-
            سبب رفضك. يُسجّل في الجدول الزمني للتحويل لدى VASP المُرسِل. فارغ
            (الافتراضي) عندما لا تقدم سبباً.
        decline_detail:
          type: string
          maxLength: 512
          description: >-
            نص حر؛ مطلوب عندما يكون `decision` هو `decline` ويكون
            `decline_reason` هو `other`.
        ivms_response:
          type: object
          description: >-
            استجابة IVMS 101 الكاملة الخاصة بك. اسم المستفيد فيها له الأولوية
            على `beneficiary_name`.
        contact:
          type: string
          format: uuid
          description: >-
            جهة الاتصال التي أُرسل الرابط إليها، من قيمة `?contact=` الخاصة
            بالرابط. عندما لا يوردها نص الطلب، يُستخدم معامل الاستعلام
            `contact`.

````

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