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

# فحص الحساب المصرفي API: التحقق من حساب صرف المدفوعات

> تحقّق عبر Didit من أن الحساب المصرفي يعود إلى الشخص أو الشركة التي تحددها، قبل أن ترسل الأموال إليه. لا يتطلب جلسة ولا تسجيل دخول.

> [!NOTE]
>
> في بيئة الإنتاج، يعمل فحص الحساب في نيجيريا وغانا وكينيا.
> أي دولة أخرى ترد بالرمز `404` مع `code: country_not_covered` ولا يُحتسب عليها أي رسوم.
> تُضاف دول أخرى مع الوقت، و[أسعار التحقق المصرفي](https://docs.didit.me/ar/getting-started/bank-verification-pricing.md) تعرض دائمًا ما تقدمه كل دولة اليوم.

يرسل الخادم الخلفي لتطبيقك الاسم والحساب ويقرأ النتيجة. وهو [فحص الحساب](https://docs.didit.me/ar/core-technology/bank-verification/account-check.md) ضمن خطوة التحقق المصرفي، من دون الشخص نفسه.

## أرسل الحساب بالصيغة التي تكتبه بها دولته

| الدولة | `account` |
| - | - |
| الدول التي تستخدم IBAN | `{"iban": "..."}` |
| المملكة المتحدة | `{"sort_code": "...", "account_number": "..."}` |
| الولايات المتحدة | `{"routing_number": "...", "account_number": "..."}` |
| كندا | `{"transit_institution": "...", "account_number": "..."}` |
| أستراليا | `{"bsb": "...", "account_number": "..."}` |
| الهند | `{"ifsc": "...", "account_number": "..."}` |
| نيجيريا | `{"bank_code": "...", "account_number": "..."}`، مع رمز NIP المكوّن من 6 أرقام للبنك (Access Bank رمزه `000014`) ورقم NUBAN المكوّن من 10 أرقام |
| غانا | `{"bank_code": "...", "account_number": "..."}`، مع الرمز المكوّن من 3 أحرف للبنك (GCB Bank رمزه `GCB`) |
| كينيا | `{"bank_code": "...", "account_number": "..."}`، مع الرمز المكوّن من رقمين للبنك (KCB رمزه `01`) |
| المكسيك | `{"clabe": "..."}` |
| الأرجنتين | `{"cbu_cvu": "..."}` |

تطلب بعض الدول أيضًا `bic`، وتطلب للحسابات التجارية `registration_id`. تُتجاهل المسافات والشرطات والنقاط. يؤدي عدم إرسال أي مفتاح يحتاجه فحص الدولة إلى استجابة `400` تذكر المفتاح المفقود، مثل `"field": "account.bank_code", "reason": "required"`.

أرسل `holder.full_name` لفحص حساب شخص، أو `holder.business_name` لفحص حساب شركة.

## أرسل موافقة صاحب الحساب

في بعض الدول يتطلب فحص الحساب موافقة صريحة من صاحب الحساب قبل كل فحص.
اطلب هذه الموافقة داخل منتجك، ثم أرسل `"consent": true`.
من دونها يُرفض الفحص في تلك الدول بالخطأ `400` (`field: consent`, `reason: required`) ولا يُحتسب عليه أي رسوم.
في الدول الأخرى تكون `consent` اختيارية، وعند إرسالها يسجّلها Didit مع رسوم الفحص.
يطلب مفتاح البيئة التجريبية الموافقة في الدول نفسها التي يطلبها فيها مفتاح الإنتاج.

## اقرأ النتيجة

| `result` | المعنى | الخطوة التالية المعتادة |
| - | - | - |
| `match` | يحتفظ البنك بالحساب باسم أرسلته. | أرسل الأموال. |
| `close_match` | يحتفظ البنك بالحساب باسم قريب. `holder_name` هو هذا الاسم، عندما يعيده البنك. | قارن `holder_name`، أو اطلب من الشخص التأكيد. |
| `no_match` | يحتفظ البنك بالحساب باسم آخر، أو لا يوجد حساب بهذا الرقم. | لا ترسل الأموال. |
| `cannot_verify` | أجاب البنك دون مقارنة الاسم، مثلًا في حال كان الحساب محظورًا أو مغلقًا. | طبّق سياستك الخاصة، مثلًا اطلب حسابًا آخر. |

## الفوترة وإعادة المحاولة

تُحتسب رسوم كل فحص يرد عليه البنك مرة واحدة، بغض النظر عن النتيجة، بسعر [سعر فحص الحساب](https://docs.didit.me/ar/getting-started/bank-verification-pricing.md) في دولة الحساب. لا يُحتسب أي طلب يرد عليه بخطأ أبدًا: جسم طلب مرفوض (`400`)، أو عدم توفر رصيد (`402`)، أو حساب لا يتوفر له فحص بعد (`404`)، أو بنك تعذّر عليه الرد (`503`).

لا يوجد مفتاح idempotency ولا endpoint لقراءة الفحص مرة أخرى. يُنفّذ الطلب المُعاد فحصًا جديدًا بـ `request_id` جديد ويُحتسب مرة أخرى، لذا احفظ الاستجابة. لا يخزّن Didit إلا الرسوم، مع معرّف الطلب والدولة والنتيجة والحساب المُقنّع، ولا يخزّن الاسم ولا رقم الحساب الكامل أبدًا.

## جرّب في البيئة التجريبية

لا يتصل مفتاح API للبيئة التجريبية بأي بنك، ولا تُحتسب عليه رسوم. تحدد آخر 4 محارف من IBAN، وإن لم يوجد فآخر 4 أرقام من رقم الحساب، النتيجة:

| ينتهي بـ | النتيجة |
| - | - |
| `0001` | `close_match`، مع `holder_name` |
| `0002` | `close_match`، و`holder_name: null` |
| `0003`، `0006` | `no_match` |
| `0004` | `cannot_verify` |
| `0005` | `503`، `account_check_unavailable` |
| `0009` | `400`، `reason: rejected` |
| أي قيمة أخرى | `match` |

تحمل IBAN وCLABE وCBU أرقام تحقق، فاستخدم [قيم البيئة التجريبية](https://docs.didit.me/ar/core-technology/bank-verification/account-check.md#اختباره-في-البيئة-التجريبية) التي تجتاز كل فحوص التنسيق.

## الوصول

صادِق بالمفتاح `x-api-key` الخاص بتطبيقك، أو برمز Bearer لبيانات اعتماد العميل الخاصة به. يحتاج مفتاح API المحدد النطاق إلى صلاحية الكتابة على الجلسات. يشترك endpoint في حد الكتابة البالغ 300 طلب في الدقيقة لكل مفتاح API.


## OpenAPI

````yaml ar/openapi-25.json POST /v3/bank/account-check/
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/bank/account-check/:
    post:
      tags:
        - Standalone APIs
      summary: التحقق من حساب بنكي
      description: >-
        تحقق من أن الحساب البنكي يخص الشخص أو الشركة التي تحددها، قبل إرسال
        الأموال إليه. لا حاجة لجلسة أو تسجيل دخول: أرسل الاسم والحساب، واقرأ
        النتيجة. هذا هو [فحص
        الحساب](/ar/core-technology/bank-verification/account-check) الخاص بخطوة
        التحقق من البنك، ويتم تشغيله من واجهتك الخلفية.


        **ما ترسل.** حقل `country` الخاص بالحساب (ISO 3166-1 alpha-3)، وحقل
        `account` بالطريقة التي تكتبها بها تلك الدولة، واسم `holder`: إما
        `full_name` لشخص أو `business_name` لشركة. يتحقق اسم الشركة من حساب
        تجاري.


        **ما تتلقاه.** تكون قيمة `result` إما `match` أو `close_match` أو
        `no_match` أو `cannot_verify`. في حالة `close_match`، يكون `holder_name`
        هو الاسم الذي يحتفظ به البنك للحساب، عندما يُرجعه البنك. يعود `account`
        محجوباً باستثناء آخر 4 أحرف.


        **الفوترة.** تتم فوترة كل فحص يجيب عليه البنك مرة واحدة بسعر فحص الحساب
        الخاص بدولة الحساب، أياً كانت النتيجة: تتم أيضاً فوترة `no_match`،
        والحساب غير الموجود، و`cannot_verify`. لا تتم فوترة أي طلب يُجاب عليه
        بخطأ على الإطلاق.


        **كل طلب هو فحص جديد.** لا يوجد مفتاح idempotency ولا يوجد endpoint
        لقراءة الفحص مرة أخرى، لذا فإن أي طلب تتم إعادة المحاولة فيه يُنفَّذ
        وتتم فوترته مجدداً. احرص على تخزين الاستجابة.


        **البيئة التجريبية.** استخدم مفتاح API للبيئة التجريبية مع تفاصيل الحساب
        التجريبية. لا يستدعي مفتاح البيئة التجريبية أي بنك ولا تُفرض عليه أي
        رسوم. تحدد آخر 4 أحرف من رقم IBAN، أو من رقم الحساب، الإجابة: `0001`
        تُرجع `close_match` مع `holder_name`، و`0002` تُرجع `close_match` بدونه،
        و`0003` و`0006` تُرجعان `no_match`، و`0004` تُرجع `cannot_verify`،
        و`0005` تُرجع `503`، و`0009` تُرجع `400`. وأي نهاية أخرى تُرجع `match`.


        **مفاتيح API.** يحتاج مفتاح API ذو نطاق إلى إذن كتابة للجلسات.
      operationId: post_v3_bank_account_check
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankAccountCheckRequest'
            examples:
              Person, Nigeria:
                summary: رمز بنكي ورقم حساب، تم التحقق منهما مقابل اسم الشخص
                value:
                  country: NGA
                  account:
                    bank_code: '000014'
                    account_number: '0123450001'
                  holder:
                    full_name: Maria Oliveira
                  vendor_data: payout_20481
              Company, Nigeria:
                summary: رمز بنكي ورقم حساب، تم التحقق منهما مقابل اسم الشركة
                value:
                  country: NGA
                  account:
                    bank_code: '000014'
                    account_number: '0123456789'
                  holder:
                    business_name: Northwind Trading Ltd
      responses:
        '200':
          description: استجاب البنك. تتم فوترة الفحص، أياً كانت النتيجة.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCheckResponse'
              examples:
                Close match:
                  summary: يحتفظ البنك بالحساب تحت اسم مطابق تقريباً
                  value:
                    request_id: c2f4a9e0-7b1d-4c3a-9e55-1d0a6b8f2a47
                    result: close_match
                    holder_name: MARIA R OLIVEIRA
                    account: '****0001'
                    vendor_data: payout_20481
                    created_at: '2026-10-21T14:32:08Z'
                Match:
                  summary: يحتفظ البنك بالحساب تحت الاسم المُرسل
                  value:
                    request_id: 5b0e2d7c-41a8-4f6e-9c3b-8e7d1a2f6c90
                    result: match
                    holder_name: null
                    account: '****6789'
                    vendor_data: null
                    created_at: '2026-10-21T14:35:41Z'
        '400':
          description: >-
            مرفوض كما تم إرساله، وغير مفوتر. يحدد `field` حقل نص الطلب المطلوب
            تصحيحه ويوضح `reason` السبب، مع نفس الأسباب التي يعرضها نموذج الحساب
            المستضاف. يتم الإبلاغ عن الحقل المرفوض الأول فقط.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCheckError'
              examples:
                Missing field:
                  summary: يتطلب التحقق في هذه الدولة رمز البنك
                  value:
                    detail: The bank code is not valid (required).
                    code: invalid_account_input
                    field: account.bank_code
                    reason: required
                Invalid IBAN:
                  summary: طول رقم IBAN غير صحيح بالنسبة لدولته
                  value:
                    detail: The iban is not valid (length).
                    code: invalid_account_input
                    field: account.iban
                    reason: length
                Refused by the bank:
                  summary: رفض البنك الحساب كما أُرسل
                  value:
                    detail: The account was refused as typed (rejected).
                    code: invalid_account_input
                    field: account.account_number
                    reason: rejected
                No name:
                  summary: لا يحتوي `holder` على `full_name` ولا على `business_name`
                  value:
                    detail: >-
                      Send full_name for a person or business_name for a
                      company.
                    code: invalid_account_input
                    field: holder
                    reason: required
                Consent required:
                  summary: يتطلب التحقق من الحساب في هذه الدولة موافقة صاحب الحساب
                  value:
                    detail: >-
                      Account checks in this country need the account holder's
                      explicit consent. Ask for it, then send `consent=true`.
                    code: invalid_account_input
                    field: consent
                    reason: required
        '401':
          description: انتهت صلاحية مفتاح API محدد النطاق.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCheckError'
              examples:
                Expired key:
                  summary: انقضى تاريخ الانتهاء للمفتاح
                  value:
                    detail: This API key has expired.
        '402':
          description: >-
            لا يمكن دفع تكلفة الفحص، لذا لم يتم تشغيله. اشحن رصيدك، ثم أرسله
            مجدداً.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCheckError'
              examples:
                Out of credit:
                  summary: لا يمكن لرصيدك تغطية عملية فحص واحدة
                  value:
                    detail: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
                    code: insufficient_credits
                Not in your contract:
                  summary: لا يتضمن عقدك سعراً لواجهة برمجة تطبيقات فحص الحساب
                  value:
                    detail: >-
                      Your contract does not price the Account check API.
                      Contact your account manager.
                    code: contract_rate_missing
        '403':
          description: >-
            رأس `x-api-key` أو bearer token مفقود أو غير صالح، أو أن الطلب ورد
            من عنوان خارج قائمة عناوين IP الخاصة بالمفتاح، أو أن مفتاحاً محدد
            النطاق لا يملك صلاحية كتابة للجلسات.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCheckError'
              examples:
                Missing or invalid credentials:
                  summary: لا يوجد مفتاح API أو token صالح
                  value:
                    detail: You do not have permission to perform this action.
                No sessions write:
                  summary: مفتاح ذو نطاق محدد دون إذن وصول للكتابة إلى الجلسات
                  value:
                    detail: This API key has no write access to sessions.
        '404':
          description: >-
            لا يوجد فحص حساب يدعم هذا الحساب حتى الآن، لذا لم يتم فحص أي شيء أو
            إصدار فاتورة بشأنه. `country_not_covered`: لا يوجد فحص يدعم دولته،
            أو نوع حسابه (فرد أو شركة) هناك. `bank_not_covered`: لا يوجد فحص
            يدعم بنكه.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCheckError'
              examples:
                Country not covered:
                  summary: لا يوجد فحص حساب يدعم الدولة
                  value:
                    detail: No account check serves this country yet.
                    code: country_not_covered
                Bank not covered:
                  summary: لا يوجد فحص حساب يدعم بنك الحساب
                  value:
                    detail: No account check serves this account's bank yet.
                    code: bank_not_covered
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
        '503':
          description: >-
            تعذر على البنك الاستجابة. لم يُفحص شيء ولم تتم فوترته؛ أعد إرسال
            الفحص لاحقاً.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCheckError'
              examples:
                Unavailable:
                  summary: لم يستجب البنك
                  value:
                    detail: >-
                      The account check is temporarily unavailable and this
                      request was not charged. Please try again.
                    code: account_check_unavailable
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/bank/account-check/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "country": "NGA",
                "account": {"bank_code": "000014", "account_number": "0123450001"},
                "holder": {"full_name": "Maria Oliveira"},
                "vendor_data": "payout_20481"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.bank.account_check(
                country="NGA",
                account={
                    "account_number": "0123450001",
                    "bank_code": "000014",
                },
                holder={
                    "full_name": "Maria Oliveira",
                },
                vendor_data="payout_20481",
            )
            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.bank.accountCheck({
              country: "NGA",
              account: {
                account_number: "0123450001",
                bank_code: "000014",
              },
              holder: {
                full_name: "Maria Oliveira",
              },
              vendor_data: "payout_20481",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Bank.AccountCheck(ctx, didit.BankAccountCheckRequest{\n\tCountry: \"NGA\",\n\tAccount: didit.BankAccountCheckRequestAccount{\n\t\tAccountNumber: didit.String(\"0123450001\"),\n\t\tBankCode:      didit.String(\"000014\"),\n\t},\n\tHolder: didit.BankAccountCheckHolder{\n\t\tFullName: didit.String(\"Maria Oliveira\"),\n\t},\n\tVendorData: didit.String(\"payout_20481\"),\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.BankAccountCheckHolder;

            import me.didit.types.BankAccountCheckPersonHolder;

            import me.didit.types.BankAccountCheckRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.bank().accountCheck(BankAccountCheckRequest.builder()
                    .country("NGA")
                    .account(BankAccountCheckRequest.Account.builder()
                            .accountNumber("0123450001")
                            .bankCode("000014")
                            .build())
                    .holder(BankAccountCheckHolder.ofBankAccountCheckPersonHolder(BankAccountCheckPersonHolder.builder()
                            .fullName("Maria Oliveira")
                            .build()))
                    .vendorData("payout_20481")
                    .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->bank->accountCheck([
                'country' => 'NGA',
                'account' => [
                    'account_number' => '0123450001',
                    'bank_code' => '000014',
                ],
                'holder' => [
                    'full_name' => 'Maria Oliveira',
                ],
                'vendor_data' => 'payout_20481',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.bank.account_check(
              country: "NGA",
              account: {
                account_number: "0123450001",
                bank_code: "000014",
              },
              holder: {
                full_name: "Maria Oliveira",
              },
              vendor_data: "payout_20481"
            )
            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.Bank.AccountCheckAsync(new
            BankAccountCheckRequest

            {
                Country = "NGA",
                Account = new()
                {
                    AccountNumber = "0123450001",
                    BankCode = "000014",
                },
                Holder = new()
                {
                    FullName = "Maria Oliveira",
                },
                VendorData = "payout_20481",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    BankAccountCheckRequest:
      type: object
      required:
        - country
        - account
        - holder
      properties:
        country:
          type: string
          minLength: 3
          maxLength: 3
          description: >-
            دولة الحساب، كرمز ISO 3166-1 alpha-3، على سبيل المثال `NGA`. تُقبل
            الأحرف الصغيرة.
          example: NGA
        account:
          type: object
          description: >-
            الحساب بالطريقة التي تكتبه بها دولته: إما `iban`، أو
            `account_number` مع رمز البنك أو الفرع الذي تتطلبه الدولة
            (`sort_code` أو `routing_number` أو `transit_institution` أو `bsb`
            أو `ifsc` أو `bank_code` أو `bic`). تتطلب المكسيك `clabe` وتتطلب
            الأرجنتين `cbu_cvu`، واللذان يحددان البنك بالفعل. يضيف حساب الشركات
            `registration_id` عندما تطلب الدولة ذلك. يتم تجاهل المسافات والشرطات
            والنقاط. يتم تجاهل المفاتيح التي لا يستخدمها فحص الدولة؛ وأي مفتاح
            تحتاجه ولم تحصل عليه يُرجع الخطأ `400` مع ذكر اسمه.
          properties:
            iban:
              type: string
              maxLength: 64
              description: رقم IBAN، في دولة تستخدم أرقام IBAN. يجب أن ينتمي إلى `country`.
            account_number:
              type: string
              maxLength: 64
              description: رقم الحساب، في دولة يُكتب فيها الحساب مع رمز بنك أو فرع منفصل.
            sort_code:
              type: string
              maxLength: 64
              description: 'المملكة المتحدة: رمز الفرز المكوّن من 6 أرقام.'
            routing_number:
              type: string
              maxLength: 64
              description: 'الولايات المتحدة: رقم التوجيه المالي ABA المكوّن من 9 أرقام.'
            transit_institution:
              type: string
              maxLength: 64
              description: 'كندا: رقم العبور والمؤسسة المكون من 8 أرقام.'
            bsb:
              type: string
              maxLength: 64
              description: 'أستراليا: رمز BSB المكون من 6 أرقام.'
            ifsc:
              type: string
              maxLength: 64
              description: 'الهند: رمز IFSC المكوّن من 11 حرفاً.'
            bank_code:
              type: string
              maxLength: 64
              description: رمز البنك، حيث تحتاج الدولة إلى ذلك، على سبيل المثال في نيجيريا.
            bic:
              type: string
              maxLength: 64
              description: رمز BIC الخاص بالبنك، حيث يتطلب فحص الدولة ذلك.
            clabe:
              type: string
              maxLength: 64
              description: >-
                المكسيك: رقم CLABE المكون من 18 رقمًا. وهو يحدد اسم البنك
                بالفعل.
            cbu_cvu:
              type: string
              maxLength: 64
              description: >-
                الأرجنتين: رقم CBU أو CVU المكون من 22 رقماً. وهو يحدد اسم البنك
                بالفعل.
            registration_id:
              type: string
              maxLength: 64
              description: رقم تسجيل حساب الشركة، حيثما تطلب الدولة ذلك.
          additionalProperties:
            type: string
            maxLength: 64
          example:
            bank_code: '000014'
            account_number: '0123450001'
        holder:
          $ref: '#/components/schemas/BankAccountCheckHolder'
        vendor_data:
          type: string
          nullable: true
          description: المرجع الخاص بك لعملية الفحص هذه، ويُعاد دون تغيير.
          example: payout_20481
        consent:
          type: boolean
          default: false
          description: >-
            يُضبط على `true` عندما يوافق صاحب الحساب صراحةً على هذا الفحص. مطلوب
            في الدول التي تتطلب فيها فحوصات الحسابات هذه الموافقة: بدونه يُرفض
            الفحص برمز `400` ويكون `field` هو `consent` ويكون `reason` هو
            `required`، ولا يتم فوترة أي شيء. وهو اختياري في بقية الدول، وتقوم
            Didit بتسجيله مع تكلفة الفحص عند إرساله.
          example: true
    BankAccountCheckResponse:
      type: object
      required:
        - request_id
        - result
        - holder_name
        - account
        - vendor_data
        - created_at
      properties:
        request_id:
          type: string
          format: uuid
          description: معرّف هذا الفحص.
        result:
          type: string
          enum:
            - match
            - close_match
            - no_match
            - cannot_verify
          description: >-
            `match`: يحتفظ البنك بالحساب تحت الاسم الذي أرسلته. `close_match`:
            تحت اسم مشابه، على سبيل المثال اسم أوسط مفقود أو خطأ إملائي.
            `no_match`: تحت اسم آخر، أو لا يوجد مثل هذا الحساب. `cannot_verify`:
            أجاب البنك دون مقارنة الاسم، على سبيل المثال لحساب محظور أو مغلق.
        holder_name:
          type: string
          nullable: true
          description: >-
            فقط في حالة `close_match`، وفقط عندما يعيده البنك: الاسم الموجود على
            الحساب، كما يحتفظ به البنك. يكون `null` بخلاف ذلك.
        account:
          type: string
          description: الحساب، محجوباً باستثناء آخر 4 أحرف.
        vendor_data:
          type: string
          nullable: true
          description: المرجع الخاص بك، كما أرسلته تماماً.
        created_at:
          type: string
          format: date-time
          description: وقت تشغيل الفحص، بتوقيت UTC.
    BankAccountCheckError:
      type: object
      required:
        - detail
      properties:
        detail:
          type: string
          description: الخطأ الذي حدث، باللغة الإنجليزية.
        code:
          type: string
          description: >-
            رمز ثابت للتفريع البرمجي بناءً عليه. غير موجود في حالتي `401` و
            `403`.
        field:
          type: string
          description: >-
            في حالة `400` فقط: حقل جسم الطلب المراد تصحيحه، كمسار مفصول بنقاط،
            على سبيل المثال `account.sort_code`.
        reason:
          type: string
          enum:
            - required
            - length
            - format
            - checksum
            - country_mismatch
            - rejected
          description: >-
            في حالة `400` فقط: سبب رفض الحقل. الفحوصات `required` و`length`
            و`format` و`checksum` و`country_mismatch` (IBAN لدولة أخرى) هي
            فحوصات Didit الخاصة؛ بينما تعني `rejected` أن البنك رفض الحساب كما
            أُرسل.
    BankAccountCheckHolder:
      description: >-
        الاسم الذي يتم التحقق من الحساب بناءً عليه. أرسل قيمة واحدة فقط من
        `full_name` أو `business_name`.
      oneOf:
        - $ref: '#/components/schemas/BankAccountCheckPersonHolder'
        - $ref: '#/components/schemas/BankAccountCheckBusinessHolder'
    BankAccountCheckPersonHolder:
      type: object
      description: الشخص الذي ينبغي أن يمتلك الحساب.
      required:
        - full_name
      properties:
        full_name:
          type: string
          maxLength: 255
          description: الاسم الكامل للشخص الذي ينبغي أن يمتلك الحساب.
          example: Maria Oliveira
    BankAccountCheckBusinessHolder:
      type: object
      description: الشركة التي يجب أن تمتلك الحساب. للتحقق من حساب تجاري.
      required:
        - business_name
      properties:
        business_name:
          type: string
          maxLength: 255
          description: اسم الشركة التي يُفترض أن تحتفظ بالحساب. يتحقق من حساب شركة.
  responses:
    RateLimitedWrite:
      description: >-
        تم تجاوز حد الكتابة المشترك البالغ 300 طلب في الدقيقة لكل مفتاح API.
        التزم بالمدة المحددة في `Retry-After` قبل إعادة المحاولة.
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
            properties:
              detail:
                type: string
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console.
        يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا
        شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات
        المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن
        المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم
        إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو
        الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير
        404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة
        بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL
        للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك
        إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع
        https://docs.didit.me/console/api-keys.
    BearerAuth:
      type: http
      scheme: bearer
      description: token الوصول الخاص باعتماد العميل للتطبيق.

````

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