> This page is for Enterprise.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://citi-demo.ferndocs.com/enterprise/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://citi-demo.ferndocs.com/enterprise/_mcp/server.

# Validating the beneficiary account details

POST https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations
Content-Type: application/json

NOTE: This API will be deprecated soon. Existing users will continue to be supported for at least one year (starting November 1st, 2024)  New services will be added. Please contact your Citi representative for more information.

To validate the identity of a beneficiary, create a request body using the account information and submit it to `POST /beneficiaryvalidations`.

You will receive a preliminary response containing a Unique End-to-End Transaction Reference (UETR). You can use this UETR to retrieve the identifying information associated with the account information you submitted.

Reference: https://citi-demo.ferndocs.com/enterprise/enterprises/api-reference/payment-services/instant-payments/express-instant-payments/express-beneficiary-validation

## Authentication

- `Authorization` header (bearer token, required) — All CitiConnect APIs use the oAuth2 authentication scheme, which requires a bearer token to authenticate your API call. The Token URL includes the version of authentication used by this API. See the Citi Authentication API reference for information on requesting a token.

## Servers

- `https://b2b.api.icg.citi.com/citiconnect/prod` (production gateway url, default)
- `https://sandbox.b2b.api.icg.citi.com/citiconnect/sb` (sbox url )

## Request

### Query parameters

- `client_id` (string, required) — Your unique identification, same as the identification you use for OAuth token generation, Citi shared with you during your CitiConnect API onboarding

### Headers

- `Idempotency-Id` (string, required) — Your unique identification for a POST request - Maximum length is 128. - CitiConnect API responds with an error (HTTP status 4XX) if your POST request idempotency identification value is a duplicate across a recent history of idempotency identifications in Citi's database. - If you don't receive any response (HTTP status 2XX, 4XX or 5XX) from Citi to your POST request and you wish to retry, reinitiate your request with the same idempotency identification to prevent accidental duplicate payment.

### Body (application/json)

This endpoint expects a Beneficiary-Validation-Request.

- `debtor` (BeneficiaryValidationRequestDebtor, required)
- `method` (BeneficiaryValidationRequestMethod, required)
- `end_to_end_id` (string, optional) — Client provided reference number. - For India IMPS and UPI, this field is mandatory and max length is 16 - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `uetr` (string, optional) — UUID v4 format unique end-to-end transaction reference
- `creditor` (BeneficiaryValidationRequestCreditor, optional)

## Response

### 202

Accepted

- `end_to_end_id` (string, optional) — Client provided reference number. - For India IMPS and UPI, this field is mandatory and max length is 16 - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this field is not applicable
- `uetr` (string, optional) — UUID v4 format unique end-to-end transaction reference
- `debtor` (InitialBeneficiaryValidationResponseDebtor, optional)
- `creditor` (InitialBeneficiaryValidationResponseCreditor, optional)
- `method` (InitialBeneficiaryValidationResponseMethod, optional)
- `creation_date_time` (datetime, optional) — Request Creation Date and Time in UTC generated by CitiConnect API UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ)
- `status` (InitialBeneficiaryValidationResponseStatus, optional)

## Errors

### 400 Bad Request Error

Bad Request

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)

### 401 Unauthorized Error

Unauthorized

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)

### 404 Not Found Error

Not Found

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)

### 405 Method Not Allowed Error

Method Not Allowed

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)

### 409 Conflict Error

Conflict

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)

### 415 Unsupported Media Type Error

Unsupported Media Type

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)

### 500 Internal Server Error

Internal Server Error

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)

## Types

### BeneficiaryValidationRequestDebtor

- `account` (string, required) — Bank account held with CITI - For India IMPS and UPI , this field is mandatory and max length is 34 - For US EWS, this field is mandatory and max length is 40 - For UK, this field is mandatory and max length is 40 - For IN PAN, this field is mandatory and max length is 40 - For Pay2China, this field is mandatory and max length is 40
- `name` (string, optional) — Debtor Account Name. - For India IMPS and UPI ,this field is mandatory and max length is 99 - For US EWS,this field is optional and max length is 140 - For UK,this field is optional and max length is 140 - For IN PAN,this field is optional and max length is 140 - For Pay2China - this field is optional and max length is 140
- `proxy_id` (string, optional) — Remitter Proxy ID. - For India,this field is mandatory for UPI only and max length is 255 - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `ultimate_debtor` (BeneficiaryValidationRequestDebtorUltimateDebtor, optional)

### BeneficiaryValidationRequestMethod

- `country` (enum, required) — ISO 3166 Alpha-2 code for the transaction country
  - Allowed values: `IN`, `US`, `GB`, `CN`
- `method` (enum, required) — Method specified by the debtor for the validation
  - Allowed values: `IMPS`, `UPI`, `BANKACCOUNT`, `IBAN`, `CARD`, `PAYMENTID`, `ID`, `MERCHANTID`
- `type` (enum, required) — Message type (e.g., CT for credit transfer,AER for Account Enquiry Request) - For India,this field is mandatory and allowed value is AER - For US EWS,this field is mandatory - For UK,this field is mandatory - Ownership - Account ownership is limited to validation of correct owner , hence the account number or equivalent ( i.e Virtual account) and Name - Attributes- Attributes define the properties of the object , for an account the properties should include Status , type of account, status of account , the address of the account etc. - Structure - Structure refers to the mod 97 and the length as per the country of IBAN - TAXID- Validation of individual or corporate tax id/tax documentation - For Pay2China, this field is mandatory with the value Ownership
  - Allowed values: `AER`, `Structure`, `Ownership`, `Attributes`, `TAXID`
- `penny_test` (enum, optional) — This field enables selection of penny,non-penny or both validations - Applicable for IN IMPS
  - Allowed values: `NONPENNY`, `PENNY`, `BOTH`

### BeneficiaryValidationRequestCreditor

- `id` (string, optional) — Creditor Id. - For IMPS India,this field is not applicable - For UPI India, this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable. - For Pay2China, this field is merchant ID. It is mandatory and the max length is 32
- `account` (string, optional) — Creditor Account Number. - For IMPS India,this field is mandatory and max length is 34 - For UPI India, this field is optional and length should be 34 - For US EWS,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For UK,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For IN PAN,this field is not applicable - For Pay2China, this field is optional and max length is 32
- `name` (string, optional) — Creditor Account Name. - For India IMPS and UPI,this field is optional and max length is 99 - For US EWS,this field is mandatory and max length is 87. Please provide first middle(if any) last name in this sequence with spaces - For UK,this field is mandatory and max length is 87. Please provide first middle(if any) last name in this sequence with spaces - For IN PAN,this field is mandatory and max length is 85. Please provide first middle(if any) last name in this sequence with spaces - For Pay2China, this field is merchant name. It is a conditional field. It is mandatory for first time onboarding and max length is 128
- `father_name` (string, optional) — Creditor' Father's Name. - For India IMPS and UPI,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is optional and max length is 75. Please provide first middle(if any) last name in this sequence with spaces - For Pay2China, this field is not required
- `bank_id` (string, optional) — Receiving Financial Institution BIC. - For IMPS India,this field is mandatory and length should be 11 - For UPI India,this field is optional and length should be 11 - For US EWS,this field is mandatory and length should be 9 if routing/clearing code is populated - For UK,this field is mandatory and length should be 8 or 11 character if bic (including branch code) is sent - For IN PAN,this field is not applicable - For Pay2China, this field is optional and max length is 64
- `bank_name` (string, optional) — Receiving Financial Institution Name. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this is an optional field and max length is 128
- `proxy_id` (string, optional) — Creditor Proxy ID - For India,this field is mandatory for UPI only and max length is 255 (UPI ID or Mobile number can be passed).If mobile number is passed it should be greater than or equal to 6 and less than or equal to 16 - For US EWS,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For UK,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `proxy_type` (enum, optional) — Creditor Proxy type - For India,this field is optional for UPI only if mobile number needs to be passed in creditor.proxy_id - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - MBNO - Mobile Number - SHID - Scheme identification number (eg. VPA ID) - For Pay2China, this field is not required
  - Allowed values: `MBNO`, `SHID`
