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

# Initiate a non payment message

POST https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/{uetr}/messages
Content-Type: application/json

This endpoint validates your request and responds with HTTP status 202 (accepted) after successful validation. If validation fails, the endpoint synchronously responds with error (HTTP status 4XX / 5XX and any applicable ISO 20022 reason code), indicating Citi couldn't accept your message initiation request.


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

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

### Path parameters

- `uetr` (string, required) — Unique end-to-end transaction reference

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

- `message_type` (enum, required) — Message Type provided by the customer - RFR - Request for Refund (camt.056) - RRFR - Response to Request for Refund(camt.029) - PCR - Payment Confirmation Request - RPCR - Response to Payment Confirmation Request - RFP - Request for Payment (pain.013) - RRFP - Response to Request for Payment (pain.014) - RRFICS - Response to Request for Information Compliance
  - Allowed values: `RFR`, `RRFR`, `PCR`, `RPCR`, `RFP`, `RRFP`, `RRFICS`
- `message` (MessageRequestMessage, required)

## Response

### 202

Accepted

- `message_id` (string, required) — Message Identification
- `creation_date_time` (datetime, required) — UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Date time when a message was created
- `message_type` (enum, required) — Message Type as provided by the customer - RFR - Request for Refund (camt.056) - RRFR - Response to Request for Refund(camt.029) - PCR - Payment Confirmation Request - RPCR - Response to Payment Confirmation Request - RFP - Request for Payment (pain.013) - RRFP - Response to Request for Payment (pain.014) - RRFICS - Response to Request for Information Compliance
  - Allowed values: `RFR`, `RRFR`, `PCR`, `RPCR`, `RFP`, `RRFP`, `RRFICS`
- `message` (InitialAcknowledgementResponseMessage, 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)

### 500 Internal Server Error

Internal Server Error

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

## Types

### MessageRequestMessage

### InitialAcknowledgementResponseMessage

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

### Final-Response-To-Request-For-Refund

Outgoing/Incoming Response to Request for Refund

- `case_id` (string, required) — Case Id received from clearing
- `decision_code` (enum, required) — Acceptance or Rejection of return of funds. Only the below 3 codes are applicable - IPAY - Acceptance to Return the payment - RJCR - Decline to Return the payment - PECR - Partially Executed Cancellation Return
  - Allowed values: `ACDA`, `ACNR`, `ACVA`, `CHRG`, `CNCL`, `CONF`, `CVAA`, `CWFW`, `FTNA`, `ICOV`, `IDUP`, `IPAY`, `IPYI`, `MCOV`, `MODI`, `MWFW`, `PDCR`, `PECR`, `PURP`, `RJCR`, `RJNR`, `RJVA`, `SMTC`, `SMTI`, `UWFW`, `BIAS`, `IDNE`, `IVCR`, `INFO`, `NINF`, `PDNG`
- `end_to_end_id` (string, required) — Unique end to end id on return payment initiation
- `reasons` (FinalResponseToRequestForRefundReasons, optional)
- `method` (enum, optional) — Method type - MPNS - for ACH payment - RTGS - for FedWire - RTNS - for CHIPS - RT1 - for SEPA IP payments
  - Allowed values: `MPNS`, `RTGS`, `RTNS`, `RT1`
- `interbank_settlement_date` (date, optional) — YYYY-MM-DD Intended interbank settlement date
- `instructed_amount` (double, optional) — Instructed amount for partial acceptance of return request - Mandatory for ResponseToRequest-For-Refund with decision code as PECR.
- `instructed_currency` (enum, optional) — Instructed currency for partial acceptance of return request - Mandatory for ResponseToRequest-For-Refund with decision code as PECR
  - Allowed values: `USD`, `EUR`, `AUD`
- `instruction_id` (string, optional) — Unique Instruction id on return payment initiation
- `country` (enum, optional, default: US) — ISO 3166 Alpha-2 code for the non pay message country. - This field is optional for US - This field is mandatory for SEPA
  - Allowed values: `US`, `IE`, `DE`, `AT`, `BE`, `FI`, `FR`, `GR`, `IT`, `LU`, `NL`, `PT`, `ES`, `SK`, `AU`
- `network` (enum, optional) — Financial market infrastructure or clearing system (e.g., RTP Network in the United States) - RTP for TCH - FDN for FedNow
  - Allowed values: `RTP`, `FDN`
- `debtor` (Debtor-Refund, optional)
- `ultimate_debtor` (Ultimate-Debtor-Refund, optional)
- `status` (FinalResponseToRequestForRefundStatus, optional)
- `return_id` (string, optional) — If other FI wants to return funds outside of RTP, the unique identifier of the transaction used to return the funds must be included in this field - If via ACH, Trace Number must be populated - If via FedWire -- IMAD must be populated - If via CHIPS -- System Sequence Number (SSN) must be populated

### Final-Response-To-Payment-Confirmation-Request

Outgoing Response to Payment Confirmation Request

- `status` (FinalResponseToPaymentConfirmationRequestStatus, required)
- `reasons` (FinalResponseToPaymentConfirmationRequestReasons, optional)

### Response-To-Request-For-Payment

Response to Request for Payment

- `decision_code` (enum, required) — Acceptance or Rejection of request for payment - ACTC - Acceptance to make requested payment - RJCT - Decline to pay requested amount
  - Allowed values: `ACTC`, `RJCT`
- `end_to_end_id` (string, required) — Unique End to End ID of Response to Request for Payment
- `accepted_amount` (double, optional) — Amount to be paid from Request for Payment.Indicates if Instructed amount in Payment request will be paid, or different amount.If Different amount not allowed by Payment Request, this field must carry Instructed amount - Mandatory if message.decision_code = ACTC
- `accepted_currency` (enum, optional) — ISO 4217 code for the accepted currency - Mandatory if message.decision_code = ACTC
  - Allowed values: `USD`
- `scheduled_exec_date` (date, optional) — Date payment is expected to be made.Format is YYYY-MM-DD - Mandatory if message.decision_code = ACTC
- `reasons` (ResponseToRequestForPaymentReasons, optional)
- `debtor` (Debtor-Payment, optional)
- `ultimate_debtor` (Ultimate-Debtor-Payment, optional)
- `status` (ResponseToRequestForPaymentStatus, optional)

### Outgoing-Request-For-Refund

Outgoing Request For Refund

- `reasons` (OutgoingRequestForRefundReasons, optional)
- `country` (enum, optional, default: US) — ISO 3166 Alpha-2 code for the non pay message country. - This field is optional for US - This field is mandatory for SEPA
  - Allowed values: `US`, `IE`, `DE`, `AT`, `BE`, `FI`, `FR`, `GR`, `IT`, `LU`, `NL`, `PT`, `ES`, `SK`, `GB`, `AU`

### Response-To-Request-For-Information-Compliance

Response to Request for Information Compliance

- `rrfics` (ResponseToRequestForInformationComplianceRrfics, optional) — Response to Request for Information Compliance

### Initial-Response-To-Request-For-Refund

- `case_id` (string, required) — Case Id received from clearing
- `decision_code` (enum, required) — Acceptance or Rejection of return of funds. Only the below 3 codes are applicable - IPAY - Acceptance to Return the payment - RJCR - Decline to Return the payment - PECR - Partially Executed Cancellation Return
  - Allowed values: `ACDA`, `ACNR`, `ACVA`, `CHRG`, `CNCL`, `CONF`, `CVAA`, `CWFW`, `FTNA`, `ICOV`, `IDUP`, `IPAY`, `IPYI`, `MCOV`, `MODI`, `MWFW`, `PDCR`, `PECR`, `PURP`, `RJCR`, `RJNR`, `RJVA`, `SMTC`, `SMTI`, `UWFW`, `BIAS`, `IDNE`, `IVCR`, `INFO`, `NINF`, `PDNG`
- `end_to_end_id` (string, required) — Unique end to end id on return payment initiation
- `reasons` (InitialResponseToRequestForRefundReasons, optional)
- `instructed_amount` (double, optional) — Instructed amount for partial acceptance of return request - Mandatory for ResponseToRequest-For-Refund with decision code as PECR.
- `instructed_currency` (enum, optional) — Instructed currency for partial acceptance of return request - Mandatory for ResponseToRequest-For-Refund with decision code as PECR
  - Allowed values: `USD`, `EUR`, `AUD`
- `instruction_id` (string, optional) — Unique Instruction id on return payment initiation
- `country` (enum, optional, default: US) — ISO 3166 Alpha-2 code for the non pay message country. - This field is optional for US - This field is mandatory for SEPA
  - Allowed values: `US`, `IE`, `DE`, `AT`, `BE`, `FI`, `FR`, `GR`, `IT`, `LU`, `NL`, `PT`, `ES`, `SK`, `AU`
- `status` (InitialResponseToRequestForRefundStatus, optional)

### Initial-Response-To-Payment-Confirmation-Request

- `uetr` (string, optional) — UETR of Original payment
- `status` (InitialResponseToPaymentConfirmationRequestStatus, optional)

### Initial-Response-To-Request-For-Payment

- `decision_code` (enum, required) — Acceptance or Rejection of request for payment - ACTC - Acceptance to make requested payment - RJCT - Decline to pay requested amount
  - Allowed values: `ACTC`, `RJCT`
- `end_to_end_id` (string, required) — Unique End to End ID of Response to Request for Payment
- `uetr` (string, optional) — UUID v4 format unique reference generated in outgoing payment
- `accepted_amount` (double, optional) — Amount to be paid from Request for Payment.Indicates if Instructed amount in Payment request will be paid, or different amount.If Different amount not allowed by Payment Request, this field must carry Instructed amount - Mandatory if message.decision_code = ACTC
- `accepted_currency` (enum, optional) — ISO 4217 code for the accepted currency - Mandatory if message.decision_code = ACTC
  - Allowed values: `USD`
