openapi: 3.0.0 info: title: Remit Core API version: 1.0.4 description: > > **Remit Core** Partners should be aware that **new fields and/or values** may appear > in requests and responses over time. > Any unrecognised fields and/or values **must be ignored** if they are not relevant to the Partner. --- ## Overview **Remit Core** is a platform for processing cross-border money transfers. Partners integrate with Remit Core via API and initiate transfers. Remit Core handles all operational complexity: routing, validation, status tracking, and interaction with payment infrastructure. Partners do not need to deal with the specifics of national payment systems or differences in protocols. **For the Partner, Remit Core is the single integration point.** All interaction takes place through the API described in this document. --- ## Transfer Types Remit Core supports two transfer types: ### CREDIT Transfer *(primary scenario)* The Partner debits funds from the sender on their side; Remit Core credits funds to the recipient. ``` Partner (debit) → Remit Core → Recipient (credit via Remit Core) ``` For this transfer type, the key parameters are: the settlement currency with the Partner (debit currency - `senderCurrencyCode`) and the recipient's credit currency (`receiverCurrencyCode`). ### DEBIT Transfer *(limited scenario)* Remit Core debits funds from the sender; the Partner credits funds to the recipient on their side. ``` Sender (debit via Remit Core) → Remit Core → Partner (credit) ``` For this transfer type, the key parameters are: the sender's debit currency (`senderCurrencyCode`) and the settlement currency with the Partner (credit currency - `receiverCurrencyCode`). DEBIT transfers are used on a limited basis and require additional agreement. --- ## Payment Instruments A payment instrument is the details by which Remit Core identifies the sender (for debit) or the recipient (for credit). | Operation | Available instruments | |---|---| | Credit to recipient (CREDIT) | Card number; phone number + short bank code | | Debit from sender (DEBIT) | Card number | --- ## Authentication and Headers ### Required Header (all methods) | Header | Description | |---|---| | `X-Api-Key` | Partner key in UUID format. Issued upon onboarding to the platform. | --- ## Onboarding and Testing ### Network Connection (production environment) The **IPSec** protocol is used for connections in the production environment. Before integration: 1. Complete the IPSec configuration form. 2. Provide your account manager with the IP addresses from which requests will be sent to Remit Core. The test environment is accessible directly from the Internet. ### Test Environment - **Base URL:** `https://remit-core.ipt-merch.com` - **Postman Collection for CREDIT transfers:** download - **Credentials** (`X-Api-Key` for the test environment): request from your account manager. --- ## Interaction Flow ### Optional Step: Currency Conversion - `POST /convert` Preliminary amount calculation and current exchange rate retrieval. - This method **does not create a transfer** - it is an informational request only. - Can be used by the Partner to display preliminary transfer terms to the end client. - **Not a required step** before `POST /register`. --- ### Optional Step: Get Available Recipient Banks - `POST /info/v1/get_banks` Returns a list of banks (short bank codes) where an active card was found for the specified recipient phone number. This method is needed **only when crediting by phone number** (payment instrument `PHONE`): in this case, a short bank code (`bankLabel`) must be provided alongside the phone number. The method allows the Partner to determine in advance which banks have an active card for the recipient, and to offer the client a choice. The list of bank names corresponding to short bank codes: download. - This method **does not create a transfer** - it is an auxiliary informational request. - **Not a required step**: if the Partner obtains the bank code by other means (e.g. the client selects the bank themselves), this method may be skipped. - Currently, only **Uzbekistan** (`UZB`) is supported as the recipient's country. **Typical use-case:** 1. The client enters the recipient's phone number 2. The Partner calls `POST /info/v1/get_banks` → receives the list of banks with active cards 3. The client selects the necessary bank from the list 4. The Partner sends `phoneNumber` + `bankLabel` in the `target` field when calling `POST /register` --- ### Main Transfer Flow #### CREDIT Transfer ``` POST /register → POST /process ``` A CREDIT transfer requires just two steps. Once `POST /process` completes successfully, Remit Core automatically credits the funds to the recipient. | Step | Method | Required | Description | |---|---|---|---| | 1 | `POST /register` | Required | Transfer registration: data validation and transfer entity creation | | 2 | `POST /process` | Required | Initiates transfer processing | --- #### DEBIT Transfer ``` POST /register → POST /process → [POST /resend_otp] → [POST /confirm] → [POST /cancel] ``` A DEBIT transfer may include additional confirmation steps: Remit Core initiates the debit from the sender, which may require confirmation via OTP or 3DS. | Step | Method | Required | Description | |---|---|---|---| | 1 | `POST /register` | Required | Transfer registration: data validation and transfer entity creation | | 2 | `POST /process` | Required | Initiates transfer processing | | 3 | `POST /resend_otp` | If needed | Resends OTP to the client if not received or not entered in time | | 4 | `POST /confirm` | If needed | Transfer confirmation via OTP or 3DS (if required for the operation) | | 5 | `POST /cancel` | If needed | Transfer cancellation | --- #### Common for Both Transfer Types The current transfer status can be requested at any time via `POST /get_status`. Remit Core also sends a **callback** with the final transfer result to the URL agreed upon during onboarding. #### Asynchronous Result (code 2000) In some cases, Remit Core cannot return the final result synchronously. In such cases, the method will return code **2000** ("Request accepted. Wait for operation processing information in Callback or request status"). When this occurs, the Partner must either: - wait for the **callback** from Remit Core, **or** - poll the transfer status via `POST /get_status`. --- ## Transfer Status Model ### CREDIT Transfer | Status | Description | |---|---| | `INIT` | Transfer initiated - `POST /register` request received | | `REGISTERED` | Transfer successfully registered | | `PROCESSING` | Transfer is being processed - `POST /process` request received | | `SUCCESS` | Transfer successfully completed | | `FAILED` | Transfer rejected | | `CANCELLED` | Transfer cancelled (no further requests received to continue processing) | --- ### DEBIT Transfer | Status | Description | |---|---| | `INIT` | Transfer initiated - `POST /register` request received | | `REGISTERED` | Transfer successfully registered | | `PROCESSING` | Transfer is being processed - `POST /process` request received | | `CONFIRMATION` | Client confirmation required (OTP or 3DS) | | `CONFIRMING` | Confirmation in progress - `POST /confirm` request received | | `SUCCESS` | Transfer successfully completed | | `FAILED` | Transfer rejected | | `CANCELLING` | Cancellation in progress - `POST /cancel` request received | | `CANCELLING_FAILED` | Cancellation failed | | `CANCELLED` | Transfer cancelled (no further requests received to continue processing, or transfer is successfully cancelled after `POST /cancel` request) | --- ## Settlement Report Remit Core automatically generates a **daily settlement report** and sends it to the list of email addresses provided by the Partner in advance. ### File Format - Format: **CSV** - Delimiter: **`;`** - First row: field names - File name: `Remit_Core_transfers_YYYYMMDD.csv`, where `YYYYMMDD` is the export date ### Settlement Report Fields | Field | Description | |---|---| | `transfer_id` | Transfer identifier in Remit Core | | `transfer_created_at` | Transfer creation date and time | | `transfer_sender_amount` | Transfer amount in the sender's currency (minor units, excluding fee) | | `sender_currency` | Sender's currency (ISO 4217 alpha-3) | | `transfer_receiver_amount` | Transfer amount in the recipient's currency (minor units, excluding fee) | | `receiver_currency` | Recipient's currency (ISO 4217 alpha-3) | | `route_name` | Transfer direction | | `transfer_fee_amount` | Fee amount in the fee currency (minor units). May be negative (Partner reward) | | `fee_currency` | Fee currency (ISO 4217 alpha-3) | | `transaction_type` | Transfer type: CREDIT, DEBIT | | `transfer_exchange_rate` | Exchange rate fixed for the transfer (Sender's currency -> Recipient's currency) | | `payment_system` | Recipient's payment system for СREDIT transfer / Sender's payment system for DEBIT transfer (if applicable for payment instrument) | ### How the Partner is Reflected in the Settlement Report - For a **CREDIT transfer**, the Partner acts as the **sender**: `Sender_Currency` = `Fee_Currency` = settlement currency with the Partner. - For a **DEBIT transfer**, the Partner acts as the **recipient**: `Receiver_Currency` = `Fee_Currency` = settlement currency with the Partner. --- ## Country-Specific Transfer Details ### Uzbekistan
Transfer Limits Limits apply to cards issued in Uzbekistan. **By amount:** - Minimum transfer amount - 1 UZS - Single transaction limit - 18 749 999 UZS - Cumulative limit over the last 30 days - 9 999 USD **By number of transfers:** - Per day — maximum 5 transfers - Per month — maximum 150 transfers
Supported Card BINs | Payment System | BINs | |---|---| | **UZCARD** | 5440, 5614, 6262, 6263, 6264, 8600 | | **HUMO** | 4008, 4027, 4062, 4067, 4073, 4097, 4198, 4294, 4728, 4790, 5555, 9860 | | **Visa** | 49169903 |
servers: - url: https://remit-core.ipt-merch.com description: Test environment x-tagGroups: - name: API tags: - Transfer process - Information retrieval tags: - name: Transfer process description: Methods used in the transfer process - name: Information retrieval description: Auxiliary Information Methods paths: /v1/register: post: tags: - Transfer process summary: Transfer registration description: > Validates the request and registers a new transfer (creates a transfer entity). This is the **first required step** in the transfer flow. Upon successful registration, a `transferId` is returned - it must be used in all subsequent requests for this transfer. Applicable to both **CREDIT** and **DEBIT** transfer types. operationId: registerTransfer security: - XApiKeyAuth: [] requestBody: description: >- Transfer registration parameters. Use `CreditTransferRequest` for CREDIT transfers and `DebitTransferRequest` for DEBIT transfers required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/CreditTransferRequest' - $ref: '#/components/schemas/DebitTransferRequest' responses: '200': description: > Successful response or business logic error. Check the `code` field to determine the outcome - code `0` indicates success content: application/json: schema: $ref: '#/components/schemas/RegisterTransferResponse' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Authorization error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Request validation error - invalid JSON, missing required fields, or constraint violations content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v1/process: post: tags: - Transfer process summary: Initiate transfer processing description: > Initiates processing of a previously registered transfer. This is the **second required step** in the transfer flow, called after `POST /register`. The transfer must be in the status `REGISTERED` - only in that state it can be processed. Applicable to both **CREDIT** and **DEBIT** transfer types. Key response scenarios (excluding errors): - **code 0** - transfer processed successfully (**CREDIT** transfers) - **code 2000** - request accepted asynchronously; wait for a callback or poll `POST /get_status` (both **CREDIT** and **DEBIT** transfers) - **code 2001** - confirmation required (**DEBIT** transfers): - for `confirmationType = OTP` submit the code via `POST /confirm`, - for `confirmationType = 3DS` confirmation is completed outside of Remit Core. operationId: processTransfer security: - XApiKeyAuth: [] requestBody: description: Identifier of the transfer to process required: true content: application/json: schema: $ref: '#/components/schemas/TransferIdRequest' responses: '200': description: > Successful response, business logic error, or notification about required additional actions. Check the `code` field to determine the outcome content: application/json: schema: oneOf: - $ref: '#/components/schemas/ProcessTransferResponse' - $ref: >- #/components/schemas/NeedConfirmationProcessTransferResponse - $ref: '#/components/schemas/ProcessPendingTransferResponse' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Authorization error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Request validation error - invalid JSON, missing required fields, or constraint violations content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' callbacks: TransferResultInfo: $ref: '#/components/callbacks/TransferResultInfo' /v1/get_status: post: tags: - Transfer process summary: Get transfer status description: > Returns the current status of a transfer. Can be called at any point in the transfer lifecycle. Particularly useful when `POST /process`, `POST /confirm` or `POST /cancel` returned **code 2000** (asynchronous processing) and no callback has been received yet. The transfer can be identified by either `transferId` (Remit Core identifier) or `externalTransferId` (Partner's own identifier). At least one must be provided. Applicable to both **CREDIT** and **DEBIT** transfer types. operationId: getStatus security: - XApiKeyAuth: [] requestBody: description: >- Transfer identifier - either `transferId` or `externalTransferId` must be provided required: true content: application/json: schema: $ref: '#/components/schemas/StatusTransferRequest' responses: '200': description: > Successful response or business logic error. Check the `code` field to determine the outcome - code `0` indicates success content: application/json: schema: $ref: '#/components/schemas/StatusTransferResponse' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Authorization error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Request validation error - invalid JSON, missing required fields, or constraint violations content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v1/confirm: post: tags: - Transfer process summary: Confirm transfer description: > Confirms a transfer using a one-time password (OTP). The transfer must be in the status `CONFIRMATION` - only in that state it can be confirmed. Must be called when `POST /process` returns **code 2001** with `confirmationType = OTP`. The client receives the OTP via the channel configured for their card (e.g. SMS), and the Partner submits it using this method. Applicable to **DEBIT** transfers only. Key response scenarios (excluding errors): - **code 0** - transfer confirmed successfully - **code 2000** - request accepted asynchronously; wait for a callback or poll `POST /get_status` - **code 3008** - OTP incorrect; need to resend code - use `POST /resend_otp` for the new one operationId: confirm security: - XApiKeyAuth: [] requestBody: description: Transfer identifier and one-time password provided by the client required: true content: application/json: schema: $ref: '#/components/schemas/ConfirmTransferRequest' responses: '200': description: > Successful response, business logic error, or notification about required additional actions. Check the `code` field to determine the outcome content: application/json: schema: oneOf: - $ref: '#/components/schemas/ConfirmTransferResponse' - $ref: '#/components/schemas/ConfirmPendingTransferResponse' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Authorization error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Request validation error - invalid JSON, missing required fields, or constraint violations content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' callbacks: TransferResultInfo: $ref: '#/components/callbacks/TransferResultInfo' /v1/resend_otp: post: tags: - Transfer process summary: Resend OTP for transfer confirmation description: > Requests a new one-time password (OTP) to be sent to the client. Use this method when `POST /process` returned **code 2001** with `confirmationType = OTP` and the client did not receive the OTP or the previous OTP has expired. Or after an unsuccessful attempt of confirmation via `POST /confirm` (if received **code 3008**). The transfer must be in the status `CONFIRMATION`. Applicable to **DEBIT** transfers only. operationId: resendOtp security: - XApiKeyAuth: [] requestBody: description: Identifier of the transfer for which to resend the OTP required: true content: application/json: schema: $ref: '#/components/schemas/TransferIdRequest' responses: '200': description: > Successful response or business logic error. Check the `code` field to determine the outcome - code `0` indicates success content: application/json: schema: $ref: '#/components/schemas/ResendOtpResponse' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Authorization error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Request validation error - invalid JSON, missing required fields, or constraint violations content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /v1/cancel: post: tags: - Transfer process summary: Cancel transfer description: > Requests cancellation of a transfer that has been successfully processed (transfer must be in the status `SUCCESS`). The result may be synchronous or asynchronous (code `2000` - wait for a callback or poll `POST /get_status`). Applicable to **DEBIT** transfers only. Cancellation of CREDIT transfers is prohibited (code `8003`). operationId: cancel security: - XApiKeyAuth: [] requestBody: description: Identifier of the transfer to cancel required: true content: application/json: schema: $ref: '#/components/schemas/TransferIdRequest' responses: '200': description: | Successful response or business logic error. Check the `code` field to determine the outcome content: application/json: schema: oneOf: - $ref: '#/components/schemas/CancelTransferResponse' - $ref: '#/components/schemas/CancelPendingTransferResponse' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Authorization error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Request validation error - invalid JSON, missing required fields, or constraint violations content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' callbacks: TransferResultInfo: $ref: '#/components/callbacks/TransferResultInfo' /v1/convert: post: tags: - Information retrieval summary: Convert amount and get exchange rate description: > Returns the current exchange rate and calculates the transfer amount in the target currency. This method is **optional** and **informational** - it does not create a transfer and is not a required step before `POST /register`. It can be used to display preliminary transfer terms to the end client. Exactly one of the following fields must be provided: - `senderAmount` - to calculate the amount the recipient will receive - `receiverAmount` - to calculate the amount the sender needs to send operationId: convert security: - XApiKeyAuth: [] requestBody: description: >- Currency pair and amount for conversion. Provide either `senderAmount` or `receiverAmount`, not both required: true content: application/json: schema: $ref: '#/components/schemas/ConvertRequest' responses: '200': description: > Successful response or business logic error. Check the `code` field to determine the outcome - code `0` indicates success content: application/json: schema: $ref: '#/components/schemas/ConvertResponse' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Authorization error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Request validation error - invalid JSON, missing required fields, or constraint violations content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /info/v1/get_banks: post: tags: - Information retrieval summary: Get available recipient banks description: > Returns a list of banks (short bank codes) where an active card was found for the specified recipient phone number. This method is **optional** and **informational** - it does not create a transfer. Use this method when crediting by phone number (payment instrument `PHONE`): in this case, `phoneNumber` and `bankLabel` must both be provided in the `target` field of the `POST /register` request. This method helps determine which banks have an active card for the recipient, so the end client can choose the correct bank. Currently supported recipient country: **Uzbekistan** (`UZB`) only. operationId: getBanks security: - XApiKeyAuth: [] requestBody: description: Recipient phone number and country code required: true content: application/json: schema: $ref: '#/components/schemas/GetBanksRequest' responses: '200': description: > Successful response or business logic error. Check the `code` field to determine the outcome - code `0` indicates success. The `banks` array may be empty if no active cards were found content: application/json: schema: $ref: '#/components/schemas/GetBanksResponse' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Authorization error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Request validation error - invalid JSON, missing required fields, or constraint violations content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /info/v1/get_balance: post: tags: - Information retrieval summary: Get partner account balance description: > Returns the current balance of the partner's account as reflected in the core banking system (ABS) at the moment of the request. This method is **informational** - it does not create a transfer. The partner is identified by the `X-Api-Key` header, so no request parameters are required. The request body must be an empty JSON object `{}`. **Important:** depending on the ABS operational day cycle, some transactions of the current day may not yet be reflected in the returned balance. The finalised daily balance is available only after the ABS end-of-day processing completes. operationId: getBalance security: - XApiKeyAuth: [] requestBody: required: true content: application/json: schema: type: object description: Empty JSON object example: {} responses: '200': description: > Successful response or business logic error. Check the `code` field to determine the outcome - code `0` indicates success. content: application/json: schema: $ref: '#/components/schemas/GetBalanceResponse' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Authorization error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: >- Request validation error - invalid JSON, missing required fields, or constraint violations content: application/json: schema: $ref: '#/components/schemas/422ErrorResponse' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' components: schemas: ConvertRequest: type: object required: - senderCurrencyCode - senderCountry - receiverCurrencyCode - receiverCountry properties: senderAmount: type: integer format: int64 description: > Transfer amount in minor units of sender's currency. Must be greater than zero. Provide this field to calculate `receiverAmount`. Must not be specified if `receiverAmount` is provided example: 100000 senderCurrencyCode: type: string description: Sender's currency code according to ISO 4217 alpha-3 pattern: ^[A-Z]{3}$ example: UZS senderCountry: description: Sender's country code according to ISO 3166-1 alpha-3 type: string pattern: ^[A-Z]{3}$ example: UZB receiverCurrencyCode: type: string description: Recipient's currency code according to ISO 4217 alpha-3 pattern: ^[A-Z]{3}$ example: RUB receiverCountry: description: Recipient's country code according to ISO 3166-1 alpha-3 type: string pattern: ^[A-Z]{3}$ example: RUS receiverAmount: type: integer format: int64 description: > Amount to be received by the recipient in minor units of recipient's currency. Must be greater than zero. Provide this field to calculate `senderAmount`. Must not be specified if `senderAmount` is provided example: 13900000 ConvertResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `0` - Request completed successfully * `8002` - Access restriction by partner/direction/country/currency * `9100` - External service interaction error type: integer example: 0 message: description: Response status message type: string example: Request completed successfully result: description: Conversion result. Present when `code = 0` allOf: - $ref: '#/components/schemas/ConvertResult' ConvertResult: type: object required: - senderAmount - senderCurrencyCode - senderCountry - receiverCurrencyCode - receiverCountry - exchangeRate - receiverAmount properties: exchangeRate: type: string description: >- Exchange rate from sender's currency to recipient's currency (with exactly 4 decimal places) example: '140.0000' senderAmount: type: integer format: int64 description: Transfer amount in minor units of sender's currency example: 100000 senderCurrencyCode: type: string description: Sender's currency code according to ISO 4217 alpha-3 pattern: ^[A-Z]{3}$ example: UZS senderCountry: description: Sender's country code according to ISO 3166-1 alpha-3 type: string pattern: ^[A-Z]{3}$ example: UZB receiverCurrencyCode: type: string description: Recipient's currency code according to ISO 4217 alpha-3 pattern: ^[A-Z]{3}$ example: RUB receiverCountry: description: Recipient's country code according to ISO 3166-1 alpha-3 type: string pattern: ^[A-Z]{3}$ example: RUS receiverAmount: type: integer format: int64 description: >- Amount to be received by recipient in minor units of recipient's currency example: 13900000 fee: type: integer format: int64 description: Fee amount in minor units of sender's currency example: 1000 StatusTransferRequest: type: object description: At least one of `transferId` or `externalTransferId` must be provided properties: transferId: description: > Transfer identifier in Remit Core, received in the response to `POST /register`. Required if `externalTransferId` is not specified type: string example: 01990610-f6fb-72fd-84c1-ff8cf5840599 externalTransferId: description: | Transfer identifier in the Partner's system. Required if `transferId` is not specified type: string TransferRequest: type: object required: - transferType - externalTransferId - clientId - transferData - target properties: transferType: description: | Transfer type. Possible values: * `CREDIT` - Partner debits the sender; Remit Core credits the recipient * `DEBIT` - Remit Core debits the sender; Partner credits the recipient type: string enum: - CREDIT - DEBIT example: CREDIT externalTransferId: description: >- Unique transfer identifier in the Partner's system. Used for idempotency type: string example: partner-tx-00123 clientId: description: | Unique identifier of the sender on the partner's side. Acceptable values include: - the sender's phone number; - an internal client ID in the partner's system; - the sender's email address; - any other unique identifying attribute. Important: the clientId value must uniquely correspond to a single individual sender of the transfer. Using the same clientId for different individuals is not allowed type: string example: client-7890 transferData: $ref: '#/components/schemas/TransferData' target: type: object source: type: object sender: $ref: '#/components/schemas/PersonData' receiver: $ref: '#/components/schemas/PersonData' CreditTransferRequest: description: > Request body for **CREDIT** transfer registration. The Partner debits the sender independently; Remit Core credits the recipient. allOf: - $ref: '#/components/schemas/TransferRequest' - type: object required: - sender properties: source: $ref: '#/components/schemas/CreditSourceInstrument' target: $ref: '#/components/schemas/CreditTargetInstrument' sender: allOf: - $ref: '#/components/schemas/PersonData' - type: object required: - firstName - lastName DebitTransferRequest: description: > Request body for **DEBIT** transfer registration. Remit Core debits the sender; the Partner credits the recipient independently. allOf: - $ref: '#/components/schemas/TransferRequest' - type: object required: - sender - receiver - source properties: source: $ref: '#/components/schemas/DebitSourceInstrument' target: $ref: '#/components/schemas/DebitTargetInstrument' sender: allOf: - $ref: '#/components/schemas/PersonData' - type: object required: - firstName - lastName - birthday - birthPlace - identityDocument properties: identityDocument: allOf: - $ref: '#/components/schemas/IdentityDocument' - type: object required: - documentType - documentCountry - number - issuedDate - issuedBy extraFields: $ref: '#/components/schemas/SenderPersonDataExtraFields' receiver: allOf: - $ref: '#/components/schemas/PersonData' - type: object required: - firstName - lastName properties: extraFields: type: object description: Additional recipient data (if required) TransferData: type: object description: | Financial parameters of the transfer. Exactly one of the following must be provided: - `senderAmount` - if the sender wants to send a fixed amount - `receiverAmount` - if the recipient must receive a fixed amount required: - senderCurrencyCode - senderCountry - receiverCountry - receiverCurrencyCode properties: senderAmount: type: integer format: int64 description: > Transfer amount in minor units of sender's currency. Must be greater than zero. Required if `receiverAmount` is not specified example: 100000 senderCurrencyCode: type: string description: Sender's currency code according to ISO 4217 alpha-3 pattern: ^[A-Z]{3}$ example: UZS senderCountry: description: Sender's country code according to ISO 3166-1 alpha-3 type: string pattern: ^[A-Z]{3}$ example: UZB receiverCountry: description: Recipient's country code according to ISO 3166-1 alpha-3 type: string pattern: ^[A-Z]{3}$ example: RUS receiverAmount: type: integer format: int64 description: > Amount to be received by the recipient in minor units of recipient's currency. Must be greater than zero. Required if `senderAmount` is not specified example: 13900000 receiverCurrencyCode: type: string description: Recipient's currency code according to ISO 4217 alpha-3 pattern: ^[A-Z]{3}$ example: RUB reason: type: string description: Transfer purpose/reason example: Business payment PI.Phone: type: object description: > Payment instrument - recipient's phone number with bank label. Used in `target` for **CREDIT** transfers when crediting by phone number. To obtain the list of available `bankLabel` values for a phone number, use `POST /info/v1/get_banks` required: - paymentInstrumentType - phoneNumber - bankLabel properties: paymentInstrumentType: description: Payment instrument type identifier. Must be `PHONE` type: string enum: - PHONE example: PHONE phoneNumber: type: string description: Phone number (E.164 format) pattern: ^\+[1-9]\d{1,14}$ example: '+998901234567' bankLabel: type: string minLength: 3 maxLength: 3 description: Short bank code (3 characters) identifying the recipient's bank example: KPT PI.MaskedCard: type: object description: > Payment instrument - masked card number. Used in `source` for **CREDIT** transfers or `target` for **DEBIT** transfers required: - paymentInstrumentType - maskedPan properties: paymentInstrumentType: description: Payment instrument type identifier. Must be `MASKED_CARD` type: string enum: - MASKED_CARD example: MASKED_CARD maskedPan: description: Masked card number with asterisks replacing the middle digits type: string example: 400078******7810 PI.Account: type: object description: > Payment instrument - bank account number. Used in `source` for **CREDIT** transfers or `target` for **DEBIT** transfers required: - paymentInstrumentType - accountNumber properties: paymentInstrumentType: description: Payment instrument type identifier. Must be `ACCOUNT` type: string enum: - ACCOUNT example: ACCOUNT accountNumber: description: Bank account number (digits only) type: string pattern: ^\d*$ example: '40817810099910004312' PI.CardPan: type: object description: | Payment instrument - full card number (PAN). Used in `target` for **CREDIT** transfers when crediting by card number required: - paymentInstrumentType - cardPan properties: paymentInstrumentType: description: Payment instrument type identifier. Must be `CARD_PAN` type: string enum: - CARD_PAN example: CARD_PAN cardPan: description: Full card number (16–19 digits) type: string minLength: 16 maxLength: 19 pattern: ^\d{16,19}$ example: '40817810099910004312' PI.Card: type: object description: | Payment instrument - full card details for debit authorization. Used in `source` for **DEBIT** transfers required: - paymentInstrumentType - pan - expiryDate - phoneNumber properties: paymentInstrumentType: description: Payment instrument type identifier. Must be `CARD` type: string enum: - CARD example: CARD pan: description: Card number (16–19 digits) type: string minLength: 16 maxLength: 19 pattern: ^\d{16,19}$ example: '4000789077777810' expiryDate: description: Card expiry date in `MMYY` format type: string minLength: 4 maxLength: 4 pattern: ^\d{4}$ example: '0530' securityCode: description: Card security code (CVC/CVV), 3–4 digits type: string minLength: 3 maxLength: 4 pattern: ^\d{3,4}$ example: '433' phoneNumber: description: Phone number linked to the card (E.164 format) type: string pattern: ^\+[1-9]\d{1,14}$ example: '+998948063815' CreditSourceInstrument: description: > Payment instrument identifying the **sender's** account for a CREDIT transfer. The Partner uses this to indicate the source account on their side. Optional. If provided, all fields of the selected instrument are required oneOf: - $ref: '#/components/schemas/PI.Account' - $ref: '#/components/schemas/PI.MaskedCard' CreditTargetInstrument: description: | Payment instrument identifying the **recipient** for a CREDIT transfer. Remit Core uses this to credit funds to the recipient oneOf: - $ref: '#/components/schemas/PI.CardPan' - $ref: '#/components/schemas/PI.Phone' DebitSourceInstrument: description: | Payment instrument identifying the **sender** for a DEBIT transfer. Remit Core uses this to debit funds from the sender oneOf: - $ref: '#/components/schemas/PI.Card' DebitTargetInstrument: description: > Payment instrument identifying the **recipient's** account for a DEBIT transfer. The Partner uses this to indicate the destination account on their side oneOf: - $ref: '#/components/schemas/PI.Account' - $ref: '#/components/schemas/PI.MaskedCard' PersonData: type: object properties: firstName: description: First name (ASCII Latin characters only) type: string minLength: 1 example: IVAN middleName: description: Middle name/Second name (ASCII Latin characters only) type: string minLength: 2 example: IVANOVICH lastName: description: Last name (ASCII Latin characters only) type: string minLength: 2 example: IVANOV nationality: description: Nationality code according to ISO 3166-1 numeric (3 digits) type: string minLength: 3 maxLength: 3 example: '860' birthday: description: Date of birth in `YYYY-MM-DD` format type: string format: date example: '1995-11-17' birthPlace: description: Place of birth type: string example: Tashkent address: description: Residential address type: string minLength: 2 example: Republic of Uzbekistan, Tashkent, Fidokor str., 30, room 18 identityDocument: $ref: '#/components/schemas/IdentityDocument' extraFields: type: object description: Additional fields (if required) SenderPersonDataExtraFields: type: object description: >- Additional sender identification fields required for DEBIT transfers from Uzbekistan properties: pinfl: description: > Personal identification number (PINFL) of an individual in Uzbekistan. Required for `transferType = DEBIT` and `senderCountry = UZB` type: string example: '12345678901234' residencyCode: description: | Residency status in Uzbekistan. Required for `transferType = DEBIT` and `senderCountry = UZB`. Possible values: * `1` - Resident * `2` - Non-resident type: integer example: 1 IdentityDocument: type: object description: Identity document details properties: documentType: description: | Identity document type. Possible values: * `ID` - National identity card * `PASSPORT` - Domestic (internal) passport * `FOREIGN_PASSPORT` - International passport used for cross-border identification * `RESIDENT_CARD` - Residence permit or permanent residency card issued by the country of stay * `MILITARY_ID` - Military identity document * `DRIVER_LICENSE` - Driver's license * `OTHER` - Other identity document not covered by the types above enum: - ID - PASSPORT - FOREIGN_PASSPORT - RESIDENT_CARD - MILITARY_ID - DRIVER_LICENSE - OTHER type: string example: PASSPORT documentCountry: description: >- Country code that issued the document, according to ISO 3166-1 alpha-3 type: string pattern: ^[A-Z]{3}$ example: UZB series: description: Document series, if applicable type: string example: AB number: description: Document number type: string example: '754755' issuedDate: description: Document issue date in `DD-MM-YYYY` format type: string example: 12-06-2025 issuedBy: description: Name of the authority that issued the document type: string example: UFMS FOR SPB №66 extraFields: type: object description: Additional document fields if required additionalProperties: type: string RegisterTransferResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `0` - Request completed successfully * `3001` - A transfer with the provided externalTransferId has already been registered * `3003` - The transfer amount exceeds the single transaction limit * `3004` - The daily transfer amount limit has been reached or exceeded * `3010` - The specified identificationType is not allowed for this direction * `3011` - Required PersonData fields are missing according to the rules * `3012` - The monthly transfer amount limit has been reached or exceeded * `3013` - The daily number of transfers exceeds the allowed limit * `3014` - The monthly number of transfers exceeds the allowed limit * `3017` - Limits are not configured for the partner, or the limits service is unavailable * `3021` - Recipient’s card not found in the system * `3024` - Recipient’s bank not found or not supported by the system * `3030` - Sender failed stop-list check * `3031` - Recipient failed stop-list check * `3034` - Recipient’s card type/payment system not supported * `3102` - Exceeded the limit * `3103` - Rejected by security settings * `8002` - Access restriction by partner/direction/country/currency * `9000` - Internal error * `9100` - External service interaction error type: integer example: 0 message: description: Response message type: string example: Request completed successfully result: description: Transfer information allOf: - $ref: '#/components/schemas/TransferResultStatusForRegister' - $ref: '#/components/schemas/TransferResult' TransferResultStatusForRegister: type: object required: - status properties: status: description: | Current transfer status. Possible values (for both **CREDIT** and **DEBIT** transfer): * `REGISTERED` - Transfer successfully registered * `FAILED` - Transfer rejected type: string enum: - REGISTERED - FAILED example: REGISTERED ProcessTransferResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `0` - Request completed successfully * `2002` - Request must be repeated * `3003` - The transfer amount exceeds the single transaction limit * `3012` - The monthly transfer amount limit has been reached or exceeded * `3013` - The daily number of transfers exceeds the allowed limit * `3014` - The monthly number of transfers exceeds the allowed limit * `3017` - Limits are not configured for the partner, or the limits service is unavailable * `3020` - Sender’s card not found in the system * `3023` - Sender’s bank not found or not supported by the system * `3030` - Sender failed stop-list check * `3031` - Recipient failed stop-list check * `3032` - The client’s phone number in the request does not match the number linked to the card * `3035` - Transfer confirmation is not possible in the current status * `3036` - Confirmation performed after the allowed time window — transfer expired * `3037` - Error occurred while crediting funds * `3039` - Sender’s card type/payment system not supported * `3041` - Error occurred while debiting funds * `3054` - Transfer with the specified ID not found * `3102` - Exceeded the limit * `3103` - Rejected by security settings * `5003` - Exchange rate has changed since the transfer registration * `9000` - Internal error * `9100` - External service interaction error type: integer example: 0 message: description: Response message type: string example: Request completed successfully result: description: Transfer details allOf: - $ref: '#/components/schemas/TransferResultStatusForProcess' - $ref: '#/components/schemas/TransferResult' TransferResultStatusForProcess: type: object required: - status properties: status: description: | Current transfer status. Possible values for **CREDIT** transfer: * `SUCCESS` - Transfer successfully completed * `FAILED` - Transfer rejected Possible values for **DEBIT** transfer: * `REGISTERED` - Transfer registered (returns with response code `2002` - Request must be repeated) * `FAILED` - Transfer rejected type: string enum: - REGISTERED - SUCCESS - FAILED example: SUCCESS ProcessPendingTransferResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `2000` - Request accepted. Please wait for operation status via Callback or query the status manually type: integer example: 2000 message: description: Response message type: string example: >- Request accepted. Wait for operation processing information in Callback or request status result: description: Transfer details with current status allOf: - $ref: '#/components/schemas/TransferResultStatusForProcessPending' - $ref: '#/components/schemas/TransferResult' TransferResultStatusForProcessPending: type: object required: - status properties: status: description: | Current transfer status. Possible values (for both **CREDIT** and **DEBIT** transfer): * `PROCESSING` - Transfer processing initiated type: string enum: - PROCESSING example: PROCESSING NeedConfirmationProcessTransferResponse: type: object required: - code - message - confirmationData properties: code: description: | Response code. Possible values: * `2001` - Request completed successfully. Transfer confirmation required type: integer example: 2001 message: description: Response message type: string example: Request completed successfully. Transfer confirmation required confirmationData: description: >- Confirmation type and value. Returned when transfer confirmation is required allOf: - $ref: '#/components/schemas/ConfirmationData' result: description: Transfer details allOf: - $ref: >- #/components/schemas/TransferResultStatusForNeedConfirmationProcess - $ref: '#/components/schemas/TransferResult' TransferResultStatusForNeedConfirmationProcess: type: object required: - status properties: status: description: | Current transfer status. Possible values (only for **DEBIT** transfer): * `CONFIRMATION` - Transfer awaiting client confirmation type: string enum: - CONFIRMATION example: CONFIRMATION ConfirmationData: type: object required: - confirmationType properties: confirmationType: type: string enum: - OTP - 3DS description: | Confirmation method required to proceed. Possible values: * `OTP` - One-time password sent to the client * `3DS` - Three-Domain Secure protocol for online payment authentication. example: OTP confirmationValue: type: string description: | Confirmation value, if provided by Remit Core. For `confirmationType = OTP` contains the one-time password. May be absent if the OTP is delivered directly to the client example: '66549' extraFields: type: object allOf: - $ref: '#/components/schemas/ThreeDsExtraFields' ThreeDsExtraFields: properties: acsUrl: description: >- Link to the issuer bank’s ACS. Required for `confirmationType = 3DS` type: string termUrl: description: >- Return URL from the issuer bank's ACS. Required for `confirmationType = 3DS` type: string paReq: description: >- Payment Authentication Request message (base64). Required for `confirmationType = 3DS` type: string nullable: true ConfirmTransferResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `0` - Request completed successfully * `3003` - The transfer amount exceeds the single transaction limit * `3008` - OTP is incorrect. Please resend the code * `3012` - The monthly transfer amount limit has been reached or exceeded * `3013` - The daily number of transfers exceeds the allowed limit * `3014` - The monthly number of transfers exceeds the allowed limit * `3017` - Limits are not configured for the partner, or the limits service is unavailable * `3018` - Maximum number of OTP attempts exceeded. Operation rejected * `3035` - Transfer confirmation is not possible in the current status * `3036` - Confirmation performed after the allowed time window — transfer expired * `3040` - One-time password has expired. Please request a new code * `3041` - Error occurred while debiting funds * `3054` - Transfer with the specified ID not found * `5003` - Exchange rate has changed since the transfer registration * `9000` - Internal error * `9100` - External service interaction error type: integer example: 0 message: description: Response message type: string example: Request completed successfully result: description: Transfer details allOf: - $ref: '#/components/schemas/TransferResultStatusForConfirm' - $ref: '#/components/schemas/TransferResult' TransferResultStatusForConfirm: type: object required: - status properties: status: description: | Current transfer status. Possible values (only for **DEBIT** transfer): * `CONFIRMATION` - Transfer awaiting client confirmation (returns with response code `3008` - OTP is incorrect. Please resend the code) * `SUCCESS` - Transfer successfully completed * `FAILED` - Transfer rejected type: string enum: - CONFIRMATION - SUCCESS - FAILED example: SUCCESS ConfirmPendingTransferResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `2000` - Request accepted. Please wait for operation status via Callback or query the status manually type: integer example: 2000 message: description: Response message type: string example: >- Request accepted. Wait for operation processing information in Callback or request status result: description: Transfer details with current status allOf: - $ref: '#/components/schemas/TransferResultStatusForConfirmPending' - $ref: '#/components/schemas/TransferResult' TransferResultStatusForConfirmPending: type: object required: - status properties: status: description: | Current transfer status. Possible values (only for **DEBIT** transfer): * `CONFIRMING` - Transfer confirmation in progress type: string enum: - CONFIRMING example: CONFIRMING ResendOtpResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `0` - Request completed successfully * `3017` - Limits are not configured for the partner, or the limits service is unavailable * `3018` - Maximum number of OTP attempts exceeded. Operation rejected * `3035` - Transfer confirmation is not possible in the current status * `3036` - Confirmation performed after the allowed time window — transfer expired * `3041` - Error occurred while debiting funds * `3054` - Transfer with the specified ID not found * `9000` - Internal error * `9100` - External service interaction error * `9051` - Timeout while waiting for response from external service type: integer example: 0 message: description: Response message type: string example: Request completed successfully result: description: Transfer details with current status allOf: - $ref: '#/components/schemas/TransferResultStatusForResendOtp' - $ref: '#/components/schemas/TransferResult' TransferResultStatusForResendOtp: type: object required: - status properties: status: description: | Current transfer status. Possible values (only for **DEBIT** transfer): * `CONFIRMATION` - Transfer awaiting client confirmation * `FAILED` - Transfer rejected type: string enum: - CONFIRMATION - FAILED example: CONFIRMATION CancelTransferResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `0` - Request completed successfully * `3038` - Transfer status does not allow the requested operation * `3054` - Transfer with the specified ID not found * `3055` - Cancellation failed. Please retry the request * `8003` - Cancellation for credit transfer type prohibited * `9000` - Internal error * `9100` - External service interaction error type: integer example: 0 message: description: Response message type: string example: Request completed successfully result: description: Transfer details with current status allOf: - $ref: '#/components/schemas/TransferResultStatusForCancel' - $ref: '#/components/schemas/TransferResult' TransferResultStatusForCancel: type: object required: - status properties: status: description: | Current transfer status. Possible values (only for **DEBIT** transfer): * `CANCELLED` - Transfer successfully cancelled * `CANCELLING_FAILED` - Transfer cancellation is failed type: string enum: - CANCELLED - CANCELLING_FAILED example: CANCELLED CancelPendingTransferResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `2000` - Request accepted. Please wait for operation status via Callback or query the status manually type: integer example: 2000 message: description: Response message type: string example: >- Request accepted. Wait for operation processing information in Callback or request status result: description: Transfer details with current status allOf: - $ref: '#/components/schemas/TransferResultStatusForCancelPending' - $ref: '#/components/schemas/TransferResult' TransferResultStatusForCancelPending: type: object required: - status properties: status: description: | Current transfer status. Possible values (only for **DEBIT** transfer): * `CANCELLING` - Transfer cancellation in progress type: string enum: - CANCELLING example: CANCELLING StatusTransferResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `0` - Request completed successfully * `3054` - Transfer with the specified ID not found * `9000` - Internal error type: integer example: 0 message: description: Response message type: string example: Request completed successfully result: description: Transfer details with current status allOf: - $ref: '#/components/schemas/TransferResultStatusForGetStatus' - $ref: '#/components/schemas/TransferResult' confirmationData: description: > Confirmation type and value. Returned when transfer confirmation is required. For **DEBIT** transfers in the `CONFIRMATION` status only. allOf: - $ref: '#/components/schemas/ConfirmationData' TransferResultStatusForGetStatus: type: object required: - status properties: status: description: | Current transfer status. Possible values for **CREDIT** transfer: * `INIT` - Transfer initiated, registration in progress * `REGISTERED` - Transfer successfully registered * `PROCESSING` - Transfer processing initiated * `SUCCESS` - Transfer successfully completed * `FAILED` - Transfer rejected * `CANCELLED` - Transfer cancelled Possible values for **DEBIT** transfer: * `INIT` - Transfer initiated, registration in progress * `REGISTERED` - Transfer successfully registered * `PROCESSING` - Transfer processing initiated * `CONFIRMATION` - Transfer awaiting client confirmation * `CONFIRMING` - Transfer confirmation in progress * `SUCCESS` - Transfer successfully completed * `FAILED` - Transfer rejected * `CANCELLING` - Transfer cancellation in progress * `CANCELLED` - Transfer cancelled * `CANCELLING_FAILED` - Transfer cancellation is failed type: string enum: - INIT - REGISTERED - PROCESSING - CONFIRMATION - CONFIRMING - SUCCESS - FAILED - CANCELLING - CANCELLING_FAILED - CANCELLED example: SUCCESS TransferResult: type: object required: - transferId - externalTransferId - senderCurrencyCode - receiverCurrencyCode properties: transferId: description: Transfer identifier in Remit Core type: string format: uuid example: 01990610-f6fb-72fd-84c1-ff8cf5840599 externalTransferId: type: string description: Transfer identifier in the Partner's system example: partner-tx-00123 senderAmount: type: integer format: int64 description: Transfer amount in minor units of sender's currency example: 100000 senderCurrencyCode: type: string description: Sender's currency code according to ISO 4217 alpha-3 pattern: ^[A-Z]{3}$ example: UZS senderName: description: First name+Last name or cardholder name of transfer sender type: string example: PETR PETROV receiverAmount: type: integer format: int64 description: >- Amount received by the recipient in minor units of recipient's currency example: 13900000 receiverCurrencyCode: type: string description: Recipient's currency code according to ISO 4217 alpha-3 pattern: ^[A-Z]{3}$ example: UZS receiverName: description: First name+Last name or cardholder name of transfer recipient type: string example: IVAN IVANOV receiverPaymentSystem: description: Payment system of transfer recipient's payment instrument type: string example: UZCARD fee: type: integer format: int64 description: Fee amount in minor units of settlements currency example: 1000 exchangeRate: type: string description: >- Exchange rate from sender's currency to recipient's currency (with exactly 4 decimal places) example: '140.0000' rrn: description: Retrieval Reference Number - unique bank operation number type: string example: '524818898472' TransferIdRequest: type: object required: - transferId properties: transferId: description: >- Transfer identifier in Remit Core, received in the response to `POST /register` type: string example: 01990610-f6fb-72fd-84c1-ff8cf5840599 ConfirmTransferRequest: type: object required: - transferId - otp properties: transferId: description: >- Transfer identifier in Remit Core, received in the response to `POST /register` type: string example: 01990610-f6fb-72fd-84c1-ff8cf5840599 otp: description: One-time code for confirmation received by the client type: string example: '766855' GetBanksRequest: type: object required: - phoneNumber - receiverCountry properties: phoneNumber: description: Recipient's phone number (E.164 format) pattern: ^\+[1-9]\d{1,14}$ type: string example: '+998948063815' receiverCountry: description: | Recipient's country code according to ISO 3166-1 alpha-3. Currently only `UZB` is supported type: string pattern: ^[A-Z]{3}$ example: UZB enum: - UZB GetBanksResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `0` - Request completed successfully * `9100` - External service interaction error type: integer example: 0 message: description: Response status message type: string example: Request completed successfully result: description: Response data. Present when `code = 0` allOf: - $ref: '#/components/schemas/GetBanksResult' GetBanksResult: type: object required: - banks properties: banks: description: > List of short bank codes where an active card was found for the specified phone number. May be empty if no active cards were found type: array items: type: string example: - NBU - SQB - UZB GetBalanceResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `0` - Request completed successfully * `3060` - Invalid account number in balance request * `9100` - External service interaction error type: integer example: 0 message: description: Response status message type: string example: Request completed successfully result: description: Response data. Present when `code = 0` allOf: - $ref: '#/components/schemas/GetBalanceResult' GetBalanceResult: type: object required: - accountNumber - closingBalance - currency properties: accountNumber: type: string description: | Partner's account number to which the balance refers. example: '29126840100001190019' closingBalance: type: integer format: int64 description: > Account balance in minor units of the account currency (e.g. cents for USD), as reflected in the core banking system (ABS) at the moment of the request. Note: some transactions of the current operational day may not yet be reflected until the ABS end-of-day processing completes. example: 8280085 currency: type: string pattern: ^[A-Z]{3}$ description: | Account currency code according to ISO 4217 alpha-3 example: USD 422ErrorResponse: type: object required: - code - message properties: code: description: | Response code. Possible values: * `1001` - The request body is not a valid JSON or does not match the expected schema structure * `1002` - Required fields are missing * `1003` - Format/range/enum requirements violated; the 'errors' array contains the fields and descriptions of the issues * `1101` - Required header is missing type: integer example: 1001 message: description: Error message type: string example: Required field is missing errors: type: array description: List of field-level validation errors items: $ref: '#/components/schemas/ErrorDetails' ErrorDetails: type: object required: - field - message properties: field: description: Name of the field containing the error type: string example: receiverCurrencyCode message: description: Description of the validation error for this field type: string example: Currency code must be 3 characters ErrorResponse: type: object required: - code - message properties: code: description: Response code type: integer message: description: Error message type: string errors: type: array items: $ref: '#/components/schemas/ErrorDetails' TransferResultInfoCallback: description: Final transfer result delivered asynchronously allOf: - $ref: '#/components/schemas/TransferResultStatusForInfoCallback' - $ref: '#/components/schemas/TransferResult' - type: object required: - status - transferId - externalTransferId - senderAmount - senderCurrencyCode - receiverAmount - receiverCurrencyCode - exchangeRate properties: confirmationData: description: > Confirmation type and value. Returned when transfer confirmation is required. For **DEBIT** transfers in the `CONFIRMATION` status only. allOf: - $ref: '#/components/schemas/ConfirmationData' TransferResultStatusForInfoCallback: type: object required: - status properties: status: description: > Final transfer status. Possible values for **CREDIT** transfer (for callback after `POST /process` with code `2000` in response): * `SUCCESS` - Transfer successfully completed * `FAILED` - Transfer rejected Possible values for **DEBIT** transfer: * For callback after `POST /process` or `POST /confirm` with code `2000` in response: * `SUCCESS` - Transfer successfully completed * `FAILED` - Transfer rejected * Only for callback after `POST /process` with code `2000` in response: * `CONFIRMATION` - Transfer awaiting client confirmation * For callback after `POST /cancel` with code `2000` in response: * `CANCELLED` - Transfer successfully cancelled * `CANCELLING_FAILED` - Transfer cancellation is failed type: string enum: - CONFIRMATION - SUCCESS - FAILED - CANCELLED - CANCELLING_FAILED example: SUCCESS securitySchemes: XApiKeyAuth: type: apiKey in: header name: X-Api-Key description: >- Partner API key in UUID format. Issued upon onboarding. Required for all methods callbacks: TransferResultInfo: '{/callbackUrl}': post: summary: Transfer result callback description: > Asynchronous notification sent by Remit Core when transfer processing completes. Sent after `POST /process`, `POST /confirm` or `POST /cancel` returned code `2000`. The callback URL is agreed upon during Partner onboarding requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferResultInfoCallback' responses: '200': description: Standard success response '500': description: Partner-side error while processing the callback 2XX: description: Any other 2xx is also treated as success