- `wallet` (string, optional) — Creditor wallet details - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For UK,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `IBAN` (string, optional) — Creditor IBAN number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For UK,this field is conditional and max length is 34.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `address_lines` (list of string, optional) — Creditor's address lines - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional and allowed 2 lines with each line max length of 40 - For UK, this field is optional and allowed 2 lines with each line max length of 40 - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `street_name` (string, optional) — Creditor's street_name - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 70 - For UK, this field is optional with max length 70 - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `building_number` (string, optional) — Creditor's building_number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 16 - For UK, this field is optional with max length 16 - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `postal_code` (string, optional) — Creditor's postal_code - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 10 - For UK, this field is optional with max length 16 - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `city` (string, optional) — Creditor's city - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 25 - For UK, this field is optional with max length 35 - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `state` (string, optional) — Creditor's state - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 25 - For UK, this field is optional with max length 35 - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `country` (string, optional) — Creditor's country - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 2 - For UK, this field is optional with max length 2 - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `birth_date` (date, optional) — ISO 8601 (YYYY-MM-DD), Creditor's birth date - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional - For UK, this field is optional - For IN PAN,this field is mandatory - For Pay2China, this field is not required
- `home_phone_number` (string, optional) — Creditor's home phone number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 10 - For UK, this field is optional with max length 34 - For IN PAN,this field is not applicable - For Pay2China, this field is not required
- `work_phone_number` (string, optional) — Creditor's work phone number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 10 - For UK, this field is optional with max length 34 - For IN PAN,this field is not applicable - For Pay2China, this is a conditional field. It is mandatory for first time onboarding and max length is 32
- `beneficial_owner` (BeneficiaryValidationRequestCreditorBeneficialOwner, optional)
- `document` (BeneficiaryValidationRequestCreditorDocument, optional)

### InitialBeneficiaryValidationResponseDebtor

- `account` (string, required) — Bank account held with CITI - For India IMPS and UPI , this field is mandatory and max length is 34 - For US EWS, this field is mandatory and max length is 40 - For UK, this field is mandatory and max length is 40 - For IN PAN, this field is mandatory and max length is 40 - For Pay2China, this field is mandatory and max length is 40
- `name` (string, optional) — Debtor Account Name. - For India IMPS and UPI ,this field is mandatory and max length is 99 - For US EWS,this field is optional and max length is 140 - For UK,this field is optional and max length is 140 - For IN PAN,this field is optional and max length is 140 - For Pay2China, this field is optional and max length is 140
- `proxy_id` (string, optional) — Remitter Proxy ID. - For India,this field is mandatory for UPI only and max length is 255 - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this field is not applicable
- `ultimate_debtor` (InitialBeneficiaryValidationResponseDebtorUltimateDebtor, optional)

### InitialBeneficiaryValidationResponseCreditor

- `id` (string, optional) — Creditor Id. - For IMPS India,this field is not applicable - For UPI India, this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable. - For Pay2China, this field is merchant ID. It is mandatory and the max length is 32
- `account` (string, optional) — Creditor Account Number. - For IMPS India,this field is mandatory and max length is 34 - For UPI India, this field is optional and length should be 34 - For US EWS,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For UK,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For IN PAN,this field is not applicable - For Pay2China, this field is optional and max length is 32
- `name` (string, optional) — Creditor Account Name. - For India IMPS and UPI,this field is optional and max length is 99 - For US EWS,this field is mandatory and max length is 87. Please provide first middle(if any) last name in this sequence with spaces - For UK,this field is mandatory and max length is 87. Please provide first middle(if any) last name in this sequence with spaces - For IN PAN,this field is mandatory and max length is 85. Please provide first middle(if any) last name in this sequence with spaces - For Pay2China, this field is merchant name. It is a conditional field. It is mandatory for first time onboarding and max length is 128
- `father_name` (string, optional) — Creditor' Father's Name. - For India IMPS and UPI,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is optional and max length is 75. Please provide first middle(if any) last name in this sequence with spaces - For Pay2China,this field is not applicable
- `bank_id` (string, optional) — Receiving Financial Institution BIC. - For IMPS India,this field is mandatory and length should be 11 - For UPI India,this field is optional and length should be 11 - For US EWS,this field is mandatory and length should be 9 if routing/clearing code is populated - For UK,this field is mandatory and length should be 8 or 11 character if bic (including branch code) is sent - For IN PAN,this field is not applicable - For Pay2China, this field is optional and max length is 64
- `bank_name` (string, optional) — Receiving Financial Institution Name. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this is an optional field and max length is 128
- `proxy_id` (string, optional) — Creditor Proxy ID - For India,this field is mandatory for UPI only and max length is 255 (UPI ID or Mobile number can be passed).If mobile number is passed it should be greater than or equal to 6 and less than or equal to 16 - For US EWS,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For UK,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `proxy_type` (enum, optional) — Creditor Proxy type - For India,this field is optional for UPI only if mobile number needs to be passed in creditor.proxy_id - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - MBNO - Mobile Number - SHID - Scheme identification number (eg. VPA ID) - For IN Pay2China,this field is not applicable
  - Allowed values: `MBNO`, `SHID`
- `wallet` (string, optional) — Creditor wallet details - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For UK,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `IBAN` (string, optional) — Creditor IBAN number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS,this field is conditional and max length is 17.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For UK,this field is conditional and max length is 34.Either creditor.account or creditor.proxy_id or creditor.wallet or creditor.IBAN should be passed by client - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `address_lines` (list of string, optional) — Creditor's address lines - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional and allowed 2 lines with each line max length of 40 - For UK, this field is optional and allowed 2 lines with each line max length of 40 - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `street_name` (string, optional) — Creditor's street_name - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 70 - For UK, this field is optional with max length 70 - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `building_number` (string, optional) — Creditor's building_number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 16 - For UK, this field is optional with max length 16 - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `postal_code` (string, optional) — Creditor's postal_code - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 10 - For UK, this field is optional with max length 16 - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `city` (string, optional) — Creditor's city - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 25 - For UK, this field is optional with max length 35 - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `state` (string, optional) — Creditor's state - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 25 - For UK, this field is optional with max length 35 - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `country` (string, optional) — Creditor's country - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 2 - For UK, this field is optional with max length 2 - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `birth_date` (date, optional) — ISO 8601 (YYYY-MM-DD), Creditor's birth date - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional - For UK, this field is optional - For IN PAN,this field is mandatory - For IN Pay2China,this field is not applicable
- `home_phone_number` (string, optional) — Creditor's home phone number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 10 - For UK, this field is optional with max length 34 - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable
- `work_phone_number` (string, optional) — Creditor's work phone number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 10 - For UK, this field is optional with max length 34 - For IN PAN,this field is not applicable - For Pay2China, this is a conditional field. It is mandatory for first time onboarding and max length is 32
- `beneficial_owner` (InitialBeneficiaryValidationResponseCreditorBeneficialOwner, optional)
- `document` (InitialBeneficiaryValidationResponseCreditorDocument, optional)

### InitialBeneficiaryValidationResponseMethod

- `country` (enum, required) — ISO 3166 Alpha-2 code for the transaction country
  - Allowed values: `IN`, `US`, `GB`, `CN`
- `method` (enum, required) — Method specified by the debtor for the validation
  - Allowed values: `IMPS`, `UPI`, `BANKACCOUNT`, `IBAN`, `CARD`, `PAYMENTID`, `ID`, `MERCHANTID`
- `type` (enum, required) — Message type (e.g., CT for credit transfer,AER for Account Enquiry Request) - For India,this field is mandatory and allowed value is AER - For US EWS,this field is mandatory - For UK,this field is mandatory - Ownership - Account ownership is limited to validation of correct owner , hence the account number or equivalent ( i.e Virtual account) and Name - Attributes- Attributes define the properties of the object , for an account the properties should include Status , type of account, status of account , the address of the account etc. - Structure - Structure refers to the mod 97 and the length as per the country of IBAN - TAXID- Validation of individual or corporate tax id/tax documentation - For Pay2China, this field is mandatory with the value Ownership
  - Allowed values: `AER`, `Structure`, `Ownership`, `Attributes`, `TAXID`
- `penny_test` (enum, optional) — This field enables selection of penny,non-penny or both validations - Applicable for IN IMPS
  - Allowed values: `NONPENNY`, `PENNY`, `BOTH`

### InitialBeneficiaryValidationResponseStatus

- `date_time` (datetime, required) — UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Date time of transaction status
- `code` (enum, required) — ISO 20022 acknowledegment status code
  - Allowed values: `ACTC`
- `description` (string, required) — Status code description - ACTC - Accepted

### Error-Detail

- `issue` (string, optional) — more details about the issue
- `action` (string, optional) — corrective action to be taken to resolve above issue
- `code` (string, optional) — unique code representing the issue

### BeneficiaryValidationRequestDebtorUltimateDebtor

- `name` (string, optional) — Ultimate debtor name. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For Pay2China, this field is optional and the max length is 140
- `account` (string, optional) — Beneficiary Owner Id/Legal Rep id. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this field is mandatory and the max length is 35

### BeneficiaryValidationRequestCreditorBeneficialOwner