- `scheduled_exec_date` (date, optional) — Date payment is expected to be made.Format is YYYY-MM-DD - Mandatory if message.decision_code = ACTC
- `reasons` (InitialResponseToRequestForPaymentReasons, optional)
- `debtor` (Debtor-Payment, optional)
- `ultimate_debtor` (Ultimate-Debtor-Payment, optional)
- `status` (InitialResponseToRequestForPaymentStatus, optional)

### Initial-Outgoing-Request-For-Refund

- `reasons` (InitialOutgoingRequestForRefundReasons, optional)
- `country` (enum, optional, default: US) — ISO 3166 Alpha-2 code for the non pay message country. - This field is optional for US - This field is mandatory for SEPA
  - Allowed values: `US`, `IE`, `DE`, `AT`, `BE`, `FI`, `FR`, `GR`, `IT`, `LU`, `NL`, `PT`, `ES`, `SK`, `GB`, `AU`
- `status` (InitialOutgoingRequestForRefundStatus, optional)

### Initial-Response-To-Request-for-Information-Compliance

- `uetr` (string, optional) — UETR of Original payment
- `status` (InitialResponseToRequestForInformationComplianceStatus, optional)

### FinalResponseToRequestForRefundReasons

- `code` (enum, optional) — Code of Transaction reasons - If decision_code = RJCR,reasons.code is mandatory for ResponseToRequest-For-Refund
  - Allowed values: `AC04`, `ADAC`, `AGNT`, `AM04`, `ARDT`, `ARPL`, `CUST`, `LEGL`, `NARR`, `NOAS`, `NOOR`, `PTNA`, `RQDA`, `WSEQ`, `IDMN`, `ACLR`, `AEXR`, `ARFR`, `ARJR`, `PATE`, `RR04`, `RCAR`, `RCNR`, `RCPR`, `URTP`
- `description` (string, optional) — Reason code description (e.g., Debtor account is invalid.). - For reasons.code = NARR this field is mandatory

### Debtor-Refund

- `name` (string, optional) — Name of Debtor to be passed for Refund payment - For United States debtor.name field is mandatory for decision code IPAY and PECR - For Thailand debtor.name field is not applicable - For Brazil debtor.name field is not applicable - For SEPA debtor.name field is not applicable
- `street_name` (string, optional) — Street Name of Debtor to be passed for Refund payment - For United States debtor.street_name field is optional - For Thailand debtor.street_name field is not applicable - For Brazil debtor.street_name field is not applicable - For SEPA debtor.street_name field is not applicable
- `building_number` (string, optional) — Building number of Debtor to be passed for Refund payment - For United States debtor.building_number field is optional - For Thailand debtor.building_number field is not applicable - For Brazil debtor.building_number field is not applicable - For SEPA debtor.building_number field is not applicable
- `postal_code` (string, optional) — Postal code of Debtor to be passed for Refund payment - For United States debtor.postal_code field is optional - For Thailand debtor.postal_code field is not applicable - For Brazil debtor.postal_code field is not applicable - For SEPA debtor.postal_code field is not applicable
- `city` (string, optional) — City of Debtor to be passed for Refund payment - For United States debtor.city field is optional - For Thailand debtor.city field is not applicable - For Brazil debtor.city field is not applicable - For SEPA debtor.city field is not applicable
- `state` (string, optional) — State of Debtor to be passed for Refund payment - For United States debtor.state field is optional - For Thailand debtor.state field is not applicable - For Brazil debtor.state field is not applicable - For SEPA debtor.state field is not applicable
- `country` (string, optional) — Country of Debtor to be passed for Refund payment - For United States debtor.country field is optional - For Thailand debtor.country field is not applicable - For Brazil debtor.country field is not applicable - For SEPA debtor.country field is not applicable
- `address_lines` (list of string, optional) — Debtor Address lines which is array of 7 lines and each line has maximum 70 characters which is to be passed for Refund payment - For United States debtor.address_lines field is optional - For Thailand debtor.address_lines field is not applicable - For Brazil debtor.address_lines field is not applicable - For SEPA debtor.address_lines field is not applicable

### Ultimate-Debtor-Refund

- `name` (string, optional) — Name of Ultimate Debtor to be passed for Refund payment - For United States ultimate_debtor.name field is optional - For Thailand ultimatedebtor.name field is not applicable - For Brazil ultimatedebtor.name field is not applicable - For SEPA ultimate_debtor.name field is not applicable
- `street_name` (string, optional) — Street Name of Ultimate Debtor to be passed for Refund payment - For United States ultimate_debtor.street_name field is optional - For Thailand ultimatedebtor.street_name field is not applicable - For Brazil ultimatedebtor.street_name field is not applicable - For SEPA ultimate_debtor.street_name field is not applicable
- `building_number` (string, optional) — Building number of Ultimate Debtor to be passed for Refund payment - For United States ultimate_debtor.building_number field is optional - For Thailand ultimatedebtor.building_number field is not applicable - For Brazil ultimatedebtor.building_number field is not applicable - For SEPA ultimate_debtor.building_number field is not applicable
- `postal_code` (string, optional) — Postal code of Ultimate Debtor to be passed for Refund payment - For United States ultimate_debtor.postal_code field is optional - For Thailand ultimatedebtor.postal_code field is not applicable - For Brazil ultimatedebtor.postal_code field is not applicable - For SEPA ultimate_debtor.postal_code field is not applicable
- `city` (string, optional) — City of Ultimate Debtor to be passed for Refund payment - For United States ultimate_debtor.city field is optional - For Thailand ultimatedebtor.city field is not applicable - For Brazil ultimatedebtor.city field is not applicable - For SEPA ultimate_debtor.city field is not applicable
- `state` (string, optional) — State of Ultimate Debtor to be passed for Refund payment - For United States ultimate_debtor.state field is optional - For Thailand ultimatedebtor.state field is not applicable - For Brazil ultimatedebtor.state field is not applicable - For SEPA ultimate_debtor.state field is not applicable
- `country` (string, optional) — Country of Ultimate Debtor to be passed for Refund payment - For United States ultimate_debtor.country field is optional - For Thailand ultimatedebtor.country field is not applicable - For Brazil ultimatedebtor.country field is not applicable - For SEPA ultimate_debtor.country field is not applicable
- `address_lines` (list of string, optional) — Ultimate Debtor Address lines which is array of 7 lines and each line has maximum 70 characters which is to be passed for Refund payment - For United States ultimate_debtor.address_lines field is optional - For Thailand ultimatedebtor.address_lines field is not applicable - For Brazil ultimatedebtor.address_lines field is not applicable - For SEPA ultimate_debtor.address_lines field is not applicable

### FinalResponseToRequestForRefundStatus

- `date_time` (datetime, required) — UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Date time, -, status change date time
- `code` (enum, required) — ISO 20022 message status code
  - Allowed values: `RCVD`, `RJCT`, `PDNG`
- `description` (string, required) — Status code description - RJCT - Rejected - RCVD - Received - PDNG - Pending
- `reasons` (FinalResponseToRequestForRefundStatusReasons, optional)

### FinalResponseToPaymentConfirmationRequestStatus

- `date_time` (datetime, required) — UTC (YYYY-MM-DDTHH:MM:SS.sssZ) date time
- `code` (enum, required) — ISO 20022 message status code
  - Allowed values: `ACSC`, `RJCT`
- `description` (string, required) — Status code description - ACSC - Accepted - RJCT - Rejected

### FinalResponseToPaymentConfirmationRequestReasons

- `code` (enum, optional) — Reason code (mandatory when status is rejected) - For US RPCR, client need to pass reason.code only AC02,AC03,AC04,AC06,AC11,AC13,AC14,AG01,AG03,AM02,AM04,AM09,AM12,AM13,AM14,NARR - For Thailand RPCR, client need to pass reason.code only AM09 or NARR - For SEPA RPCR, client need to pass reason.code only AM05,AC01,AC04,AC06,RR04,AG01,MS03,MS02
  - Allowed values: `AC02`, `AC03`, `AC04`, `AC06`, `AC11`, `AC13`, `AC14`, `AG01`, `AG03`, `AM02`, `AM04`, `AM09`, `AM12`, `AM13`, `AM14`, `NARR`, `AM05`, `AC01`, `RR04`, `MS02`, `MS03`
- `description` (string, optional) — Reason code description - AC02- Debtor account number invalid or missing - AC03- Creditor account number invalid or missing - AC04- Account number specified has been closed on the bank of account’s books - AC06- Account specified is blocked,prohibiting posting of transactions against it - AC11- Creditor account currency is invalid or missing - AC13- Debtor account type invalid - AC14- Creditor account type invalid - AG01- Transaction forbidden on this type of account (formerly NoAgreement) - AG03- Transaction type not supported / authorized on this account - AM02- Specific transaction/message amount is greater than allowed maximum - AM04- Amount of funds available to cover specified message amount is insufficient - AM09- Amount received is not the amount agreed or expected - AM12- Amount is invalid or missing - AM13- Transaction amount exceeds limits set by clearing system - AM14- Transaction amount exceeds limits agreed between bank and client - NARR- Put the description as per clearing guideline for NARR (if reasons.code is NARR, reasons.decription is mandatory) - AM05- Duplication - AC01- Incorrect Account Number - RR04- Regulatory Reason - MS03- Not Specified Reason Agent Generated - MS02- Not Specified Reason Customer Generated

### ResponseToRequestForPaymentReasons

- `code` (enum, optional) — Code of Transaction reasons - Mandatory if message.decision_code = RJCT
  - Allowed values: `AC06`, `AG01`, `AG03`, `AM09`, `AM14`, `BE04`, `BE07`, `CH11`, `CUST`, `DS04`, `MD07`, `NARR`, `SL12`
- `description` (string, optional) — Description of Transaction reasons - Mandatory if message.reasons.code = NARR

### Debtor-Payment

