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

# التحقق من التسجيل الضريبي في بيرو (SUNAT) - API

> التحقق من التسجيل الضريبي في بيرو (SUNAT) عبر Didit: تحقق موثوق من قواعد بيانات بيرو. دفع لكل استدعاء من $2.92، بلا عقود أو حد أدنى.

يتحقق من بيانات الإدخال مقابل SUNAT. تعرض Didit هذه الخدمة عبر `POST /v3/database-validation/` حتى تتحقق من البيانات المُرسلة مقابل المصدر الرسمي وتحصل على نتائج تطابق موحّدة. صيغة الإدخال: يقبل `personal_number` رقم DNI البيروفي (8 أرقام بالضبط).

## التغطية

* **التغطية:** > 90%
* **الدولة:** بيرو
* **معرّف الخدمة:** `per_tax_registration`
* **نطاق البيانات:** المالية
* **الفئة:** السجل الضريبي

## المدخلات

| الحقل | مطلوب | مثال |
| - | -: | - |
| `first_name` | نعم | `John` |
| `last_name` | نعم | `Doe` |
| `date_of_birth` | نعم | `1990-01-01` |
| `personal_number` | نعم | `11111111` |
| `vendor_data` | لا | `user-1234` |

* **المدخلات المطلوبة:** `first_name`، `last_name`، `date_of_birth`، `personal_number`
* **المدخلات الاختيارية:** `vendor_data`
* **الموافقة:** غير مطلوبة
* **التوفر في سير العمل:** متاح في سير العمل
* **التغطية:** > 90%
* **السعر:** \$2.92 لكل استعلام ناجح

لا تحمل كل وثيقة تقبلها هذه الخدمة المعرّف الذي تُجرى به الاستعلامات. عندما لا يُستخرج المعرّف من الوثيقة، تُسجَّل الفحوص على أنها **غير قابلة للتطبيق**، ولا يتم الاستعلام عن أي قاعدة بيانات ولا تُحتسب أي رسوم. وفي بعض الدول يشكّل ذلك نسبة كبيرة من المستخدمين الفعليين. لتغطيتهم، اجمع المعرّف أيضًا من إجابة في استبيان، أو من حقل مستخرج بواسطة Document AI، أو من قيمة ترسلها عند إنشاء الجلسة، ثم اربطه في خطوة التحقق من قواعد البيانات.

## معلمات الجسم

**issuing\_state** `string` *required* (default: PER)

رمز الدولة وفق ISO 3166-1 alpha-3 لخدمة قاعدة البيانات هذه.

مثال: `PER`

**services** `string` *required* (default: per\_tax\_registration)

مصفوفة تحتوي على معرّف هذه الخدمة. تثبيت الخدمة يُبقي الطلب مقتصرًا على قاعدة البيانات المحددة هذه تحديدًا.

مثال: `per_tax_registration`

**first\_name** `string` *required* (default: John)

الاسم الأول المراد التحقق منه.

مثال: `John`

**last\_name** `string` *required* (default: Doe)

اسم العائلة المراد التحقق منه.

مثال: `Doe`

**date\_of\_birth** `string` *required* (default: 1990-01-01)

تاريخ الميلاد بصيغة `YYYY-MM-DD`.

مثال: `1990-01-01`

**personal\_number** `string` *required* (default: 11111111)

رقم الهوية الشخصية الخاص بالدولة.

مثال: `11111111`

**vendor\_data** `string` (default: user-1234)

مرجعك الثابت للمستخدم، مثل معرّف المستخدم الداخلي لديك. تستخدمه Didit لربط الفحوص المستقلة بالمستخدم النهائي نفسه، وتقليل الضوضاء في اكتشاف التكرار.

مثال: `user-1234`

## قواعد الإدخال وملاحظات التحقق

* رقم DNI البيروفي (8 أرقام بالضبط)
* يجب أن يحتوي `personal_number` على أرقام فقط؛ أزل المسافات والشرطات وعلامات الترقيم قبل إرسال الطلب.
* يجب أن يبلغ طول `personal_number` 8 أحرف بالضبط.

## كيفية الاستدعاء

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=PER" \
  -F "services=per_tax_registration" \
  -F "vendor_data=user-1234" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "date_of_birth=1990-01-01" \
  -F "personal_number=11111111"
```

```python Python theme={null}
from didit import Didit

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="PER",
    services=["per_tax_registration"],
    first_name="John",
    last_name="Doe",
    date_of_birth="1990-01-01",
    personal_number="11111111",
    vendor_data="user-1234",
)
print(result)
```

```javascript Node.js theme={null}
import Didit from "@didit-protocol/sdk-node";

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

const result = await didit.databaseValidation.validate({
  issuing_state: "PER",
  services: ["per_tax_registration"],
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  personal_number: "11111111",
  vendor_data: "user-1234",
});
console.log(result);
```

```go Go theme={null}
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()

result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
	IssuingState:   "PER",
	Services:       didit.Some([]string{"per_tax_registration"}),
	FirstName:      didit.String("John"),
	LastName:       didit.String("Doe"),
	DateOfBirth:    didit.String("1990-01-01"),
	PersonalNumber: didit.String("11111111"),
	VendorData:     didit.String("user-1234"),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