- `name` (string, optional) — Beneficiary Owner Name/Legal Rep name. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For Pay2China, this is a conditional field. If the document.entity is business, this field should present for first time onboarding. If document.entity is Personal, this fields is not application and the max length is 32
- `id` (string, optional) — Beneficiary Owner Id/Legal Rep id. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this is a conditional field. If the document.entity is business, this filed should present for first time onboarding. If document.entity is Personal, this fields is not application and max length is 32

### BeneficiaryValidationRequestCreditorDocument

- `entity` (enum, optional) — Whether the document belongs to Business or Individual - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS,this field is optional - For UK,this field is optional - For IN PAN,this field is not applicable - For Pay2China, this is mandatory
  - Allowed values: `BUSINESS`, `PERSONAL`
- `type` (enum, optional) — Whether the document belongs to Business or Individual - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS,this field is optional - For UK,this field is optional - For IN PAN,this field is mandatory with applicable value TXID - For Pay2China, this field is conditional. It is mandatory for first time onboarding. If the document.entity is Business, this filed value should be EMPL. If document.entity is Personal, this fields value should be NIDN - Personal Code values - ARNU AlienRegistrationNumber - CCPT PassportNumber - CUST CustomerIdentificationNumber - DRLC DriversLicenseNumber - EMPL EmployeeIdentificationNumber - NIDN NationalIdentityNumber - SOSE SocialSecurityNumber - TELE TelephoneNumber - TXID TaxIdentificationNumber - POID PersonCommercialIdentification - Corporate Code values - BANK BankPartyIdentification - CBID Central Bank Identification Number - CHID Clearing Identification Number - COID CountryIdentificationCode - CUST CustomerNumber - DUNS Data Universal Numbering System - EMPL EmployerIdentificationNumber - GS1G GS1GLNIdentifier - SREN SIREN - SRET SIRET - TXID Tax Identification Number
  - Allowed values: `ARNU`, `CCPT`, `CUST`, `DRLC`, `EMPL`, `NIDN`, `SOSE`, `TELE`, `TXID`, `POID`, `BANK`, `CBID`, `CHID`, `COID`, `DUNS`, `GS1G`, `SREN`, `SRET`
- `number` (string, optional) — Creditor's document number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 28 - For UK, this field is optional with max length 35 - For IN PAN,this field is mandatory with max length 10 - For Pay2China, this field is conditional. It is mandatory for first time onboarding and max length is 20
- `state` (string, optional) — Creditor's document state - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 6 - For UK, this field is optional with max length 35 - For IN PAN,this field is not applicable - For Pay2China, this field is not required

### InitialBeneficiaryValidationResponseDebtorUltimateDebtor

- `name` (string, optional) — Ultimate debtor name. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For Pay2China, this field is optional and the max length is 140
- `account` (string, optional) — Beneficiary Owner Id/Legal Rep id. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this field is mandatory and the max length is 35

### InitialBeneficiaryValidationResponseCreditorBeneficialOwner

- `name` (string, optional) — Beneficiary Owner Name/Legal Rep name. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For Pay2China, this is a conditional field. If the document.entity is business, this field should present for first time onboarding. If document.entity is Personal, this fields is not application and the max length is 32
- `id` (string, optional) — Beneficiary Owner Id/Legal Rep id. - For IMPS India,this field is not applicable - For UPI India,this field is not applicable - For US EWS,this field is not applicable - For UK,this field is not applicable - For IN PAN,this field is not applicable - For Pay2China, this is a conditional field. If the document.entity is business, this filed should present for first time onboarding. If document.entity is Personal, this fields is not application and max length is 32

### InitialBeneficiaryValidationResponseCreditorDocument

- `entity` (enum, optional) — Whether the document belongs to Business or Individual - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS,this field is optional - For UK,this field is optional - For IN PAN,this field is not applicable - For Pay2China, this is a Mandatory field.
  - Allowed values: `BUSINESS`, `PERSONAL`
- `type` (enum, optional) — Whether the document belongs to Business or Individual - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS,this field is optional - For UK,this field is optional - For IN PAN,this field is mandatory with applicable value TXID - For Pay2China, this field is conditional. It is mandatory for first time onboarding. If the document.entity is Business, this filed value should be EMPL. If document.entity is Personal, this fields value should be NIDN - Personal Code values - ARNU AlienRegistrationNumber - CCPT PassportNumber - CUST CustomerIdentificationNumber - DRLC DriversLicenseNumber - EMPL EmployeeIdentificationNumber - NIDN NationalIdentityNumber - SOSE SocialSecurityNumber - TELE TelephoneNumber - TXID TaxIdentificationNumber - POID PersonCommercialIdentification - Corporate Code values - BANK BankPartyIdentification - CBID Central Bank Identification Number - CHID Clearing Identification Number - COID CountryIdentificationCode - CUST CustomerNumber - DUNS Data Universal Numbering System - EMPL EmployerIdentificationNumber - GS1G GS1GLNIdentifier - SREN SIREN - SRET SIRET - TXID Tax Identification Number
  - Allowed values: `ARNU`, `CCPT`, `CUST`, `DRLC`, `EMPL`, `NIDN`, `SOSE`, `TELE`, `TXID`, `POID`, `BANK`, `CBID`, `CHID`, `COID`, `DUNS`, `GS1G`, `SREN`, `SRET`
- `number` (string, optional) — Creditor's document number - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 28 - For UK, this field is optional with max length 35 - For IN PAN,this field is mandatory with max length 10 - For Pay2China, this field is conditional. It is mandatory for first time onboarding and max length is 20
- `state` (string, optional) — Creditor's document state - For India IMPS,this field is not applicable - For India UPI,this field is not applicable - For US EWS, this field is optional with max length 6 - For UK, this field is optional with max length 35 - For IN PAN,this field is not applicable - For IN Pay2China,this field is not applicable

## Examples

### IN IMPS Beneficiary Validation Non Penny (application/json)

**Request**

```json
{
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  }
}
```

**Response**

```json
{
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "creation_date_time": "2023-09-10T08:23:49.112Z",
  "status": {
    "date_time": "2023-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python IN IMPS Beneficiary Validation Non Penny (application/json)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "927393038",
        "name": "John"
    },
    "method": {
        "country": "IN",
        "method": "IMPS",
        "type": "AER",
        "penny_test": "NONPENNY"
    },
    "end_to_end_id": "r/434SKtUcd01",
    "uetr": "921a9445-97df-4118-9a55-68d14667624c",
    "creditor": {
        "account": "927393908",
        "name": "Mathew",
        "bank_id": "FGHJ0985026"
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript IN IMPS Beneficiary Validation Non Penny (application/json)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"927393038","name":"John"},"method":{"country":"IN","method":"IMPS","type":"AER","penny_test":"NONPENNY"},"end_to_end_id":"r/434SKtUcd01","uetr":"921a9445-97df-4118-9a55-68d14667624c","creditor":{"account":"927393908","name":"Mathew","bank_id":"FGHJ0985026"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go IN IMPS Beneficiary Validation Non Penny (application/json)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"IMPS\",\n    \"type\": \"AER\",\n    \"penny_test\": \"NONPENNY\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby IN IMPS Beneficiary Validation Non Penny (application/json)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"IMPS\",\n    \"type\": \"AER\",\n    \"penny_test\": \"NONPENNY\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java IN IMPS Beneficiary Validation Non Penny (application/json)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"IMPS\",\n    \"type\": \"AER\",\n    \"penny_test\": \"NONPENNY\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\"\n  }\n}")
  .asString();
```