- `name` (string, optional) — Name of Debtor that may be passed for payment initiation
- `street_name` (string, optional) — Street Name of Debtor that may be passed for payment initiation
- `building_number` (string, optional) — Building number of Debtor that may be passed for payment initiation
- `postal_code` (string, optional) — Postal code of Debtor that may be passed for payment initiation
- `city` (string, optional) — City of Debtor that may be passed for payment initiation
- `state` (string, optional) — State of Debtor that may be passed for payment initiation
- `country` (string, optional) — Country of Debtor that may be passed for payment initiation
- `address_lines` (list of string, optional) — Debtor Address lines which is array of 7 lines and each line has maximum 70 characters which may be passed for payment initiation

### Ultimate-Debtor-Payment

- `name` (string, optional) — Name of Ultimate Debtor that may be passed for payment initiation
- `street_name` (string, optional) — Street Name of Ultimate Debtor that may be passed for payment initiation
- `building_number` (string, optional) — Building number of Ultimate Debtor that may be passed for payment initiation
- `postal_code` (string, optional) — Postal code of Ultimate Debtor that may be passed for payment initiation
- `city` (string, optional) — City of Ultimate Debtor that may be passed for payment initiation
- `state` (string, optional) — State of Ultimate Debtor that may be passed for payment initiation
- `country` (string, optional) — Country of Ultimate Debtor that may be passed for payment initiation
- `address_lines` (list of string, optional) — Ultimate Debtor Address lines which is array of 7 lines and each line has maximum 70 characters which may be passed for payment initiation

### ResponseToRequestForPaymentStatus

- `date_time` (datetime, required) — UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Status change date time
- `code` (enum, required) — ISO 20022 message status code
  - Allowed values: `RCVD`, `RJCT`, `PDNG`
- `description` (string, required) — Status code description - RCVD - Received - RJCT - Rejected - PDNG - Pending
- `reasons` (ResponseToRequestForPaymentStatusReasons, optional)

### OutgoingRequestForRefundReasons

- `code` (enum, required) — Code of Transaction reasons - For US RTP the applicable reason.code are (AC03,AM09,CUST,DUPL,FRAD,FRTR,TECH,UPAY) - For AU the applicable reason.code are (DUPL,AGNT,CURR,CUST,UPAY,CUTA,TECH,FRAD) - AC03 InvalidCreditorAccountNumber - AM09 WrongAmount - CUST Requested by Customer - DUPL DuplicatePayment - FRAD FraudulentOrigin - FRTR FinalResponse - TECH TechnicalProblem - UPAY UnduePayment - UAPA Customer claims Credit Transfer is fraudulently induced - AGNT Agent Decision - CURR Incorrect Currency - CUTA Cancel Upon Unable To Apply
  - Allowed values: `AC03`, `AM09`, `CUST`, `DUPL`, `FRAD`, `FRTR`, `TECH`, `UPAY`, `UAPA`, `AGNT`, `CURR`, `CUTA`
- `description` (string, optional) — Description of Transaction reasons. - For RFP warranty claim, the following codes/ warranty component may be used.The client may populate the code and warranty component, OR code, comma, free form text - N: No Legitimate Purpose - F: Part of Fraudulent Scheme to Induce Payment - H: Harassing - U: Otherwise Unlawful

### ResponseToRequestForInformationComplianceRrfics

Response to Request for Information Compliance

- `alert_id` (string, required) — RFI Alert ID.
- `request_id` (string, required) — RFI Request ID.
- `response_date_time` (datetime, required) — RFI Response Date Time.
- `purpose_of_transaction` (string, optional) — Purpose Of Transaction.
- `additional_details` (string, optional) — Additional Details.
- `fieldlevel_responses` (list of Field-level-Responses-For-RRFICS, optional) — This block will contain 3 fields (id, name,value) and at least 1 field from the input type for which response is provided.

### InitialResponseToRequestForRefundReasons

- `code` (enum, optional) — Code of Transaction reasons - If decision_code = RJCR,reasons.code is mandatory for ResponseToRequest-For-Refund
  - Allowed values: `AC04`, `ADAC`, `AGNT`, `AM04`, `ARDT`, `ARPL`, `CUST`, `LEGL`, `NARR`, `NOAS`, `NOOR`, `PTNA`, `RQDA`, `WSEQ`, `IDMN`, `ACLR`, `AEXR`, `ARFR`, `ARJR`, `PATE`, `RR04`, `RCAR`, `RCNR`, `RCPR`, `URTP`
- `description` (string, optional) — Reason code description (e.g., Debtor account is invalid.). - For reasons.code = NARR this field is mandatory

### InitialResponseToRequestForRefundStatus

- `date_time` (datetime, required) — UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Status change date time
- `code` (enum, required) — ISO 20022 message status code
  - Allowed values: `PDNG`
- `description` (string, required) — Status code description - PDNG - Pending

### InitialResponseToPaymentConfirmationRequestStatus

- `date_time` (datetime, required) — UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Status change date time
- `code` (enum, required) — ISO 20022 message status code
  - Allowed values: `PDNG`
- `description` (string, required) — Status code description - PDNG - Pending

### InitialResponseToRequestForPaymentReasons

- `code` (enum, optional) — Code of Transaction reasons - Mandatory if message.decision_code = RJCT
  - Allowed values: `AC06`, `AG01`, `AG03`, `AM09`, `AM14`, `BE04`, `BE07`, `CH11`, `CUST`, `DS04`, `MD07`, `NARR`, `SL12`
- `description` (string, optional) — Description of Transaction reasons - Mandatory if message.reasons.code = NARR

### InitialResponseToRequestForPaymentStatus

- `date_time` (datetime, required) — UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Status change date time
- `code` (enum, required) — ISO 20022 message status code
  - Allowed values: `PDNG`
- `description` (string, required) — Status code description - PDNG - Pending

### InitialOutgoingRequestForRefundReasons

- `code` (enum, required) — Code of Transaction reasons - AC03 InvalidCreditorAccountNumber - AM09 WrongAmount - CUST Requested by Customer - DUPL DuplicatePayment - FRAD FraudulentOrigin - FRTR FinalResponse - TECH TechnicalProblem - UPAY UnduePayment - UAPA Customer claims Credit Transfer is fraudulently induced - AGNT Agent Decision - CURR Incorrect Currency - CUTA Cancel Upon Unable To Apply
  - Allowed values: `AC03`, `AM09`, `CUST`, `DUPL`, `FRAD`, `FRTR`, `TECH`, `UPAY`, `UAPA`, `AGNT`, `CURR`, `CUTA`
- `description` (string, optional) — Description of Transaction reasons. - For RFP warranty claim, the following codes/ warranty component may be used.The client may populate the code and warranty component, OR code, comma, free form text - N: No Legitimate Purpose - F: Part of Fraudulent Scheme to Induce Payment - H: Harassing - U: Otherwise Unlawful

### InitialOutgoingRequestForRefundStatus

- `date_time` (datetime, required) — UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Status change date time
- `code` (enum, required) — ISO 20022 message status code
  - Allowed values: `PDNG`
- `description` (string, required) — Status code description - PDNG - Pending

### InitialResponseToRequestForInformationComplianceStatus

- `date_time` (datetime, required) — UTC (ISO 8601 YYYY-MM-DDTHH:MM:SS.sssZ) - Status change date time
- `code` (enum, required) — ISO 20022 message status code
  - Allowed values: `PDNG`
- `description` (string, required) — Status code description - PDNG - Pending

### FinalResponseToRequestForRefundStatusReasons

- `code` (string, optional) — Reason code (applicable when message is rejected)
- `description` (string, optional) — Reason code description (e.g., Debtor account is invalid.)

### ResponseToRequestForPaymentStatusReasons

- `code` (string, optional) — Reason code (applicable when message is rejected)
- `description` (string, optional) — Reason code description (e.g., Debtor account is invalid.)

### Field-level-Responses-For-RRFICS

“FieldlevelResponsesForRRFICS”

- `field_id` (string, optional) — Field ID.
- `field_name` (string, optional) — Field name.
- `field_value` (string, optional) — Field value.
- `individual` (FieldLevelResponsesForRrficsIndividual, optional) — Input type selected as Individual. When individual is selected any one of the fields displayed under individual object are mandatory
- `entity` (FieldLevelResponsesForRrficsEntity, optional) — Input type selected as Entity. When Entity is selected any one of the fields displayed under entity object are mandatory
- `vessel` (FieldLevelResponsesForRrficsVessel, optional) — Input type selected as vessel. When vessel is selected any one of the fields displayed under vessel object are mandatory
- `aircraft` (FieldLevelResponsesForRrficsAircraft, optional) — Input type selected as aircraft. When aircraft is selected any one of the fields displayed under aircraft object are mandatory

### FieldLevelResponsesForRrficsIndividual

Input type selected as Individual. When individual is selected any one of the fields displayed under individual object are mandatory

- `name` (string, optional) — Name of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `street_name` (string, optional) — Street Name of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `building_number` (string, optional) — Building Number of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `postal_code` (string, optional) — Postal Code of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `city` (string, optional) — City of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `state` (string, optional) — State of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `country` (string, optional) — Country of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `birth_date` (date, optional) — Birth Date of individual Format is YYYY-MM-DD. If selected input type = individual, at least 1 field from individual object must be provided.
- `city_of_birth` (string, optional) — City Of Birth of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `country_of_birth` (string, optional) — Country Of Birth of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `nationality` (string, optional) — Nationality of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `occupation` (string, optional) — Occupation of individual. If selected input type = individual, at least 1 field from individual object must be provided.
- `country_of_residence` (string, optional) — Country of Residence of individual. If selected input type = individual, at least 1 field from individual object must be provided.

### FieldLevelResponsesForRrficsEntity

Input type selected as Entity. When Entity is selected any one of the fields displayed under entity object are mandatory

