---
title: "Submit KYC — estimate"
method: POST
path: "/v1/messaging/phone-numbers/kyc/estimate"
tags: ["Phone Numbers"]
---

# Submit KYC — estimate

`POST /v1/messaging/phone-numbers/kyc/estimate`

## Request

- Base URL: `https://apihub.co.il`
- URL: `https://apihub.co.il/v1/messaging/phone-numbers/kyc/estimate`
- Auth: HTTP bearer

Price the request without executing it. Same body as `POST /v1/messaging/phone-numbers/kyc`.

## Request body

- object
  - `reuse` boolean: Reuse a prior approved verification for this country (skips document/field collection; places the order immediately).
  - `values` object: requirementId → textual value
  - `address` object
    - `locality` string
    - `last_name` string
    - `first_name` string
    - `postal_code` string
    - `country_code` string
    - `business_name` string
    - `requirementId` string
    - `street_address` string
    - `extended_address` string: Address complement: apartment, suite, unit, or the quadra/lote used in some countries. Optional. Does not substitute for a building number on street_address.
    - `administrative_area` string
  - `country` string, required
  - `areaCode` string: Area code (NDC) the number must be in. Hard constraint: an empty area pool fails with 409 code AREA_CODE_UNAVAILABLE instead of ordering from another area. Omit for any area. Options come from GET /v1/phone-numbers/availability (areaOptions); the purchase 202 kycUrl echoes the areaCode picked at purchase time so it can be passed here.
  - `preOrder` boolean: With areaCode: pre-order that area when it has no stock (an area listed in soldOutAreas with preOrderable true) instead of failing with AREA_CODE_UNAVAILABLE. The carrier sources a number in that area. Without areaCode it accepts the pre-order a previous submit offered with 409 code area_pre_order_available (a geographic-match country whose address area has no stock): resend the same body with preOrder true and the order is placed for that area. A whole pair with no stock is pre-ordered without either flag.
  - `quantity` integer: Provision several same-country numbers from one submission (1-5). The single verification covers all of them; each number is billed only when it activates. Numbers that fail to order are skipped (best-effort). With `areaCode`, a quantity above that area's live stock is rejected with a 400.
  - `documents` union[]: One per document requirement. Each is EITHER inline base64 OR a `documentId` returned by POST /v1/phone-numbers/kyc/upload-document (use the upload endpoint for large files to stay under the request-size limit).
    - union
      - object
        - `base64` string, required
        - `filename` string, required
        - `requirementId` string, required
      - object
        - `issuedAt` string, date: Date printed on the document (YYYY-MM-DD), for slots the regulator windows such as proof of address. The pre-submit review trusts it over its own read of the PDF.
        - `documentId` string, required: Id from POST /v1/phone-numbers/kyc/upload-document.
        - `requirementId` string, required
  - `reuseFrom` string: Legacy fallback for `reuseOptionId`: the source phone number (GET reusable.options[].fromPhoneNumber). Ambiguous when a number labels two verifications, so prefer `reuseOptionId`. Omitted = the approved default. No match = 409.
  - `submissionId` string: Idempotency token for this submission attempt. Once the number has been ordered, a retry with the same token returns that same number instead of ordering another. A submission that fails before the number is ordered releases the token, so you can correct your details and re-submit with it. Omit it and every call provisions a new number.
  - `reuseOptionId` string: Which reusable verification to use (GET reusable.options[].id). The unambiguous selection key. Omitted = the approved default. No match = 409.
  - `endUserLastName` string: End user's legal last name. Same condition as endUserFirstName.
  - `endUserFirstName` string: End user's legal first name. Required when the country has an action/ID-verification (Onfido) requirement.

## Response `200`

Estimate

- Estimate
  - `operation` string
  - `estimated_credits` number
  - `credits_to_reserve` number
  - `estimated_usage` object
  - `note` string, nullable
  - `balance` object
    - `available` number
  - `sufficient` boolean

---

[API](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai.md) · [All operations](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/revisions/a8caa42835ce?raw)