```php IN IMPS Beneficiary Validation Non Penny (application/json)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp IN IMPS Beneficiary Validation Non Penny (application/json)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"IMPS\",\n    \"type\": \"AER\",\n    \"penny_test\": \"NONPENNY\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift IN IMPS Beneficiary Validation Non Penny (application/json)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "927393038",
    "name": "John"
  ],
  "method": [
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  ],
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": [
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### IN IMPS Beneficiary Validation Penny (application/json)

**Request**

```json
{
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "PENNY"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  }
}
```

**Response**

```json
{
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "creation_date_time": "2023-09-10T08:23:49.112Z",
  "status": {
    "date_time": "2023-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python IN IMPS Beneficiary Validation Penny (application/json)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "927393038",
        "name": "John"
    },
    "method": {
        "country": "IN",
        "method": "IMPS",
        "type": "AER",
        "penny_test": "PENNY"
    },
    "end_to_end_id": "r/434SKtUcd01",
    "uetr": "921a9445-97df-4118-9a55-68d14667624c",
    "creditor": {
        "account": "927393908",
        "name": "Mathew",
        "bank_id": "FGHJ0985026"
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript IN IMPS Beneficiary Validation Penny (application/json)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"927393038","name":"John"},"method":{"country":"IN","method":"IMPS","type":"AER","penny_test":"PENNY"},"end_to_end_id":"r/434SKtUcd01","uetr":"921a9445-97df-4118-9a55-68d14667624c","creditor":{"account":"927393908","name":"Mathew","bank_id":"FGHJ0985026"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go IN IMPS Beneficiary Validation Penny (application/json)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"IMPS\",\n    \"type\": \"AER\",\n    \"penny_test\": \"PENNY\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby IN IMPS Beneficiary Validation Penny (application/json)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"IMPS\",\n    \"type\": \"AER\",\n    \"penny_test\": \"PENNY\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java IN IMPS Beneficiary Validation Penny (application/json)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"IMPS\",\n    \"type\": \"AER\",\n    \"penny_test\": \"PENNY\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\"\n  }\n}")
  .asString();
```

```php IN IMPS Beneficiary Validation Penny (application/json)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "PENNY"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp IN IMPS Beneficiary Validation Penny (application/json)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"IMPS\",\n    \"type\": \"AER\",\n    \"penny_test\": \"PENNY\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift IN IMPS Beneficiary Validation Penny (application/json)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "927393038",
    "name": "John"
  ],
  "method": [
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "PENNY"
  ],
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": [
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### UPI IN Beneficiary Validation (application/json)

**Request**

```json
{
  "debtor": {
    "account": "927393038",
    "name": "John",
    "proxy_id": "lbem0028@citibank"
  },
  "method": {
    "country": "IN",
    "method": "UPI",
    "type": "AER"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026",
    "proxy_id": "lbem0028@citibank"
  }
}
```

**Response**

```json
{
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "creation_date_time": "2023-09-10T08:23:49.112Z",
  "status": {
    "date_time": "2023-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python UPI IN Beneficiary Validation (application/json)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "927393038",
        "name": "John",
        "proxy_id": "lbem0028@citibank"
    },
    "method": {
        "country": "IN",
        "method": "UPI",
        "type": "AER"
    },
    "end_to_end_id": "r/434SKtUcd01",
    "uetr": "921a9445-97df-4118-9a55-68d14667624c",
    "creditor": {
        "account": "927393908",
        "name": "Mathew",
        "bank_id": "FGHJ0985026",
        "proxy_id": "lbem0028@citibank"
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript UPI IN Beneficiary Validation (application/json)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"927393038","name":"John","proxy_id":"lbem0028@citibank"},"method":{"country":"IN","method":"UPI","type":"AER"},"end_to_end_id":"r/434SKtUcd01","uetr":"921a9445-97df-4118-9a55-68d14667624c","creditor":{"account":"927393908","name":"Mathew","bank_id":"FGHJ0985026","proxy_id":"lbem0028@citibank"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go UPI IN Beneficiary Validation (application/json)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby UPI IN Beneficiary Validation (application/json)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java UPI IN Beneficiary Validation (application/json)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  }\n}")
  .asString();
```

```php UPI IN Beneficiary Validation (application/json)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "927393038",
    "name": "John",
    "proxy_id": "lbem0028@citibank"
  },
  "method": {
    "country": "IN",
    "method": "UPI",
    "type": "AER"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026",
    "proxy_id": "lbem0028@citibank"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp UPI IN Beneficiary Validation (application/json)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift UPI IN Beneficiary Validation (application/json)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "927393038",
    "name": "John",
    "proxy_id": "lbem0028@citibank"
  ],
  "method": [
    "country": "IN",
    "method": "UPI",
    "type": "AER"
  ],
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": [
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026",
    "proxy_id": "lbem0028@citibank"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### UPI IN Mobile Number Beneficiary Validation (application/json)

**Request**

```json
{
  "debtor": {
    "account": "927393038",
    "name": "John",
    "proxy_id": "lbem0028@citibank"
  },
  "method": {
    "country": "IN",
    "method": "UPI",
    "type": "AER"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026",
    "proxy_id": "9809056489",
    "proxy_type": "MBNO"
  }
}
```

**Response**

```json
{
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "creation_date_time": "2023-09-10T08:23:49.112Z",
  "status": {
    "date_time": "2023-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python UPI IN Mobile Number Beneficiary Validation (application/json)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "927393038",
        "name": "John",
        "proxy_id": "lbem0028@citibank"
    },
    "method": {
        "country": "IN",
        "method": "UPI",
        "type": "AER"
    },
    "end_to_end_id": "r/434SKtUcd01",
    "uetr": "921a9445-97df-4118-9a55-68d14667624c",
    "creditor": {
        "account": "927393908",
        "name": "Mathew",
        "bank_id": "FGHJ0985026",
        "proxy_id": "9809056489",
        "proxy_type": "MBNO"
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript UPI IN Mobile Number Beneficiary Validation (application/json)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"927393038","name":"John","proxy_id":"lbem0028@citibank"},"method":{"country":"IN","method":"UPI","type":"AER"},"end_to_end_id":"r/434SKtUcd01","uetr":"921a9445-97df-4118-9a55-68d14667624c","creditor":{"account":"927393908","name":"Mathew","bank_id":"FGHJ0985026","proxy_id":"9809056489","proxy_type":"MBNO"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go UPI IN Mobile Number Beneficiary Validation (application/json)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"9809056489\",\n    \"proxy_type\": \"MBNO\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby UPI IN Mobile Number Beneficiary Validation (application/json)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"9809056489\",\n    \"proxy_type\": \"MBNO\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java UPI IN Mobile Number Beneficiary Validation (application/json)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"9809056489\",\n    \"proxy_type\": \"MBNO\"\n  }\n}")
  .asString();
```

```php UPI IN Mobile Number Beneficiary Validation (application/json)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "927393038",
    "name": "John",
    "proxy_id": "lbem0028@citibank"
  },
  "method": {
    "country": "IN",
    "method": "UPI",
    "type": "AER"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026",
    "proxy_id": "9809056489",
    "proxy_type": "MBNO"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp UPI IN Mobile Number Beneficiary Validation (application/json)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"9809056489\",\n    \"proxy_type\": \"MBNO\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift UPI IN Mobile Number Beneficiary Validation (application/json)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "927393038",
    "name": "John",
    "proxy_id": "lbem0028@citibank"
  ],
  "method": [
    "country": "IN",
    "method": "UPI",
    "type": "AER"
  ],
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": [
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026",
    "proxy_id": "9809056489",
    "proxy_type": "MBNO"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### UPI IN UPI ID Beneficiary Validation (application/json)

**Request**

```json
{
  "debtor": {
    "account": "927393038",
    "name": "John",
    "proxy_id": "lbem0028@citibank"
  },
  "method": {
    "country": "IN",
    "method": "UPI",
    "type": "AER"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026",
    "proxy_id": "hailey21@okbank",
    "proxy_type": "SHID"
  }
}
```

**Response**

```json
{
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "creation_date_time": "2023-09-10T08:23:49.112Z",
  "status": {
    "date_time": "2023-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python UPI IN UPI ID Beneficiary Validation (application/json)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "927393038",
        "name": "John",
        "proxy_id": "lbem0028@citibank"
    },
    "method": {
        "country": "IN",
        "method": "UPI",
        "type": "AER"
    },
    "end_to_end_id": "r/434SKtUcd01",
    "uetr": "921a9445-97df-4118-9a55-68d14667624c",
    "creditor": {
        "account": "927393908",
        "name": "Mathew",
        "bank_id": "FGHJ0985026",
        "proxy_id": "hailey21@okbank",
        "proxy_type": "SHID"
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript UPI IN UPI ID Beneficiary Validation (application/json)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"927393038","name":"John","proxy_id":"lbem0028@citibank"},"method":{"country":"IN","method":"UPI","type":"AER"},"end_to_end_id":"r/434SKtUcd01","uetr":"921a9445-97df-4118-9a55-68d14667624c","creditor":{"account":"927393908","name":"Mathew","bank_id":"FGHJ0985026","proxy_id":"hailey21@okbank","proxy_type":"SHID"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go UPI IN UPI ID Beneficiary Validation (application/json)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"hailey21@okbank\",\n    \"proxy_type\": \"SHID\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby UPI IN UPI ID Beneficiary Validation (application/json)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"hailey21@okbank\",\n    \"proxy_type\": \"SHID\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java UPI IN UPI ID Beneficiary Validation (application/json)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"hailey21@okbank\",\n    \"proxy_type\": \"SHID\"\n  }\n}")
  .asString();
```