- `name` (string, optional) — Name of Entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `street_name` (string, optional) — Street Name of Entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `building_number` (string, optional) — Building Number of Entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `postal_code` (string, optional) — Postal Code of Entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `city` (string, optional) — City of Entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `state` (string, optional) — State of Entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `country` (string, optional) — Country of Entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `line_of_business` (string, optional) — Line of business of Entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `ownership_details` (string, optional) — Ownership Details of entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `global_presence` (string, optional) — Global Presence of entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `website` (string, optional) — Website of entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `registration_number` (string, optional) — Registration Number of entity. If selected input type = entity, at least 1 field from entity object must be provided.
- `country_of_incorporation` (string, optional) — Country of incorporation of entity. If selected input type = entity, at least 1 field from entity object must be provided.

### FieldLevelResponsesForRrficsVessel

Input type selected as vessel. When vessel is selected any one of the fields displayed under vessel object are mandatory

- `name` (string, optional) — Name of vessel. If selected input type = vessel, at least 1 field from vessel object must be provided.
- `flag` (string, optional) — Flag of vessel. If selected input type = vessel, at least 1 field from vessel object must be provided.
- `ownership_details` (string, optional) — Ownership Details of vessel. If selected input type = vessel, at least 1 field from vessel object must be provided.
- `imo_number` (string, optional) — Imo Number of vessel. If selected input type = vessel, at least 1 field from vessel object must be provided.
- `gross_registered_tonnage` (string, optional) — Gross registered tonnage of vessel. If selected input type = vessel, at least 1 field from vessel object must be provided.
- `vessel_type` (string, optional) — Type of vessel. If selected input type = vessel, at least 1 field from vessel object must be provided.

### FieldLevelResponsesForRrficsAircraft

Input type selected as aircraft. When aircraft is selected any one of the fields displayed under aircraft object are mandatory

- `call_sign` (string, optional) — Call Sign of aircraft. If selected input type = aircraft, at least 1 field from aircraft object must be provided.
- `flag` (string, optional) — Flag of aircraft. If selected input type = aircraft, at least 1 field from aircraft object must be provided.
- `ownership_details` (string, optional) — Ownership Details of aircraft. If selected input type = aircraft, at least 1 field from aircraft object must be provided.
- `msn_number` (string, optional) — Msn Number of aircraft. If selected input type = aircraft, at least 1 field from aircraft object must be provided.
- `model` (string, optional) — Model of aircraft. If selected input type = aircraft, at least 1 field from aircraft object must be provided.
- `operator` (string, optional) — Operator of aircraft. If selected input type = aircraft, at least 1 field from aircraft object must be provided.

## Examples

### Status - Initial-Response-To-Request-For-Refund

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "decision_code": "IPAY",
    "instructed_amount": 144.56,
    "instructed_currency": "USD",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Status - Initial-Response-To-Request-For-Refund
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>"
}

response = requests.post(url, headers=headers, params=querystring)

print(response.json())
```

```javascript Status - Initial-Response-To-Request-For-Refund
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>'
  }
};

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

```go Status - Initial-Response-To-Request-For-Refund
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	req.Header.Add("Authorization", "Bearer <token>")

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

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

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

}
```

```ruby Status - Initial-Response-To-Request-For-Refund
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'

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

```java Status - Initial-Response-To-Request-For-Refund
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Status - Initial-Response-To-Request-For-Refund
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Status - Initial-Response-To-Request-For-Refund
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Status - Initial-Response-To-Request-For-Refund
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

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()
```

### Status - Initial-Response-To-Payment-Confirmation-Request

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af78b5",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RPCR",
  "message": {
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:59:10.489Z",
      "description": "Pending"
    },
    "uetr": "bea176bf-1d5d-48cc-88fb-1d0e06af87p5"
  }
}
```

**SDK Code**

```python Status - Initial-Response-To-Payment-Confirmation-Request
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>"
}

response = requests.post(url, headers=headers, params=querystring)

print(response.json())
```

```javascript Status - Initial-Response-To-Payment-Confirmation-Request
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>'
  }
};

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

```go Status - Initial-Response-To-Payment-Confirmation-Request
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	req.Header.Add("Authorization", "Bearer <token>")

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

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

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

}
```

```ruby Status - Initial-Response-To-Payment-Confirmation-Request
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'

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

```java Status - Initial-Response-To-Payment-Confirmation-Request
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Status - Initial-Response-To-Payment-Confirmation-Request
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Status - Initial-Response-To-Payment-Confirmation-Request
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Status - Initial-Response-To-Payment-Confirmation-Request
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

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()
```

### Status - Initial-Response-To-Request-For-Payment

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af89n6",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFP",
  "message": {
    "accepted_amount": 500,
    "accepted_currency": "USD",
    "decision_code": "ACTC",
    "end_to_end_id": "I364836174511719",
    "scheduled_exec_dat": "2023-10-02",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:59:10.489Z",
      "description": "Pending"
    },
    "uetr": "bea176bf-1d5d-48cc-88fb-1d0e06af90k8"
  }
}
```

**SDK Code**

```python Status - Initial-Response-To-Request-For-Payment
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>"
}

response = requests.post(url, headers=headers, params=querystring)

print(response.json())
```

```javascript Status - Initial-Response-To-Request-For-Payment
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>'
  }
};

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

```go Status - Initial-Response-To-Request-For-Payment
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	req.Header.Add("Authorization", "Bearer <token>")

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

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

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

}
```

```ruby Status - Initial-Response-To-Request-For-Payment
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'

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

```java Status - Initial-Response-To-Request-For-Payment
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Status - Initial-Response-To-Request-For-Payment
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Status - Initial-Response-To-Request-For-Payment
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Status - Initial-Response-To-Request-For-Payment
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

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()
```

### Status - Initial-Outgoing-Request-For-Refund

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RFR",
  "message": {
    "reasons": {
      "code": "AM09",
      "description": "WrongAmount"
    },
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Status - Initial-Outgoing-Request-For-Refund
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>"
}

response = requests.post(url, headers=headers, params=querystring)

print(response.json())
```

```javascript Status - Initial-Outgoing-Request-For-Refund
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>'
  }
};

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

```go Status - Initial-Outgoing-Request-For-Refund
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	req.Header.Add("Authorization", "Bearer <token>")

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

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

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

}
```

```ruby Status - Initial-Outgoing-Request-For-Refund
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'

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

```java Status - Initial-Outgoing-Request-For-Refund
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Status - Initial-Outgoing-Request-For-Refund
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Status - Initial-Outgoing-Request-For-Refund
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Status - Initial-Outgoing-Request-For-Refund
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

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()
```

### Status - Initial-Response-To-Request-for-Information-Compliance

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-10-10T08:49:10.489Z",
  "message_type": "RRFICS",
  "message": {
    "status": {
      "code": "PDNG",
      "date_time": "2023-10-10T08:52:10.489Z",
      "description": "Pending"
    },
    "uetr": "bea176bf-1d5d-48cc-88fb-1d0e06af87p5"
  }
}
```

**SDK Code**

```python Status - Initial-Response-To-Request-for-Information-Compliance
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>"
}

response = requests.post(url, headers=headers, params=querystring)

print(response.json())
```

```javascript Status - Initial-Response-To-Request-for-Information-Compliance
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>'
  }
};

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

```go Status - Initial-Response-To-Request-for-Information-Compliance
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	req.Header.Add("Authorization", "Bearer <token>")

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

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

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

}
```

```ruby Status - Initial-Response-To-Request-for-Information-Compliance
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'

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

```java Status - Initial-Response-To-Request-for-Information-Compliance
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Status - Initial-Response-To-Request-for-Information-Compliance
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Status - Initial-Response-To-Request-for-Information-Compliance
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Status - Initial-Response-To-Request-for-Information-Compliance
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

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 Status - Stop Request

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RFR",
  "message": {
    "country": "GB",
    "reasons": {
      "code": "AM09",
      "description": "WrongAmount"
    },
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Uk Status - Stop Request
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>"
}

response = requests.post(url, headers=headers, params=querystring)

print(response.json())
```

```javascript Uk Status - Stop Request
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>'
  }
};

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

```go Uk Status - Stop Request
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	req.Header.Add("Authorization", "Bearer <token>")

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

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

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

}
```