import java.time.LocalDate;
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;

// Reads DIDIT_API_KEY.
Didit client = new Didit();

var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
        .issuingState("PER")
        .services(List.of("per_tax_registration"))
        .firstName("John")
        .lastName("Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .personalNumber("11111111")
        .vendorData("user-1234")
        .build());
System.out.println(result);
```

```php PHP theme={null}
<?php

require 'vendor/autoload.php';

use Didit\DiditClient;

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

$result = $didit->databaseValidation->validate([
    'issuing_state' => 'PER',
    'services' => ['per_tax_registration'],
    'first_name' => 'John',
    'last_name' => 'Doe',
    'date_of_birth' => '1990-01-01',
    'personal_number' => '11111111',
    'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
```

```ruby Ruby theme={null}
require "didit"

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

result = didit.database_validation.validate(
  issuing_state: "PER",
  services: ["per_tax_registration"],
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  personal_number: "11111111",
  vendor_data: "user-1234"
)
puts result.to_h
```

```csharp .NET theme={null}
using System;
using System.Text.Json;
using Didit;

// Reads DIDIT_API_KEY.
using var client = new DiditClient();

var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
    IssuingState = "PER",
    Services = new string[] { "per_tax_registration" },
    FirstName = "John",
    LastName = "Doe",
    DateOfBirth = "1990-01-01",
    PersonalNumber = "11111111",
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

يُرجع كل استدعاء ناجح رمز HTTP `200`. يخبرك الحقل **`outcome_code`** بما حدث فعلًا، فيميّز مثلًا بين عدم تطابق بيومتري حقيقي (`BIOMETRIC_NO_MATCH`) وصورة سيلفي تعذّرت قراءتها (`BIOMETRIC_IMAGE_UNUSABLE`). تمثل `status` المعروضة حالة الميزة الافتراضية، ويمكن لإجراءاتك المُعدّة لـ [التطابق الجزئي / عدم التطابق](https://docs.didit.me/ar/core-technology/database-validation/database-validation-warnings.md) أن تتجاوزها.

**`MATCH`**: أكّد السجل الهوية، وتطابقت كل الحقول المفحوصة.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "PER",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "per_tax_registration",
      "service_name": "Peru Tax Registration (SUNAT)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "full_name": "John Doe",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "name_match_score": "1.000",
        "verifications": {
          "date_of_birth": true,
          "full_name": true,
          "identification_number": true
        }
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`**: عُثر على رقم الهوية، لكن حقلًا شخصيًا واحدًا أو أكثر (غالبًا الاسم أو تاريخ الميلاد) لم يتطابق تطابقًا كاملًا.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "PER",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "per_tax_registration",
      "service_name": "Peru Tax Registration (SUNAT)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "full_name": "John Doe",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "name_match_score": "1.000",
        "verifications": {
          "date_of_birth": true,
          "full_name": false,
          "identification_number": true
        }
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "no_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: لم يُرجع السجل أي تطابق للبيانات المُرسلة.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "PER",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "per_tax_registration",
      "service_name": "Peru Tax Registration (SUNAT)",
      "source_data": {
        "date_of_birth": "NO_MATCH",
        "full_name": "NO_MATCH",
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "date_of_birth": "no_match",
        "full_name": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

## البيانات المُرجعة

تعتمد الحقول الدقيقة المعروضة في `source_data` على ما يُرجعه السجل. يوثّق المثال المُولَّد لـ `per_tax_registration` حاليًا هذا الشكل الموحّد:

* `date_of_birth`
* `first_name`
* `full_name`
* `identification_number`
* `last_name`
* `name_match_score`

## التسعير واتفاقيات مستوى الخدمة

تُحتسب استعلامات تسجيل الضرائب في بيرو (SUNAT) فقط عندما تتلقى Didit نتيجة حاسمة من مصدر التحقق.

* **السعر لكل استدعاء:** \$2.92 USD.
* **الفوترة:** لكل استعلام ناجح. لا تُحتسب أي رسوم عندما يكون السجل غير متاح، أو عندما تكون الحقول المطلوبة مفقودة، أو عندما يُرفض الطلب قبل وصوله إلى المصدر.
* **زمن الاستجابة:** نموذجيًا، يبلغ زمن الاستجابة عند المئين 95 أقل من 2 ثانية.
* **التوافر:** 99.9% لكل ربع سنة من جانب Didit؛ ويختلف توافر مصدر البيانات النهائي بحسب الدولة ومجموعة البيانات.

## للاستمرار في القراءة

* [نظرة عامة على التحقق من قواعد البيانات في بيرو](https://docs.didit.me/api-reference/database-validation/peru.md)
* [نظرة عامة على التحقق من قواعد البيانات](https://docs.didit.me/ar/core-technology/database-validation/overview.md)
* [رموز النتائج](https://docs.didit.me/ar/core-technology/database-validation/database-validation-outcome-codes.md)


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