```php UPI IN UPI ID Beneficiary Validation (application/json)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "927393038",
    "name": "John",
    "proxy_id": "lbem0028@citibank"
  },
  "method": {
    "country": "IN",
    "method": "UPI",
    "type": "AER"
  },
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026",
    "proxy_id": "hailey21@okbank",
    "proxy_type": "SHID"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp UPI IN UPI ID Beneficiary Validation (application/json)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"927393038\",\n    \"name\": \"John\",\n    \"proxy_id\": \"lbem0028@citibank\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"UPI\",\n    \"type\": \"AER\"\n  },\n  \"end_to_end_id\": \"r/434SKtUcd01\",\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393908\",\n    \"name\": \"Mathew\",\n    \"bank_id\": \"FGHJ0985026\",\n    \"proxy_id\": \"hailey21@okbank\",\n    \"proxy_type\": \"SHID\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift UPI IN UPI ID Beneficiary Validation (application/json)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "927393038",
    "name": "John",
    "proxy_id": "lbem0028@citibank"
  ],
  "method": [
    "country": "IN",
    "method": "UPI",
    "type": "AER"
  ],
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": [
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026",
    "proxy_id": "hailey21@okbank",
    "proxy_type": "SHID"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### US EWS Beneficiary Validation (application/json)

**Request**

```json
{
  "debtor": {
    "account": "927393890",
    "name": "Hopkin"
  },
  "method": {
    "country": "US",
    "method": "BANKACCOUNT",
    "type": "Ownership"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393445",
    "name": "Leo",
    "bank_id": "FGHJ09890",
    "address_lines": [
      "ABCD#WERT"
    ],
    "street_name": "1515 3rd Street",
    "building_number": "A1234",
    "postal_code": "94158",
    "city": "San Francisco",
    "state": "CA",
    "country": "US",
    "birth_date": "1950-09-26",
    "home_phone_number": "+92-80808009",
    "document": {
      "entity": "PERSONAL",
      "type": "CCPT",
      "number": "M7891234",
      "state": "Dublin"
    }
  }
}
```

**Response**

```json
{
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "creation_date_time": "2023-09-10T08:23:49.112Z",
  "status": {
    "date_time": "2023-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python US EWS Beneficiary Validation (application/json)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "927393890",
        "name": "Hopkin"
    },
    "method": {
        "country": "US",
        "method": "BANKACCOUNT",
        "type": "Ownership"
    },
    "uetr": "921a9445-97df-4118-9a55-68d14667624c",
    "creditor": {
        "account": "927393445",
        "name": "Leo",
        "bank_id": "FGHJ09890",
        "address_lines": ["ABCD#WERT"],
        "street_name": "1515 3rd Street",
        "building_number": "A1234",
        "postal_code": "94158",
        "city": "San Francisco",
        "state": "CA",
        "country": "US",
        "birth_date": "1950-09-26",
        "home_phone_number": "+92-80808009",
        "document": {
            "entity": "PERSONAL",
            "type": "CCPT",
            "number": "M7891234",
            "state": "Dublin"
        }
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript US EWS Beneficiary Validation (application/json)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"927393890","name":"Hopkin"},"method":{"country":"US","method":"BANKACCOUNT","type":"Ownership"},"uetr":"921a9445-97df-4118-9a55-68d14667624c","creditor":{"account":"927393445","name":"Leo","bank_id":"FGHJ09890","address_lines":["ABCD#WERT"],"street_name":"1515 3rd Street","building_number":"A1234","postal_code":"94158","city":"San Francisco","state":"CA","country":"US","birth_date":"1950-09-26","home_phone_number":"+92-80808009","document":{"entity":"PERSONAL","type":"CCPT","number":"M7891234","state":"Dublin"}}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go US EWS Beneficiary Validation (application/json)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"US\",\n    \"method\": \"BANKACCOUNT\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393445\",\n    \"name\": \"Leo\",\n    \"bank_id\": \"FGHJ09890\",\n    \"address_lines\": [\n      \"ABCD#WERT\"\n    ],\n    \"street_name\": \"1515 3rd Street\",\n    \"building_number\": \"A1234\",\n    \"postal_code\": \"94158\",\n    \"city\": \"San Francisco\",\n    \"state\": \"CA\",\n    \"country\": \"US\",\n    \"birth_date\": \"1950-09-26\",\n    \"home_phone_number\": \"+92-80808009\",\n    \"document\": {\n      \"entity\": \"PERSONAL\",\n      \"type\": \"CCPT\",\n      \"number\": \"M7891234\",\n      \"state\": \"Dublin\"\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby US EWS Beneficiary Validation (application/json)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"US\",\n    \"method\": \"BANKACCOUNT\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393445\",\n    \"name\": \"Leo\",\n    \"bank_id\": \"FGHJ09890\",\n    \"address_lines\": [\n      \"ABCD#WERT\"\n    ],\n    \"street_name\": \"1515 3rd Street\",\n    \"building_number\": \"A1234\",\n    \"postal_code\": \"94158\",\n    \"city\": \"San Francisco\",\n    \"state\": \"CA\",\n    \"country\": \"US\",\n    \"birth_date\": \"1950-09-26\",\n    \"home_phone_number\": \"+92-80808009\",\n    \"document\": {\n      \"entity\": \"PERSONAL\",\n      \"type\": \"CCPT\",\n      \"number\": \"M7891234\",\n      \"state\": \"Dublin\"\n    }\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java US EWS Beneficiary Validation (application/json)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"US\",\n    \"method\": \"BANKACCOUNT\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393445\",\n    \"name\": \"Leo\",\n    \"bank_id\": \"FGHJ09890\",\n    \"address_lines\": [\n      \"ABCD#WERT\"\n    ],\n    \"street_name\": \"1515 3rd Street\",\n    \"building_number\": \"A1234\",\n    \"postal_code\": \"94158\",\n    \"city\": \"San Francisco\",\n    \"state\": \"CA\",\n    \"country\": \"US\",\n    \"birth_date\": \"1950-09-26\",\n    \"home_phone_number\": \"+92-80808009\",\n    \"document\": {\n      \"entity\": \"PERSONAL\",\n      \"type\": \"CCPT\",\n      \"number\": \"M7891234\",\n      \"state\": \"Dublin\"\n    }\n  }\n}")
  .asString();