```ruby Uk Status - Stop Request
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'

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

```java Uk Status - Stop Request
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Uk Status - Stop Request
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Uk Status - Stop Request
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Uk Status - Stop Request
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

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()
```

### Response to Request For Refund

**Request**

```json
{
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "debtor": {
      "building_number": "A1234",
      "city": "San Francisco",
      "country": "US",
      "name": "Kyne",
      "postal_code": "98076",
      "state": "CA",
      "street_name": "2345 3rd Street"
    },
    "decision_code": "PECR",
    "end_to_end_id": "r/434SKtUcwBY",
    "instructed_amount": 135.56,
    "instructed_currency": "USD",
    "instruction_id": "2017111202120020101BSTRF00000000067",
    "ultimate_debtor": {
      "building_number": "BC567",
      "city": "San Francisco",
      "country": "US",
      "name": "Jul",
      "postal_code": "99089",
      "state": "CA",
      "street_name": "7868 3rd Street"
    }
  }
}
```

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "decision_code": "IPAY",
    "instructed_amount": 144.56,
    "instructed_currency": "USD",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Response to Request For Refund
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

payload = {
    "message_type": "RRFR",
    "message": {
        "case_id": "M20230411021000089T1BXPY09462848401",
        "debtor": {
            "building_number": "A1234",
            "city": "San Francisco",
            "country": "US",
            "name": "Kyne",
            "postal_code": "98076",
            "state": "CA",
            "street_name": "2345 3rd Street"
        },
        "decision_code": "PECR",
        "end_to_end_id": "r/434SKtUcwBY",
        "instructed_amount": 135.56,
        "instructed_currency": "USD",
        "instruction_id": "2017111202120020101BSTRF00000000067",
        "ultimate_debtor": {
            "building_number": "BC567",
            "city": "San Francisco",
            "country": "US",
            "name": "Jul",
            "postal_code": "99089",
            "state": "CA",
            "street_name": "7868 3rd Street"
        }
    }
}
headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Response to Request For Refund
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"message_type":"RRFR","message":{"case_id":"M20230411021000089T1BXPY09462848401","debtor":{"building_number":"A1234","city":"San Francisco","country":"US","name":"Kyne","postal_code":"98076","state":"CA","street_name":"2345 3rd Street"},"decision_code":"PECR","end_to_end_id":"r/434SKtUcwBY","instructed_amount":135.56,"instructed_currency":"USD","instruction_id":"2017111202120020101BSTRF00000000067","ultimate_debtor":{"building_number":"BC567","city":"San Francisco","country":"US","name":"Jul","postal_code":"99089","state":"CA","street_name":"7868 3rd Street"}}}'
};

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

```go Response to Request For Refund
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

	payload := strings.NewReader("{\n  \"message_type\": \"RRFR\",\n  \"message\": {\n    \"case_id\": \"M20230411021000089T1BXPY09462848401\",\n    \"debtor\": {\n      \"building_number\": \"A1234\",\n      \"city\": \"San Francisco\",\n      \"country\": \"US\",\n      \"name\": \"Kyne\",\n      \"postal_code\": \"98076\",\n      \"state\": \"CA\",\n      \"street_name\": \"2345 3rd Street\"\n    },\n    \"decision_code\": \"PECR\",\n    \"end_to_end_id\": \"r/434SKtUcwBY\",\n    \"instructed_amount\": 135.56,\n    \"instructed_currency\": \"USD\",\n    \"instruction_id\": \"2017111202120020101BSTRF00000000067\",\n    \"ultimate_debtor\": {\n      \"building_number\": \"BC567\",\n      \"city\": \"San Francisco\",\n      \"country\": \"US\",\n      \"name\": \"Jul\",\n      \"postal_code\": \"99089\",\n      \"state\": \"CA\",\n      \"street_name\": \"7868 3rd Street\"\n    }\n  }\n}")

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	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 Response to Request For Refund
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message_type\": \"RRFR\",\n  \"message\": {\n    \"case_id\": \"M20230411021000089T1BXPY09462848401\",\n    \"debtor\": {\n      \"building_number\": \"A1234\",\n      \"city\": \"San Francisco\",\n      \"country\": \"US\",\n      \"name\": \"Kyne\",\n      \"postal_code\": \"98076\",\n      \"state\": \"CA\",\n      \"street_name\": \"2345 3rd Street\"\n    },\n    \"decision_code\": \"PECR\",\n    \"end_to_end_id\": \"r/434SKtUcwBY\",\n    \"instructed_amount\": 135.56,\n    \"instructed_currency\": \"USD\",\n    \"instruction_id\": \"2017111202120020101BSTRF00000000067\",\n    \"ultimate_debtor\": {\n      \"building_number\": \"BC567\",\n      \"city\": \"San Francisco\",\n      \"country\": \"US\",\n      \"name\": \"Jul\",\n      \"postal_code\": \"99089\",\n      \"state\": \"CA\",\n      \"street_name\": \"7868 3rd Street\"\n    }\n  }\n}"

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

```java Response to Request For Refund
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message_type\": \"RRFR\",\n  \"message\": {\n    \"case_id\": \"M20230411021000089T1BXPY09462848401\",\n    \"debtor\": {\n      \"building_number\": \"A1234\",\n      \"city\": \"San Francisco\",\n      \"country\": \"US\",\n      \"name\": \"Kyne\",\n      \"postal_code\": \"98076\",\n      \"state\": \"CA\",\n      \"street_name\": \"2345 3rd Street\"\n    },\n    \"decision_code\": \"PECR\",\n    \"end_to_end_id\": \"r/434SKtUcwBY\",\n    \"instructed_amount\": 135.56,\n    \"instructed_currency\": \"USD\",\n    \"instruction_id\": \"2017111202120020101BSTRF00000000067\",\n    \"ultimate_debtor\": {\n      \"building_number\": \"BC567\",\n      \"city\": \"San Francisco\",\n      \"country\": \"US\",\n      \"name\": \"Jul\",\n      \"postal_code\": \"99089\",\n      \"state\": \"CA\",\n      \"street_name\": \"7868 3rd Street\"\n    }\n  }\n}")
  .asString();
```

```php Response to Request For Refund
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'body' => '{
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "debtor": {
      "building_number": "A1234",
      "city": "San Francisco",
      "country": "US",
      "name": "Kyne",
      "postal_code": "98076",
      "state": "CA",
      "street_name": "2345 3rd Street"
    },
    "decision_code": "PECR",
    "end_to_end_id": "r/434SKtUcwBY",
    "instructed_amount": 135.56,
    "instructed_currency": "USD",
    "instruction_id": "2017111202120020101BSTRF00000000067",
    "ultimate_debtor": {
      "building_number": "BC567",
      "city": "San Francisco",
      "country": "US",
      "name": "Jul",
      "postal_code": "99089",
      "state": "CA",
      "street_name": "7868 3rd Street"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Response to Request For Refund
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message_type\": \"RRFR\",\n  \"message\": {\n    \"case_id\": \"M20230411021000089T1BXPY09462848401\",\n    \"debtor\": {\n      \"building_number\": \"A1234\",\n      \"city\": \"San Francisco\",\n      \"country\": \"US\",\n      \"name\": \"Kyne\",\n      \"postal_code\": \"98076\",\n      \"state\": \"CA\",\n      \"street_name\": \"2345 3rd Street\"\n    },\n    \"decision_code\": \"PECR\",\n    \"end_to_end_id\": \"r/434SKtUcwBY\",\n    \"instructed_amount\": 135.56,\n    \"instructed_currency\": \"USD\",\n    \"instruction_id\": \"2017111202120020101BSTRF00000000067\",\n    \"ultimate_debtor\": {\n      \"building_number\": \"BC567\",\n      \"city\": \"San Francisco\",\n      \"country\": \"US\",\n      \"name\": \"Jul\",\n      \"postal_code\": \"99089\",\n      \"state\": \"CA\",\n      \"street_name\": \"7868 3rd Street\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Response to Request For Refund
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message_type": "RRFR",
  "message": [
    "case_id": "M20230411021000089T1BXPY09462848401",
    "debtor": [
      "building_number": "A1234",
      "city": "San Francisco",
      "country": "US",
      "name": "Kyne",
      "postal_code": "98076",
      "state": "CA",
      "street_name": "2345 3rd Street"
    ],
    "decision_code": "PECR",
    "end_to_end_id": "r/434SKtUcwBY",
    "instructed_amount": 135.56,
    "instructed_currency": "USD",
    "instruction_id": "2017111202120020101BSTRF00000000067",
    "ultimate_debtor": [
      "building_number": "BC567",
      "city": "San Francisco",
      "country": "US",
      "name": "Jul",
      "postal_code": "99089",
      "state": "CA",
      "street_name": "7868 3rd Street"
    ]
  ]
] 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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! 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()
```

### Response to Payment Confirmation Request

**Request**

```json
{
  "message_type": "RPCR",
  "message": {
    "status": {
      "code": "ACSC",
      "date_time": "2023-01-10T07:57:10.489Z",
      "description": "Accepted"
    }
  }
}
```

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "decision_code": "IPAY",
    "instructed_amount": 144.56,
    "instructed_currency": "USD",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Response to Payment Confirmation Request
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

payload = {
    "message_type": "RPCR",
    "message": { "status": {
            "code": "ACSC",
            "date_time": "2023-01-10T07:57:10.489Z",
            "description": "Accepted"
        } }
}
headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Response to Payment Confirmation Request
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"message_type":"RPCR","message":{"status":{"code":"ACSC","date_time":"2023-01-10T07:57:10.489Z","description":"Accepted"}}}'
};

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

```go Response to Payment Confirmation Request
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

	payload := strings.NewReader("{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"status\": {\n      \"code\": \"ACSC\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Accepted\"\n    }\n  }\n}")

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	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 Response to Payment Confirmation Request
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"status\": {\n      \"code\": \"ACSC\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Accepted\"\n    }\n  }\n}"

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

```java Response to Payment Confirmation Request
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"status\": {\n      \"code\": \"ACSC\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Accepted\"\n    }\n  }\n}")
  .asString();
```

```php Response to Payment Confirmation Request
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'body' => '{
  "message_type": "RPCR",
  "message": {
    "status": {
      "code": "ACSC",
      "date_time": "2023-01-10T07:57:10.489Z",
      "description": "Accepted"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Response to Payment Confirmation Request
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"status\": {\n      \"code\": \"ACSC\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Accepted\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Response to Payment Confirmation Request
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message_type": "RPCR",
  "message": ["status": [
      "code": "ACSC",
      "date_time": "2023-01-10T07:57:10.489Z",
      "description": "Accepted"
    ]]
] 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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! 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()
```

### Accept Response to Incoming Payment Confirmation Request From CITI

**Request**

```json
{
  "message_type": "RPCR",
  "message": {
    "status": {
      "code": "ACSC",
      "date_time": "2023-01-10T07:57:10.489Z",
      "description": "Accepted"
    }
  }
}
```

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "decision_code": "IPAY",
    "instructed_amount": 144.56,
    "instructed_currency": "USD",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Accept Response to Incoming Payment Confirmation Request From CITI
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

payload = {
    "message_type": "RPCR",
    "message": { "status": {
            "code": "ACSC",
            "date_time": "2023-01-10T07:57:10.489Z",
            "description": "Accepted"
        } }
}
headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Accept Response to Incoming Payment Confirmation Request From CITI
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"message_type":"RPCR","message":{"status":{"code":"ACSC","date_time":"2023-01-10T07:57:10.489Z","description":"Accepted"}}}'
};

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

```go Accept Response to Incoming Payment Confirmation Request From CITI
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

	payload := strings.NewReader("{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"status\": {\n      \"code\": \"ACSC\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Accepted\"\n    }\n  }\n}")

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	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 Accept Response to Incoming Payment Confirmation Request From CITI
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"status\": {\n      \"code\": \"ACSC\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Accepted\"\n    }\n  }\n}"

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

```java Accept Response to Incoming Payment Confirmation Request From CITI
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"status\": {\n      \"code\": \"ACSC\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Accepted\"\n    }\n  }\n}")
  .asString();
```

```php Accept Response to Incoming Payment Confirmation Request From CITI
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'body' => '{
  "message_type": "RPCR",
  "message": {
    "status": {
      "code": "ACSC",
      "date_time": "2023-01-10T07:57:10.489Z",
      "description": "Accepted"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Accept Response to Incoming Payment Confirmation Request From CITI
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"status\": {\n      \"code\": \"ACSC\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Accepted\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Accept Response to Incoming Payment Confirmation Request From CITI
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message_type": "RPCR",
  "message": ["status": [
      "code": "ACSC",
      "date_time": "2023-01-10T07:57:10.489Z",
      "description": "Accepted"
    ]]
] 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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! 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()
```

### Reject Response to Incoming Payment Confirmation Request From CITI

**Request**

```json
{
  "message_type": "RPCR",
  "message": {
    "reasons": {
      "code": "AM09",
      "description": "Amount received is not the amount agreed or expected"
    },
    "status": {
      "code": "RJCT",
      "date_time": "2023-01-10T07:57:10.489Z",
      "description": "Rejected"
    }
  }
}
```

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "decision_code": "IPAY",
    "instructed_amount": 144.56,
    "instructed_currency": "USD",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Reject Response to Incoming Payment Confirmation Request From CITI
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

payload = {
    "message_type": "RPCR",
    "message": {
        "reasons": {
            "code": "AM09",
            "description": "Amount received is not the amount agreed or expected"
        },
        "status": {
            "code": "RJCT",
            "date_time": "2023-01-10T07:57:10.489Z",
            "description": "Rejected"
        }
    }
}
headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Reject Response to Incoming Payment Confirmation Request From CITI
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"message_type":"RPCR","message":{"reasons":{"code":"AM09","description":"Amount received is not the amount agreed or expected"},"status":{"code":"RJCT","date_time":"2023-01-10T07:57:10.489Z","description":"Rejected"}}}'
};

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

```go Reject Response to Incoming Payment Confirmation Request From CITI
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

	payload := strings.NewReader("{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"Amount received is not the amount agreed or expected\"\n    },\n    \"status\": {\n      \"code\": \"RJCT\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Rejected\"\n    }\n  }\n}")

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	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 Reject Response to Incoming Payment Confirmation Request From CITI
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"Amount received is not the amount agreed or expected\"\n    },\n    \"status\": {\n      \"code\": \"RJCT\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Rejected\"\n    }\n  }\n}"

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

```java Reject Response to Incoming Payment Confirmation Request From CITI
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"Amount received is not the amount agreed or expected\"\n    },\n    \"status\": {\n      \"code\": \"RJCT\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Rejected\"\n    }\n  }\n}")
  .asString();
```

```php Reject Response to Incoming Payment Confirmation Request From CITI
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'body' => '{
  "message_type": "RPCR",
  "message": {
    "reasons": {
      "code": "AM09",
      "description": "Amount received is not the amount agreed or expected"
    },
    "status": {
      "code": "RJCT",
      "date_time": "2023-01-10T07:57:10.489Z",
      "description": "Rejected"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Reject Response to Incoming Payment Confirmation Request From CITI
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message_type\": \"RPCR\",\n  \"message\": {\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"Amount received is not the amount agreed or expected\"\n    },\n    \"status\": {\n      \"code\": \"RJCT\",\n      \"date_time\": \"2023-01-10T07:57:10.489Z\",\n      \"description\": \"Rejected\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Reject Response to Incoming Payment Confirmation Request From CITI
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message_type": "RPCR",
  "message": [
    "reasons": [
      "code": "AM09",
      "description": "Amount received is not the amount agreed or expected"
    ],
    "status": [
      "code": "RJCT",
      "date_time": "2023-01-10T07:57:10.489Z",
      "description": "Rejected"
    ]
  ]
] 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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! 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()
```

### Response to Request for Payment

**Request**

```json
{
  "message_type": "RRFP",
  "message": {
    "accepted_amount": 500,
    "accepted_currency": "USD",
    "decision_code": "ACTC",
    "end_to_end_id": "I364836174511719",
    "scheduled_exec_dat": "2023-10-02"
  }
}
```

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "decision_code": "IPAY",
    "instructed_amount": 144.56,
    "instructed_currency": "USD",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Response to Request for Payment
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

payload = {
    "message_type": "RRFP",
    "message": {
        "accepted_amount": 500,
        "accepted_currency": "USD",
        "decision_code": "ACTC",
        "end_to_end_id": "I364836174511719",
        "scheduled_exec_dat": "2023-10-02"
    }
}
headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Response to Request for Payment
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"message_type":"RRFP","message":{"accepted_amount":500,"accepted_currency":"USD","decision_code":"ACTC","end_to_end_id":"I364836174511719","scheduled_exec_dat":"2023-10-02"}}'
};

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

```go Response to Request for Payment
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

	payload := strings.NewReader("{\n  \"message_type\": \"RRFP\",\n  \"message\": {\n    \"accepted_amount\": 500,\n    \"accepted_currency\": \"USD\",\n    \"decision_code\": \"ACTC\",\n    \"end_to_end_id\": \"I364836174511719\",\n    \"scheduled_exec_dat\": \"2023-10-02\"\n  }\n}")

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	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 Response to Request for Payment
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message_type\": \"RRFP\",\n  \"message\": {\n    \"accepted_amount\": 500,\n    \"accepted_currency\": \"USD\",\n    \"decision_code\": \"ACTC\",\n    \"end_to_end_id\": \"I364836174511719\",\n    \"scheduled_exec_dat\": \"2023-10-02\"\n  }\n}"

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

```java Response to Request for Payment
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message_type\": \"RRFP\",\n  \"message\": {\n    \"accepted_amount\": 500,\n    \"accepted_currency\": \"USD\",\n    \"decision_code\": \"ACTC\",\n    \"end_to_end_id\": \"I364836174511719\",\n    \"scheduled_exec_dat\": \"2023-10-02\"\n  }\n}")
  .asString();
```

```php Response to Request for Payment
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'body' => '{
  "message_type": "RRFP",
  "message": {
    "accepted_amount": 500,
    "accepted_currency": "USD",
    "decision_code": "ACTC",
    "end_to_end_id": "I364836174511719",
    "scheduled_exec_dat": "2023-10-02"
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Response to Request for Payment
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message_type\": \"RRFP\",\n  \"message\": {\n    \"accepted_amount\": 500,\n    \"accepted_currency\": \"USD\",\n    \"decision_code\": \"ACTC\",\n    \"end_to_end_id\": \"I364836174511719\",\n    \"scheduled_exec_dat\": \"2023-10-02\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Response to Request for Payment
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message_type": "RRFP",
  "message": [
    "accepted_amount": 500,
    "accepted_currency": "USD",
    "decision_code": "ACTC",
    "end_to_end_id": "I364836174511719",
    "scheduled_exec_dat": "2023-10-02"
  ]
] 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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! 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()
```

### Outgoing Request for Refund

**Request**

```json
{
  "message_type": "RFR",
  "message": {
    "country": "IE",
    "reasons": {
      "code": "AM09",
      "description": "WrongAmount"
    }
  }
}
```

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "decision_code": "IPAY",
    "instructed_amount": 144.56,
    "instructed_currency": "USD",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Outgoing Request for Refund
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

payload = {
    "message_type": "RFR",
    "message": {
        "country": "IE",
        "reasons": {
            "code": "AM09",
            "description": "WrongAmount"
        }
    }
}
headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Outgoing Request for Refund
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"message_type":"RFR","message":{"country":"IE","reasons":{"code":"AM09","description":"WrongAmount"}}}'
};

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

```go Outgoing Request for Refund
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

	payload := strings.NewReader("{\n  \"message_type\": \"RFR\",\n  \"message\": {\n    \"country\": \"IE\",\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"WrongAmount\"\n    }\n  }\n}")

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	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 Outgoing Request for Refund
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message_type\": \"RFR\",\n  \"message\": {\n    \"country\": \"IE\",\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"WrongAmount\"\n    }\n  }\n}"

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

```java Outgoing Request for Refund
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message_type\": \"RFR\",\n  \"message\": {\n    \"country\": \"IE\",\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"WrongAmount\"\n    }\n  }\n}")
  .asString();