```

```php US EWS Beneficiary Validation (application/json)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "927393890",
    "name": "Hopkin"
  },
  "method": {
    "country": "US",
    "method": "BANKACCOUNT",
    "type": "Ownership"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "account": "927393445",
    "name": "Leo",
    "bank_id": "FGHJ09890",
    "address_lines": [
      "ABCD#WERT"
    ],
    "street_name": "1515 3rd Street",
    "building_number": "A1234",
    "postal_code": "94158",
    "city": "San Francisco",
    "state": "CA",
    "country": "US",
    "birth_date": "1950-09-26",
    "home_phone_number": "+92-80808009",
    "document": {
      "entity": "PERSONAL",
      "type": "CCPT",
      "number": "M7891234",
      "state": "Dublin"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp US EWS Beneficiary Validation (application/json)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"US\",\n    \"method\": \"BANKACCOUNT\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"account\": \"927393445\",\n    \"name\": \"Leo\",\n    \"bank_id\": \"FGHJ09890\",\n    \"address_lines\": [\n      \"ABCD#WERT\"\n    ],\n    \"street_name\": \"1515 3rd Street\",\n    \"building_number\": \"A1234\",\n    \"postal_code\": \"94158\",\n    \"city\": \"San Francisco\",\n    \"state\": \"CA\",\n    \"country\": \"US\",\n    \"birth_date\": \"1950-09-26\",\n    \"home_phone_number\": \"+92-80808009\",\n    \"document\": {\n      \"entity\": \"PERSONAL\",\n      \"type\": \"CCPT\",\n      \"number\": \"M7891234\",\n      \"state\": \"Dublin\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift US EWS Beneficiary Validation (application/json)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "927393890",
    "name": "Hopkin"
  ],
  "method": [
    "country": "US",
    "method": "BANKACCOUNT",
    "type": "Ownership"
  ],
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": [
    "account": "927393445",
    "name": "Leo",
    "bank_id": "FGHJ09890",
    "address_lines": ["ABCD#WERT"],
    "street_name": "1515 3rd Street",
    "building_number": "A1234",
    "postal_code": "94158",
    "city": "San Francisco",
    "state": "CA",
    "country": "US",
    "birth_date": "1950-09-26",
    "home_phone_number": "+92-80808009",
    "document": [
      "entity": "PERSONAL",
      "type": "CCPT",
      "number": "M7891234",
      "state": "Dublin"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### UK Beneficiary Validation (application/json)

**Request**

```json
{
  "debtor": {
    "account": "927393890",
    "name": "Hopkin"
  },
  "method": {
    "country": "GB",
    "method": "BANKACCOUNT",
    "type": "Ownership"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667656f",
  "creditor": {
    "account": "927393445",
    "name": "Leo",
    "bank_id": "FGHJ09890",
    "address_lines": [
      "ABCD#WERT"
    ],
    "street_name": "1515 3rd Street",
    "building_number": "A1234",
    "postal_code": "94158",
    "city": "Manchester",
    "state": "Leeds",
    "country": "GB",
    "birth_date": "1950-09-26",
    "home_phone_number": "+92-80808009",
    "document": {
      "entity": "PERSONAL",
      "type": "CCPT",
      "number": "M7891234",
      "state": "Dublin"
    }
  }
}
```

**Response**

```json
{
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "creation_date_time": "2023-09-10T08:23:49.112Z",
  "status": {
    "date_time": "2023-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python UK Beneficiary Validation (application/json)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "927393890",
        "name": "Hopkin"
    },
    "method": {
        "country": "GB",
        "method": "BANKACCOUNT",
        "type": "Ownership"
    },
    "uetr": "921a9445-97df-4118-9a55-68d14667656f",
    "creditor": {
        "account": "927393445",
        "name": "Leo",
        "bank_id": "FGHJ09890",
        "address_lines": ["ABCD#WERT"],
        "street_name": "1515 3rd Street",
        "building_number": "A1234",
        "postal_code": "94158",
        "city": "Manchester",
        "state": "Leeds",
        "country": "GB",
        "birth_date": "1950-09-26",
        "home_phone_number": "+92-80808009",
        "document": {
            "entity": "PERSONAL",
            "type": "CCPT",
            "number": "M7891234",
            "state": "Dublin"
        }
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript UK Beneficiary Validation (application/json)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"927393890","name":"Hopkin"},"method":{"country":"GB","method":"BANKACCOUNT","type":"Ownership"},"uetr":"921a9445-97df-4118-9a55-68d14667656f","creditor":{"account":"927393445","name":"Leo","bank_id":"FGHJ09890","address_lines":["ABCD#WERT"],"street_name":"1515 3rd Street","building_number":"A1234","postal_code":"94158","city":"Manchester","state":"Leeds","country":"GB","birth_date":"1950-09-26","home_phone_number":"+92-80808009","document":{"entity":"PERSONAL","type":"CCPT","number":"M7891234","state":"Dublin"}}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go UK Beneficiary Validation (application/json)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"GB\",\n    \"method\": \"BANKACCOUNT\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667656f\",\n  \"creditor\": {\n    \"account\": \"927393445\",\n    \"name\": \"Leo\",\n    \"bank_id\": \"FGHJ09890\",\n    \"address_lines\": [\n      \"ABCD#WERT\"\n    ],\n    \"street_name\": \"1515 3rd Street\",\n    \"building_number\": \"A1234\",\n    \"postal_code\": \"94158\",\n    \"city\": \"Manchester\",\n    \"state\": \"Leeds\",\n    \"country\": \"GB\",\n    \"birth_date\": \"1950-09-26\",\n    \"home_phone_number\": \"+92-80808009\",\n    \"document\": {\n      \"entity\": \"PERSONAL\",\n      \"type\": \"CCPT\",\n      \"number\": \"M7891234\",\n      \"state\": \"Dublin\"\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby UK Beneficiary Validation (application/json)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"GB\",\n    \"method\": \"BANKACCOUNT\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667656f\",\n  \"creditor\": {\n    \"account\": \"927393445\",\n    \"name\": \"Leo\",\n    \"bank_id\": \"FGHJ09890\",\n    \"address_lines\": [\n      \"ABCD#WERT\"\n    ],\n    \"street_name\": \"1515 3rd Street\",\n    \"building_number\": \"A1234\",\n    \"postal_code\": \"94158\",\n    \"city\": \"Manchester\",\n    \"state\": \"Leeds\",\n    \"country\": \"GB\",\n    \"birth_date\": \"1950-09-26\",\n    \"home_phone_number\": \"+92-80808009\",\n    \"document\": {\n      \"entity\": \"PERSONAL\",\n      \"type\": \"CCPT\",\n      \"number\": \"M7891234\",\n      \"state\": \"Dublin\"\n    }\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java UK Beneficiary Validation (application/json)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"GB\",\n    \"method\": \"BANKACCOUNT\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667656f\",\n  \"creditor\": {\n    \"account\": \"927393445\",\n    \"name\": \"Leo\",\n    \"bank_id\": \"FGHJ09890\",\n    \"address_lines\": [\n      \"ABCD#WERT\"\n    ],\n    \"street_name\": \"1515 3rd Street\",\n    \"building_number\": \"A1234\",\n    \"postal_code\": \"94158\",\n    \"city\": \"Manchester\",\n    \"state\": \"Leeds\",\n    \"country\": \"GB\",\n    \"birth_date\": \"1950-09-26\",\n    \"home_phone_number\": \"+92-80808009\",\n    \"document\": {\n      \"entity\": \"PERSONAL\",\n      \"type\": \"CCPT\",\n      \"number\": \"M7891234\",\n      \"state\": \"Dublin\"\n    }\n  }\n}")
  .asString();
```

```php UK Beneficiary Validation (application/json)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "927393890",
    "name": "Hopkin"
  },
  "method": {
    "country": "GB",
    "method": "BANKACCOUNT",
    "type": "Ownership"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667656f",
  "creditor": {
    "account": "927393445",
    "name": "Leo",
    "bank_id": "FGHJ09890",
    "address_lines": [
      "ABCD#WERT"
    ],
    "street_name": "1515 3rd Street",
    "building_number": "A1234",
    "postal_code": "94158",
    "city": "Manchester",
    "state": "Leeds",
    "country": "GB",
    "birth_date": "1950-09-26",
    "home_phone_number": "+92-80808009",
    "document": {
      "entity": "PERSONAL",
      "type": "CCPT",
      "number": "M7891234",
      "state": "Dublin"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp UK Beneficiary Validation (application/json)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"GB\",\n    \"method\": \"BANKACCOUNT\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667656f\",\n  \"creditor\": {\n    \"account\": \"927393445\",\n    \"name\": \"Leo\",\n    \"bank_id\": \"FGHJ09890\",\n    \"address_lines\": [\n      \"ABCD#WERT\"\n    ],\n    \"street_name\": \"1515 3rd Street\",\n    \"building_number\": \"A1234\",\n    \"postal_code\": \"94158\",\n    \"city\": \"Manchester\",\n    \"state\": \"Leeds\",\n    \"country\": \"GB\",\n    \"birth_date\": \"1950-09-26\",\n    \"home_phone_number\": \"+92-80808009\",\n    \"document\": {\n      \"entity\": \"PERSONAL\",\n      \"type\": \"CCPT\",\n      \"number\": \"M7891234\",\n      \"state\": \"Dublin\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift UK Beneficiary Validation (application/json)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "927393890",
    "name": "Hopkin"
  ],
  "method": [
    "country": "GB",
    "method": "BANKACCOUNT",
    "type": "Ownership"
  ],
  "uetr": "921a9445-97df-4118-9a55-68d14667656f",
  "creditor": [
    "account": "927393445",
    "name": "Leo",
    "bank_id": "FGHJ09890",
    "address_lines": ["ABCD#WERT"],
    "street_name": "1515 3rd Street",
    "building_number": "A1234",
    "postal_code": "94158",
    "city": "Manchester",
    "state": "Leeds",
    "country": "GB",
    "birth_date": "1950-09-26",
    "home_phone_number": "+92-80808009",
    "document": [
      "entity": "PERSONAL",
      "type": "CCPT",
      "number": "M7891234",
      "state": "Dublin"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### IN PAN Validation (application/json)

**Request**

```json
{
  "debtor": {
    "account": "927393890",
    "name": "Hopkin"
  },
  "method": {
    "country": "IN",
    "method": "ID",
    "type": "TAXID"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "name": "Leo",
    "father_name": "Moss",
    "birth_date": "1950-09-26",
    "document": {
      "type": "TXID",
      "number": "WERHJ9012B"
    }
  }
}
```

**Response**

```json
{
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "creation_date_time": "2023-09-10T08:23:49.112Z",
  "status": {
    "date_time": "2023-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python IN PAN Validation (application/json)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "927393890",
        "name": "Hopkin"
    },
    "method": {
        "country": "IN",
        "method": "ID",
        "type": "TAXID"
    },
    "uetr": "921a9445-97df-4118-9a55-68d14667624c",
    "creditor": {
        "name": "Leo",
        "father_name": "Moss",
        "birth_date": "1950-09-26",
        "document": {
            "type": "TXID",
            "number": "WERHJ9012B"
        }
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript IN PAN Validation (application/json)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"927393890","name":"Hopkin"},"method":{"country":"IN","method":"ID","type":"TAXID"},"uetr":"921a9445-97df-4118-9a55-68d14667624c","creditor":{"name":"Leo","father_name":"Moss","birth_date":"1950-09-26","document":{"type":"TXID","number":"WERHJ9012B"}}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go IN PAN Validation (application/json)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"ID\",\n    \"type\": \"TAXID\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"name\": \"Leo\",\n    \"father_name\": \"Moss\",\n    \"birth_date\": \"1950-09-26\",\n    \"document\": {\n      \"type\": \"TXID\",\n      \"number\": \"WERHJ9012B\"\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby IN PAN Validation (application/json)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"ID\",\n    \"type\": \"TAXID\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"name\": \"Leo\",\n    \"father_name\": \"Moss\",\n    \"birth_date\": \"1950-09-26\",\n    \"document\": {\n      \"type\": \"TXID\",\n      \"number\": \"WERHJ9012B\"\n    }\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java IN PAN Validation (application/json)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"ID\",\n    \"type\": \"TAXID\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"name\": \"Leo\",\n    \"father_name\": \"Moss\",\n    \"birth_date\": \"1950-09-26\",\n    \"document\": {\n      \"type\": \"TXID\",\n      \"number\": \"WERHJ9012B\"\n    }\n  }\n}")
  .asString();
```

```php IN PAN Validation (application/json)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "927393890",
    "name": "Hopkin"
  },
  "method": {
    "country": "IN",
    "method": "ID",
    "type": "TAXID"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": {
    "name": "Leo",
    "father_name": "Moss",
    "birth_date": "1950-09-26",
    "document": {
      "type": "TXID",
      "number": "WERHJ9012B"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp IN PAN Validation (application/json)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"927393890\",\n    \"name\": \"Hopkin\"\n  },\n  \"method\": {\n    \"country\": \"IN\",\n    \"method\": \"ID\",\n    \"type\": \"TAXID\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667624c\",\n  \"creditor\": {\n    \"name\": \"Leo\",\n    \"father_name\": \"Moss\",\n    \"birth_date\": \"1950-09-26\",\n    \"document\": {\n      \"type\": \"TXID\",\n      \"number\": \"WERHJ9012B\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift IN PAN Validation (application/json)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "927393890",
    "name": "Hopkin"
  ],
  "method": [
    "country": "IN",
    "method": "ID",
    "type": "TAXID"
  ],
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "creditor": [
    "name": "Leo",
    "father_name": "Moss",
    "birth_date": "1950-09-26",
    "document": [
      "type": "TXID",
      "number": "WERHJ9012B"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Pay2China Merchant Validation (application/json)

**Request**

```json
{
  "debtor": {
    "account": "P39023128",
    "name": "Das",
    "ultimate_debtor": {
      "name": "Ethan",
      "account": "403653000011"
    }
  },
  "method": {
    "country": "CN",
    "method": "MERCHANTID",
    "type": "Ownership"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667222f",
  "creditor": {
    "id": "M20220520100001",
    "work_phone_number": "19988886666",
    "beneficial_owner": {
      "name": "Dino",
      "id": "330001202219817200"
    },
    "document": {
      "entity": "BUSINESS",
      "type": "EMPL",
      "number": "91330100799655058B"
    }
  }
}
```

**Response**

```json
{
  "end_to_end_id": "r/434SKtUcd01",
  "uetr": "921a9445-97df-4118-9a55-68d14667624c",
  "debtor": {
    "account": "927393038",
    "name": "John"
  },
  "creditor": {
    "account": "927393908",
    "name": "Mathew",
    "bank_id": "FGHJ0985026"
  },
  "method": {
    "country": "IN",
    "method": "IMPS",
    "type": "AER",
    "penny_test": "NONPENNY"
  },
  "creation_date_time": "2023-09-10T08:23:49.112Z",
  "status": {
    "date_time": "2023-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python Pay2China Merchant Validation (application/json)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "P39023128",
        "name": "Das",
        "ultimate_debtor": {
            "name": "Ethan",
            "account": "403653000011"
        }
    },
    "method": {
        "country": "CN",
        "method": "MERCHANTID",
        "type": "Ownership"
    },
    "uetr": "921a9445-97df-4118-9a55-68d14667222f",
    "creditor": {
        "id": "M20220520100001",
        "work_phone_number": "19988886666",
        "beneficial_owner": {
            "name": "Dino",
            "id": "330001202219817200"
        },
        "document": {
            "entity": "BUSINESS",
            "type": "EMPL",
            "number": "91330100799655058B"
        }
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Pay2China Merchant Validation (application/json)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"P39023128","name":"Das","ultimate_debtor":{"name":"Ethan","account":"403653000011"}},"method":{"country":"CN","method":"MERCHANTID","type":"Ownership"},"uetr":"921a9445-97df-4118-9a55-68d14667222f","creditor":{"id":"M20220520100001","work_phone_number":"19988886666","beneficial_owner":{"name":"Dino","id":"330001202219817200"},"document":{"entity":"BUSINESS","type":"EMPL","number":"91330100799655058B"}}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Pay2China Merchant Validation (application/json)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"P39023128\",\n    \"name\": \"Das\",\n    \"ultimate_debtor\": {\n      \"name\": \"Ethan\",\n      \"account\": \"403653000011\"\n    }\n  },\n  \"method\": {\n    \"country\": \"CN\",\n    \"method\": \"MERCHANTID\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667222f\",\n  \"creditor\": {\n    \"id\": \"M20220520100001\",\n    \"work_phone_number\": \"19988886666\",\n    \"beneficial_owner\": {\n      \"name\": \"Dino\",\n      \"id\": \"330001202219817200\"\n    },\n    \"document\": {\n      \"entity\": \"BUSINESS\",\n      \"type\": \"EMPL\",\n      \"number\": \"91330100799655058B\"\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Pay2China Merchant Validation (application/json)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"P39023128\",\n    \"name\": \"Das\",\n    \"ultimate_debtor\": {\n      \"name\": \"Ethan\",\n      \"account\": \"403653000011\"\n    }\n  },\n  \"method\": {\n    \"country\": \"CN\",\n    \"method\": \"MERCHANTID\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667222f\",\n  \"creditor\": {\n    \"id\": \"M20220520100001\",\n    \"work_phone_number\": \"19988886666\",\n    \"beneficial_owner\": {\n      \"name\": \"Dino\",\n      \"id\": \"330001202219817200\"\n    },\n    \"document\": {\n      \"entity\": \"BUSINESS\",\n      \"type\": \"EMPL\",\n      \"number\": \"91330100799655058B\"\n    }\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java Pay2China Merchant Validation (application/json)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"P39023128\",\n    \"name\": \"Das\",\n    \"ultimate_debtor\": {\n      \"name\": \"Ethan\",\n      \"account\": \"403653000011\"\n    }\n  },\n  \"method\": {\n    \"country\": \"CN\",\n    \"method\": \"MERCHANTID\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667222f\",\n  \"creditor\": {\n    \"id\": \"M20220520100001\",\n    \"work_phone_number\": \"19988886666\",\n    \"beneficial_owner\": {\n      \"name\": \"Dino\",\n      \"id\": \"330001202219817200\"\n    },\n    \"document\": {\n      \"entity\": \"BUSINESS\",\n      \"type\": \"EMPL\",\n      \"number\": \"91330100799655058B\"\n    }\n  }\n}")
  .asString();
```

```php Pay2China Merchant Validation (application/json)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "P39023128",
    "name": "Das",
    "ultimate_debtor": {
      "name": "Ethan",
      "account": "403653000011"
    }
  },
  "method": {
    "country": "CN",
    "method": "MERCHANTID",
    "type": "Ownership"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667222f",
  "creditor": {
    "id": "M20220520100001",
    "work_phone_number": "19988886666",
    "beneficial_owner": {
      "name": "Dino",
      "id": "330001202219817200"
    },
    "document": {
      "entity": "BUSINESS",
      "type": "EMPL",
      "number": "91330100799655058B"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Pay2China Merchant Validation (application/json)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"P39023128\",\n    \"name\": \"Das\",\n    \"ultimate_debtor\": {\n      \"name\": \"Ethan\",\n      \"account\": \"403653000011\"\n    }\n  },\n  \"method\": {\n    \"country\": \"CN\",\n    \"method\": \"MERCHANTID\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667222f\",\n  \"creditor\": {\n    \"id\": \"M20220520100001\",\n    \"work_phone_number\": \"19988886666\",\n    \"beneficial_owner\": {\n      \"name\": \"Dino\",\n      \"id\": \"330001202219817200\"\n    },\n    \"document\": {\n      \"entity\": \"BUSINESS\",\n      \"type\": \"EMPL\",\n      \"number\": \"91330100799655058B\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Pay2China Merchant Validation (application/json)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "P39023128",
    "name": "Das",
    "ultimate_debtor": [
      "name": "Ethan",
      "account": "403653000011"
    ]
  ],
  "method": [
    "country": "CN",
    "method": "MERCHANTID",
    "type": "Ownership"
  ],
  "uetr": "921a9445-97df-4118-9a55-68d14667222f",
  "creditor": [
    "id": "M20220520100001",
    "work_phone_number": "19988886666",
    "beneficial_owner": [
      "name": "Dino",
      "id": "330001202219817200"
    ],
    "document": [
      "entity": "BUSINESS",
      "type": "EMPL",
      "number": "91330100799655058B"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Pay2China Merchant Validation (application/xml)

**Request**

```json
{
  "debtor": {
    "account": "P39023128",
    "name": "Das",
    "ultimate_debtor": {
      "name": "Ethan",
      "account": "403653000011"
    }
  },
  "method": {
    "country": "CN",
    "method": "MERCHANTID",
    "type": "Ownership"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667222f",
  "creditor": {
    "id": "M20220520100001",
    "work_phone_number": "19988886666",
    "beneficial_owner": {
      "name": "Dino",
      "id": "330001202219817200"
    },
    "document": {
      "entity": "BUSINESS",
      "type": "EMPL",
      "number": "91330100799655058B"
    }
  }
}
```

**Response**

```json
{
  "uetr": "921a9445-97df-4118-9a55-68d14667222f",
  "debtor": {
    "account": "P39023128",
    "name": "Das",
    "ultimate_debtor": {
      "name": "Ethan",
      "account": "403653000011"
    }
  },
  "creditor": {
    "id": "M20220520100001",
    "work_phone_number": "19988886666",
    "beneficial_owner": {
      "name": "Dino",
      "id": "330001202219817200"
    },
    "document": {
      "entity": "BUSINESS",
      "type": "EMPL",
      "number": "91330100799655058B"
    }
  },
  "method": {
    "country": "CN",
    "method": "MERCHANTID",
    "type": "Ownership"
  },
  "status": {
    "date_time": "2024-01-10T08:59:10.489Z",
    "code": "ACTC",
    "description": "Accepted"
  }
}
```

**SDK Code**

```python Pay2China Merchant Validation (application/xml)
import requests

url = "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

payload = {
    "debtor": {
        "account": "P39023128",
        "name": "Das",
        "ultimate_debtor": {
            "name": "Ethan",
            "account": "403653000011"
        }
    },
    "method": {
        "country": "CN",
        "method": "MERCHANTID",
        "type": "Ownership"
    },
    "uetr": "921a9445-97df-4118-9a55-68d14667222f",
    "creditor": {
        "id": "M20220520100001",
        "work_phone_number": "19988886666",
        "beneficial_owner": {
            "name": "Dino",
            "id": "330001202219817200"
        },
        "document": {
            "entity": "BUSINESS",
            "type": "EMPL",
            "number": "91330100799655058B"
        }
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Pay2China Merchant Validation (application/xml)
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"debtor":{"account":"P39023128","name":"Das","ultimate_debtor":{"name":"Ethan","account":"403653000011"}},"method":{"country":"CN","method":"MERCHANTID","type":"Ownership"},"uetr":"921a9445-97df-4118-9a55-68d14667222f","creditor":{"id":"M20220520100001","work_phone_number":"19988886666","beneficial_owner":{"name":"Dino","id":"330001202219817200"},"document":{"entity":"BUSINESS","type":"EMPL","number":"91330100799655058B"}}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Pay2China Merchant Validation (application/xml)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations"

	payload := strings.NewReader("{\n  \"debtor\": {\n    \"account\": \"P39023128\",\n    \"name\": \"Das\",\n    \"ultimate_debtor\": {\n      \"name\": \"Ethan\",\n      \"account\": \"403653000011\"\n    }\n  },\n  \"method\": {\n    \"country\": \"CN\",\n    \"method\": \"MERCHANTID\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667222f\",\n  \"creditor\": {\n    \"id\": \"M20220520100001\",\n    \"work_phone_number\": \"19988886666\",\n    \"beneficial_owner\": {\n      \"name\": \"Dino\",\n      \"id\": \"330001202219817200\"\n    },\n    \"document\": {\n      \"entity\": \"BUSINESS\",\n      \"type\": \"EMPL\",\n      \"number\": \"91330100799655058B\"\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Pay2China Merchant Validation (application/xml)
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"debtor\": {\n    \"account\": \"P39023128\",\n    \"name\": \"Das\",\n    \"ultimate_debtor\": {\n      \"name\": \"Ethan\",\n      \"account\": \"403653000011\"\n    }\n  },\n  \"method\": {\n    \"country\": \"CN\",\n    \"method\": \"MERCHANTID\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667222f\",\n  \"creditor\": {\n    \"id\": \"M20220520100001\",\n    \"work_phone_number\": \"19988886666\",\n    \"beneficial_owner\": {\n      \"name\": \"Dino\",\n      \"id\": \"330001202219817200\"\n    },\n    \"document\": {\n      \"entity\": \"BUSINESS\",\n      \"type\": \"EMPL\",\n      \"number\": \"91330100799655058B\"\n    }\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java Pay2China Merchant Validation (application/xml)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"debtor\": {\n    \"account\": \"P39023128\",\n    \"name\": \"Das\",\n    \"ultimate_debtor\": {\n      \"name\": \"Ethan\",\n      \"account\": \"403653000011\"\n    }\n  },\n  \"method\": {\n    \"country\": \"CN\",\n    \"method\": \"MERCHANTID\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667222f\",\n  \"creditor\": {\n    \"id\": \"M20220520100001\",\n    \"work_phone_number\": \"19988886666\",\n    \"beneficial_owner\": {\n      \"name\": \"Dino\",\n      \"id\": \"330001202219817200\"\n    },\n    \"document\": {\n      \"entity\": \"BUSINESS\",\n      \"type\": \"EMPL\",\n      \"number\": \"91330100799655058B\"\n    }\n  }\n}")
  .asString();
```

```php Pay2China Merchant Validation (application/xml)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations', [
  'body' => '{
  "debtor": {
    "account": "P39023128",
    "name": "Das",
    "ultimate_debtor": {
      "name": "Ethan",
      "account": "403653000011"
    }
  },
  "method": {
    "country": "CN",
    "method": "MERCHANTID",
    "type": "Ownership"
  },
  "uetr": "921a9445-97df-4118-9a55-68d14667222f",
  "creditor": {
    "id": "M20220520100001",
    "work_phone_number": "19988886666",
    "beneficial_owner": {
      "name": "Dino",
      "id": "330001202219817200"
    },
    "document": {
      "entity": "BUSINESS",
      "type": "EMPL",
      "number": "91330100799655058B"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Pay2China Merchant Validation (application/xml)
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"debtor\": {\n    \"account\": \"P39023128\",\n    \"name\": \"Das\",\n    \"ultimate_debtor\": {\n      \"name\": \"Ethan\",\n      \"account\": \"403653000011\"\n    }\n  },\n  \"method\": {\n    \"country\": \"CN\",\n    \"method\": \"MERCHANTID\",\n    \"type\": \"Ownership\"\n  },\n  \"uetr\": \"921a9445-97df-4118-9a55-68d14667222f\",\n  \"creditor\": {\n    \"id\": \"M20220520100001\",\n    \"work_phone_number\": \"19988886666\",\n    \"beneficial_owner\": {\n      \"name\": \"Dino\",\n      \"id\": \"330001202219817200\"\n    },\n    \"document\": {\n      \"entity\": \"BUSINESS\",\n      \"type\": \"EMPL\",\n      \"number\": \"91330100799655058B\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Pay2China Merchant Validation (application/xml)
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "debtor": [
    "account": "P39023128",
    "name": "Das",
    "ultimate_debtor": [
      "name": "Ethan",
      "account": "403653000011"
    ]
  ],
  "method": [
    "country": "CN",
    "method": "MERCHANTID",
    "type": "Ownership"
  ],
  "uetr": "921a9445-97df-4118-9a55-68d14667222f",
  "creditor": [
    "id": "M20220520100001",
    "work_phone_number": "19988886666",
    "beneficial_owner": [
      "name": "Dino",
      "id": "330001202219817200"
    ],
    "document": [
      "entity": "BUSINESS",
      "type": "EMPL",
      "number": "91330100799655058B"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/beneficiaryvalidations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```