```

```php Outgoing Request for Refund
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'body' => '{
  "message_type": "RFR",
  "message": {
    "country": "IE",
    "reasons": {
      "code": "AM09",
      "description": "WrongAmount"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Outgoing Request for Refund
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message_type\": \"RFR\",\n  \"message\": {\n    \"country\": \"IE\",\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"WrongAmount\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Outgoing Request for Refund
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message_type": "RFR",
  "message": [
    "country": "IE",
    "reasons": [
      "code": "AM09",
      "description": "WrongAmount"
    ]
  ]
] 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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! 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()
```

### Response to Request for Information Compliance

**Request**

```json
{
  "message_type": "RRFICS",
  "message": {
    "rrfics": {
      "additional_details": "Payment was sent to vendor ABC for order number 12345",
      "alert_id": "209339209123",
      "fieldlevel_responses": [
        {
          "field_id": "M12345",
          "field_name": "UltimateCreditor.name",
          "field_value": "Mohammed",
          "individual": {
            "birth_date": "1967-11-27",
            "building_number": "24324",
            "city": "Lorton",
            "city_of_birth": "San Francisco",
            "country": "US",
            "country_of_birth": "US",
            "country_of_residence": "US",
            "name": "John Terry Weiss",
            "nationality": "American",
            "occupation": "occupation",
            "postal_code": "22079",
            "state": "VA",
            "street_name": "BeakalWoldemariam"
          }
        },
        {
          "entity": {
            "building_number": "324324",
            "city": "Lorton",
            "country": "US",
            "country_of_incorporation": "US",
            "global_presence": "Thailand, India, Japan",
            "line_of_business": "Transportation",
            "name": "Drivers4Hire",
            "ownership_details": "Uber US LLC",
            "postal_code": "22079",
            "registration_number": "US1234",
            "state": "VA",
            "street_name": "BeakalWoldemariam",
            "website": "www.Drivers4Hire.com"
          },
          "field_id": "M12346",
          "field_name": "UltimateDebtor.name",
          "field_value": "Jesus"
        }
      ],
      "purpose_of_transaction": "This payment is for order number 12345",
      "request_id": "123456",
      "response_date_time": "2023-01-10T08:45:10.489Z"
    }
  }
}
```

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "decision_code": "IPAY",
    "instructed_amount": 144.56,
    "instructed_currency": "USD",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Response to Request for Information Compliance
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

payload = {
    "message_type": "RRFICS",
    "message": { "rrfics": {
            "additional_details": "Payment was sent to vendor ABC for order number 12345",
            "alert_id": "209339209123",
            "fieldlevel_responses": [
                {
                    "field_id": "M12345",
                    "field_name": "UltimateCreditor.name",
                    "field_value": "Mohammed",
                    "individual": {
                        "birth_date": "1967-11-27",
                        "building_number": "24324",
                        "city": "Lorton",
                        "city_of_birth": "San Francisco",
                        "country": "US",
                        "country_of_birth": "US",
                        "country_of_residence": "US",
                        "name": "John Terry Weiss",
                        "nationality": "American",
                        "occupation": "occupation",
                        "postal_code": "22079",
                        "state": "VA",
                        "street_name": "BeakalWoldemariam"
                    }
                },
                {
                    "entity": {
                        "building_number": "324324",
                        "city": "Lorton",
                        "country": "US",
                        "country_of_incorporation": "US",
                        "global_presence": "Thailand, India, Japan",
                        "line_of_business": "Transportation",
                        "name": "Drivers4Hire",
                        "ownership_details": "Uber US LLC",
                        "postal_code": "22079",
                        "registration_number": "US1234",
                        "state": "VA",
                        "street_name": "BeakalWoldemariam",
                        "website": "www.Drivers4Hire.com"
                    },
                    "field_id": "M12346",
                    "field_name": "UltimateDebtor.name",
                    "field_value": "Jesus"
                }
            ],
            "purpose_of_transaction": "This payment is for order number 12345",
            "request_id": "123456",
            "response_date_time": "2023-01-10T08:45:10.489Z"
        } }
}
headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Response to Request for Information Compliance
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"message_type":"RRFICS","message":{"rrfics":{"additional_details":"Payment was sent to vendor ABC for order number 12345","alert_id":"209339209123","fieldlevel_responses":[{"field_id":"M12345","field_name":"UltimateCreditor.name","field_value":"Mohammed","individual":{"birth_date":"1967-11-27","building_number":"24324","city":"Lorton","city_of_birth":"San Francisco","country":"US","country_of_birth":"US","country_of_residence":"US","name":"John Terry Weiss","nationality":"American","occupation":"occupation","postal_code":"22079","state":"VA","street_name":"BeakalWoldemariam"}},{"entity":{"building_number":"324324","city":"Lorton","country":"US","country_of_incorporation":"US","global_presence":"Thailand, India, Japan","line_of_business":"Transportation","name":"Drivers4Hire","ownership_details":"Uber US LLC","postal_code":"22079","registration_number":"US1234","state":"VA","street_name":"BeakalWoldemariam","website":"www.Drivers4Hire.com"},"field_id":"M12346","field_name":"UltimateDebtor.name","field_value":"Jesus"}],"purpose_of_transaction":"This payment is for order number 12345","request_id":"123456","response_date_time":"2023-01-10T08:45:10.489Z"}}}'
};

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

```go Response to Request for Information Compliance
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

	payload := strings.NewReader("{\n  \"message_type\": \"RRFICS\",\n  \"message\": {\n    \"rrfics\": {\n      \"additional_details\": \"Payment was sent to vendor ABC for order number 12345\",\n      \"alert_id\": \"209339209123\",\n      \"fieldlevel_responses\": [\n        {\n          \"field_id\": \"M12345\",\n          \"field_name\": \"UltimateCreditor.name\",\n          \"field_value\": \"Mohammed\",\n          \"individual\": {\n            \"birth_date\": \"1967-11-27\",\n            \"building_number\": \"24324\",\n            \"city\": \"Lorton\",\n            \"city_of_birth\": \"San Francisco\",\n            \"country\": \"US\",\n            \"country_of_birth\": \"US\",\n            \"country_of_residence\": \"US\",\n            \"name\": \"John Terry Weiss\",\n            \"nationality\": \"American\",\n            \"occupation\": \"occupation\",\n            \"postal_code\": \"22079\",\n            \"state\": \"VA\",\n            \"street_name\": \"BeakalWoldemariam\"\n          }\n        },\n        {\n          \"entity\": {\n            \"building_number\": \"324324\",\n            \"city\": \"Lorton\",\n            \"country\": \"US\",\n            \"country_of_incorporation\": \"US\",\n            \"global_presence\": \"Thailand, India, Japan\",\n            \"line_of_business\": \"Transportation\",\n            \"name\": \"Drivers4Hire\",\n            \"ownership_details\": \"Uber US LLC\",\n            \"postal_code\": \"22079\",\n            \"registration_number\": \"US1234\",\n            \"state\": \"VA\",\n            \"street_name\": \"BeakalWoldemariam\",\n            \"website\": \"www.Drivers4Hire.com\"\n          },\n          \"field_id\": \"M12346\",\n          \"field_name\": \"UltimateDebtor.name\",\n          \"field_value\": \"Jesus\"\n        }\n      ],\n      \"purpose_of_transaction\": \"This payment is for order number 12345\",\n      \"request_id\": \"123456\",\n      \"response_date_time\": \"2023-01-10T08:45:10.489Z\"\n    }\n  }\n}")

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	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 Response to Request for Information Compliance
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message_type\": \"RRFICS\",\n  \"message\": {\n    \"rrfics\": {\n      \"additional_details\": \"Payment was sent to vendor ABC for order number 12345\",\n      \"alert_id\": \"209339209123\",\n      \"fieldlevel_responses\": [\n        {\n          \"field_id\": \"M12345\",\n          \"field_name\": \"UltimateCreditor.name\",\n          \"field_value\": \"Mohammed\",\n          \"individual\": {\n            \"birth_date\": \"1967-11-27\",\n            \"building_number\": \"24324\",\n            \"city\": \"Lorton\",\n            \"city_of_birth\": \"San Francisco\",\n            \"country\": \"US\",\n            \"country_of_birth\": \"US\",\n            \"country_of_residence\": \"US\",\n            \"name\": \"John Terry Weiss\",\n            \"nationality\": \"American\",\n            \"occupation\": \"occupation\",\n            \"postal_code\": \"22079\",\n            \"state\": \"VA\",\n            \"street_name\": \"BeakalWoldemariam\"\n          }\n        },\n        {\n          \"entity\": {\n            \"building_number\": \"324324\",\n            \"city\": \"Lorton\",\n            \"country\": \"US\",\n            \"country_of_incorporation\": \"US\",\n            \"global_presence\": \"Thailand, India, Japan\",\n            \"line_of_business\": \"Transportation\",\n            \"name\": \"Drivers4Hire\",\n            \"ownership_details\": \"Uber US LLC\",\n            \"postal_code\": \"22079\",\n            \"registration_number\": \"US1234\",\n            \"state\": \"VA\",\n            \"street_name\": \"BeakalWoldemariam\",\n            \"website\": \"www.Drivers4Hire.com\"\n          },\n          \"field_id\": \"M12346\",\n          \"field_name\": \"UltimateDebtor.name\",\n          \"field_value\": \"Jesus\"\n        }\n      ],\n      \"purpose_of_transaction\": \"This payment is for order number 12345\",\n      \"request_id\": \"123456\",\n      \"response_date_time\": \"2023-01-10T08:45:10.489Z\"\n    }\n  }\n}"

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

```java Response to Request for Information Compliance
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message_type\": \"RRFICS\",\n  \"message\": {\n    \"rrfics\": {\n      \"additional_details\": \"Payment was sent to vendor ABC for order number 12345\",\n      \"alert_id\": \"209339209123\",\n      \"fieldlevel_responses\": [\n        {\n          \"field_id\": \"M12345\",\n          \"field_name\": \"UltimateCreditor.name\",\n          \"field_value\": \"Mohammed\",\n          \"individual\": {\n            \"birth_date\": \"1967-11-27\",\n            \"building_number\": \"24324\",\n            \"city\": \"Lorton\",\n            \"city_of_birth\": \"San Francisco\",\n            \"country\": \"US\",\n            \"country_of_birth\": \"US\",\n            \"country_of_residence\": \"US\",\n            \"name\": \"John Terry Weiss\",\n            \"nationality\": \"American\",\n            \"occupation\": \"occupation\",\n            \"postal_code\": \"22079\",\n            \"state\": \"VA\",\n            \"street_name\": \"BeakalWoldemariam\"\n          }\n        },\n        {\n          \"entity\": {\n            \"building_number\": \"324324\",\n            \"city\": \"Lorton\",\n            \"country\": \"US\",\n            \"country_of_incorporation\": \"US\",\n            \"global_presence\": \"Thailand, India, Japan\",\n            \"line_of_business\": \"Transportation\",\n            \"name\": \"Drivers4Hire\",\n            \"ownership_details\": \"Uber US LLC\",\n            \"postal_code\": \"22079\",\n            \"registration_number\": \"US1234\",\n            \"state\": \"VA\",\n            \"street_name\": \"BeakalWoldemariam\",\n            \"website\": \"www.Drivers4Hire.com\"\n          },\n          \"field_id\": \"M12346\",\n          \"field_name\": \"UltimateDebtor.name\",\n          \"field_value\": \"Jesus\"\n        }\n      ],\n      \"purpose_of_transaction\": \"This payment is for order number 12345\",\n      \"request_id\": \"123456\",\n      \"response_date_time\": \"2023-01-10T08:45:10.489Z\"\n    }\n  }\n}")
  .asString();
```

```php Response to Request for Information Compliance
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'body' => '{
  "message_type": "RRFICS",
  "message": {
    "rrfics": {
      "additional_details": "Payment was sent to vendor ABC for order number 12345",
      "alert_id": "209339209123",
      "fieldlevel_responses": [
        {
          "field_id": "M12345",
          "field_name": "UltimateCreditor.name",
          "field_value": "Mohammed",
          "individual": {
            "birth_date": "1967-11-27",
            "building_number": "24324",
            "city": "Lorton",
            "city_of_birth": "San Francisco",
            "country": "US",
            "country_of_birth": "US",
            "country_of_residence": "US",
            "name": "John Terry Weiss",
            "nationality": "American",
            "occupation": "occupation",
            "postal_code": "22079",
            "state": "VA",
            "street_name": "BeakalWoldemariam"
          }
        },
        {
          "entity": {
            "building_number": "324324",
            "city": "Lorton",
            "country": "US",
            "country_of_incorporation": "US",
            "global_presence": "Thailand, India, Japan",
            "line_of_business": "Transportation",
            "name": "Drivers4Hire",
            "ownership_details": "Uber US LLC",
            "postal_code": "22079",
            "registration_number": "US1234",
            "state": "VA",
            "street_name": "BeakalWoldemariam",
            "website": "www.Drivers4Hire.com"
          },
          "field_id": "M12346",
          "field_name": "UltimateDebtor.name",
          "field_value": "Jesus"
        }
      ],
      "purpose_of_transaction": "This payment is for order number 12345",
      "request_id": "123456",
      "response_date_time": "2023-01-10T08:45:10.489Z"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Response to Request for Information Compliance
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message_type\": \"RRFICS\",\n  \"message\": {\n    \"rrfics\": {\n      \"additional_details\": \"Payment was sent to vendor ABC for order number 12345\",\n      \"alert_id\": \"209339209123\",\n      \"fieldlevel_responses\": [\n        {\n          \"field_id\": \"M12345\",\n          \"field_name\": \"UltimateCreditor.name\",\n          \"field_value\": \"Mohammed\",\n          \"individual\": {\n            \"birth_date\": \"1967-11-27\",\n            \"building_number\": \"24324\",\n            \"city\": \"Lorton\",\n            \"city_of_birth\": \"San Francisco\",\n            \"country\": \"US\",\n            \"country_of_birth\": \"US\",\n            \"country_of_residence\": \"US\",\n            \"name\": \"John Terry Weiss\",\n            \"nationality\": \"American\",\n            \"occupation\": \"occupation\",\n            \"postal_code\": \"22079\",\n            \"state\": \"VA\",\n            \"street_name\": \"BeakalWoldemariam\"\n          }\n        },\n        {\n          \"entity\": {\n            \"building_number\": \"324324\",\n            \"city\": \"Lorton\",\n            \"country\": \"US\",\n            \"country_of_incorporation\": \"US\",\n            \"global_presence\": \"Thailand, India, Japan\",\n            \"line_of_business\": \"Transportation\",\n            \"name\": \"Drivers4Hire\",\n            \"ownership_details\": \"Uber US LLC\",\n            \"postal_code\": \"22079\",\n            \"registration_number\": \"US1234\",\n            \"state\": \"VA\",\n            \"street_name\": \"BeakalWoldemariam\",\n            \"website\": \"www.Drivers4Hire.com\"\n          },\n          \"field_id\": \"M12346\",\n          \"field_name\": \"UltimateDebtor.name\",\n          \"field_value\": \"Jesus\"\n        }\n      ],\n      \"purpose_of_transaction\": \"This payment is for order number 12345\",\n      \"request_id\": \"123456\",\n      \"response_date_time\": \"2023-01-10T08:45:10.489Z\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Response to Request for Information Compliance
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message_type": "RRFICS",
  "message": ["rrfics": [
      "additional_details": "Payment was sent to vendor ABC for order number 12345",
      "alert_id": "209339209123",
      "fieldlevel_responses": [
        [
          "field_id": "M12345",
          "field_name": "UltimateCreditor.name",
          "field_value": "Mohammed",
          "individual": [
            "birth_date": "1967-11-27",
            "building_number": "24324",
            "city": "Lorton",
            "city_of_birth": "San Francisco",
            "country": "US",
            "country_of_birth": "US",
            "country_of_residence": "US",
            "name": "John Terry Weiss",
            "nationality": "American",
            "occupation": "occupation",
            "postal_code": "22079",
            "state": "VA",
            "street_name": "BeakalWoldemariam"
          ]
        ],
        [
          "entity": [
            "building_number": "324324",
            "city": "Lorton",
            "country": "US",
            "country_of_incorporation": "US",
            "global_presence": "Thailand, India, Japan",
            "line_of_business": "Transportation",
            "name": "Drivers4Hire",
            "ownership_details": "Uber US LLC",
            "postal_code": "22079",
            "registration_number": "US1234",
            "state": "VA",
            "street_name": "BeakalWoldemariam",
            "website": "www.Drivers4Hire.com"
          ],
          "field_id": "M12346",
          "field_name": "UltimateDebtor.name",
          "field_value": "Jesus"
        ]
      ],
      "purpose_of_transaction": "This payment is for order number 12345",
      "request_id": "123456",
      "response_date_time": "2023-01-10T08:45:10.489Z"
    ]]
] 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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! 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 Stop Request

**Request**

```json
{
  "message_type": "RFR",
  "message": {
    "country": "GB",
    "reasons": {
      "code": "AM09",
      "description": "WrongAmount"
    }
  }
}
```

**Response**

```json
{
  "message_id": "bea176bf1d5d48cc88fb1d0e06af54y8",
  "creation_date_time": "2023-01-10T07:45:10.489Z",
  "message_type": "RRFR",
  "message": {
    "case_id": "M20230411021000089T1BXPY09462848401",
    "decision_code": "IPAY",
    "instructed_amount": 144.56,
    "instructed_currency": "USD",
    "status": {
      "code": "PDNG",
      "date_time": "2023-01-10T07:47:10.489Z",
      "description": "Pending"
    }
  }
}
```

**SDK Code**

```python Uk Stop Request
import requests

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

querystring = {"client_id":"6d3cf821-db6d-496d-bec0-064a362e9c31"}

payload = {
    "message_type": "RFR",
    "message": {
        "country": "GB",
        "reasons": {
            "code": "AM09",
            "description": "WrongAmount"
        }
    }
}
headers = {
    "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Uk Stop Request
const url = 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31';
const options = {
  method: 'POST',
  headers: {
    'Idempotency-Id': 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"message_type":"RFR","message":{"country":"GB","reasons":{"code":"AM09","description":"WrongAmount"}}}'
};

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

```go Uk Stop Request
package main

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

func main() {

	url := "https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31"

	payload := strings.NewReader("{\n  \"message_type\": \"RFR\",\n  \"message\": {\n    \"country\": \"GB\",\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"WrongAmount\"\n    }\n  }\n}")

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

	req.Header.Add("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
	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 Stop Request
require 'uri'
require 'net/http'

url = URI("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")

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

request = Net::HTTP::Post.new(url)
request["Idempotency-Id"] = 'a44cbb60-6de4-4edb-9a7a-123414bba3bb'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"message_type\": \"RFR\",\n  \"message\": {\n    \"country\": \"GB\",\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"WrongAmount\"\n    }\n  }\n}"

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

```java Uk Stop Request
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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")
  .header("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"message_type\": \"RFR\",\n  \"message\": {\n    \"country\": \"GB\",\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"WrongAmount\"\n    }\n  }\n}")
  .asString();
```

```php Uk Stop Request
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31', [
  'body' => '{
  "message_type": "RFR",
  "message": {
    "country": "GB",
    "reasons": {
      "code": "AM09",
      "description": "WrongAmount"
    }
  }
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'Idempotency-Id' => 'a44cbb60-6de4-4edb-9a7a-123414bba3bb',
  ],
]);

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

```csharp Uk Stop Request
using RestSharp;

var client = new RestClient("https://b2b.api.icg.citi.com/citiconnect/prod/paymentservices/v1/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31");
var request = new RestRequest(Method.POST);
request.AddHeader("Idempotency-Id", "a44cbb60-6de4-4edb-9a7a-123414bba3bb");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"message_type\": \"RFR\",\n  \"message\": {\n    \"country\": \"GB\",\n    \"reasons\": {\n      \"code\": \"AM09\",\n      \"description\": \"WrongAmount\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Uk Stop Request
import Foundation

let headers = [
  "Idempotency-Id": "a44cbb60-6de4-4edb-9a7a-123414bba3bb",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "message_type": "RFR",
  "message": [
    "country": "GB",
    "reasons": [
      "code": "AM09",
      "description": "WrongAmount"
    ]
  ]
] 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/payments/uetr/messages?client_id=6d3cf821-db6d-496d-bec0-064a362e9c31")! 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()
```