# Confirm a Transfer

**POST** `/transfers/{transferId}/confirm`

Base URL: `https://api.uat.triple-a.io/api/fiat-payout/v1`

This endpoint allows you to choose the payment method to pay the transfer. Once the payment is confirmed, the transfer will be tagged as confirmed and sent to our providers who finally transfer the fund to the recipient.

## Authorization

- oauth2 (http, bearer)

## Path parameters

- `transferId` (string, required)

## Body

Content type: `application/json`

- `payment_method` ("crypto_page" | "prefunding" | "crypto_address" | "payment_initiation" | "bank_transfer" | "card" | "customer_account")
  The method to use to pay the transfer. If `payment_method` was specified when creating the transfer (quote time), the same value must be provided here — otherwise the request will be rejected with `invalid.payment_method`.
- `success_url` (string)
  Webpage to redirect the customer to on successful payment. We inject some information into the URL as URL parameters.
- `cancel_url` (string)
  Webpage to redirect the customer to on cancelled payment. We inject some information into the URL as URL parameters.
- `amount_to_pay` (number)
  the amount to pay in the sending currency of the transfer
- `cryptocurrency` ("BTC" | "ETH" | "USDT" | "testBTC" | "USDT_TRC20" | "USDT_POLY" | "USDT_SOL" | "sats" | "USDC" | "USDC_POLY" | "USDC_ARB" | "USDC_SOL" | "PYUSD" | "PYUSD_SOL")
  the cryptocurrency used to pay
- `card_id` (string<uuid>)

Example:

```json
{
  "payment_method": "crypto_page",
  "success_url": "string",
  "cancel_url": "string",
  "amount_to_pay": 100,
  "cryptocurrency": "BTC",
  "card_id": "00000000-0000-0000-0000-000000000000"
}
```

## Responses

### 200

OK

- `id` (string<uuid>)
  Transfer Identifier
- `source_transfer_id` (string<uuid>)
  The ID of the original transfer this transfer was retried from. Only present on retry transfers.
- `external_id` (string)
  Transfer Reference provided by API caller
- `sender_id` (string<uuid>)
  Identifier of the sender (a Individual or company)
- `recipient_id` (string<uuid>)
  Identifier of the recipient (a Individual or company)
- `destination_account_id` (string<uuid>)
  DestinationAccount Identifier
- `destination_account` (object)
  A DestinationAccount is bank account or digital wallet account to receive a local currency transfer.
  - `id` (string<uuid>, required)
  - `type` ("bank_account" | "digital_wallet" | "cash_pickup" | "card", required)
    Type of destination account
  - `owner_id` (string<uuid>, required)
  - `external_id` (string, required)
    Your own platform's identifier for this payment destination account.
  - `receiving_institution_id` (string<uuid>, required)
    Identifier of a receiving institution which refers to a bank or a digital wallet operator.
  - `currency` (string<iso-4217>, required)
    Local currency for this account.
  - `country_code` (string<iso-3166-1-alpha3>, required)
    The country associated with the payment destination.
  - `alias` (string)
    Name or label for this payment destination.
  - `archived` (boolean)
    No past payment destinations can be deleted, however they can be disabled so they can be avoided for use.
  - `account` (object, required)
    - `cashpoint` (string)
      Receiving Institution Reference Code
    - `recipient_name` (string)
      Recipient Full Name
    - `recipient_identification_type` ("RESIDENT_CARD" | "NATIONAL_ID" | "PASSPORT" | "TAX_ID" | "DRIVING_LICENSE" | "SOCIAL_SECURITY" | "OTHER")
      Identification type (For ARG, CUIT/CUIL = TAX_ID. For COL, Cedula de Ciudadania = NATIONAL_ID, NIT = TAX_ID, passport = PASSPORT)
    - `recipient_identification_number` (string)
      Identification number
    - `recipient_nationality` (string<iso-3166-1-alpha3>)
      Nationality
    - `recipient_address` (string)
      Residence address
    - `recipient_province_state` (string)
      Residence State/Province
    - `recipient_city` (string)
      Residence city
    - `recipient_email` (string)
      Email address
    - `recipient_date_of_birth` (string<date>)
      Date of birth
    - `recipient_identification_issuer` (string)
      Identification issuer
    - `recipient_identification_issue_date` (string<date>)
      Identification issue date
    - `recipient_identification_expiry_date` (string<date>)
      Identification expiry date
    - `recipient_gender` ("female" | "male")
      Gender
    - `recipient_zip_code` (string)
      Residence address zip code or postal code
    - `mobile_number` (string)
    - `account_name` (string)
      Bank account holder's full name.
    - `account_number` (string)
      Bank account number.
    - `account_type` ("IBAN" | "CLABE" | "CBU" | "CBU ALIAS" | "FPS ID" | "ACCOUNT NUMBER" | "PHONE_NUMBER" | "EMAIL")
      The bank account number's format.
    - `bank_account_type` ("SAVINGS" | "CHECKING")
      The bank account type.
    - `routing_type` ("SWIFT-BIC" | "BIK" | "IFSC" | "Sort code" | "ABA" | "BSB" | "BEFTN" | "Routing Number" | "Clearing code" | "Branch Code" | "Zengin Code")
    - `routing_code` (string)
    - `additional_routing_type` ("SWIFT-BIC" | "BIK" | "IFSC" | "Sort code" | "ABA" | "BSB" | "BEFTN" | "Routing Number" | "Clearing code" | "Branch Code" | "Zengin Code")
    - `additional_routing_code` (string)
    - `branch_code` (string)
    - `bank_name` (string)
    - `network` ("network:local" | "network:ACH" | "network:SEPA" | "network:swift" | "network:RTP" | "network:sameday_ACH")
      The network that can be used for transferring funds to this account
  - `intermediary_bank_details` (object)
    - `routing_code_type` ("SWIFT-BIC")
      Routing code type for intermedary bank details
    - `routing_code_value` (string)
      Routing code value for intermedary bank details
    - `bank_name` (string)
      Intermedary bank name
    - `address` (object)
      Intermediay bank address defines intermediary bank address used for intermediary bank
      - `address_line_1` (string)
        Address line 1 of bank address
      - `address_line_2` (string)
        Address line 2 of bank address
      - `city` (string)
        City of the intermediary bank address
      - `state` (string)
        State of the intermediary bank address
      - `zip_code` (string)
        Zip code of intermediary bank address
      - `country_code` (string)
        Country code of intermediary bank address
  - `created_at` (string<date-time>)
  - `updated_at` (string<date-time>)
- `mode` ("sending" | "receiving")
  `sending` mode allow users to specify the `sending_amount` and get a quote for `receiving_amount`; `receiving` mode allows users to specify the `receiving_amount` and get a quote for `sending_amount`.
- `sending_amount` (number<double>)
  Sending amount
- `sending_currency` (string<iso-4217-ext>)
  Sending Currency which is defined by /currencies.
- `receiving_amount` (number<double>)
  Receiving amount
- `receiving_currency` (string<iso-4217-ext>)
  Receiving Currency which is defined by /currencies.
- `purpose_of_remittance` ("OTHER_FEES" | "INSURANCE_CLAIMS" | "MAINTENANCE_EXPENSES" | "SMALL_VALUE_REMITTANCE" | "TRANSPORTATION_FEES" | "GIFT_AND_DONATION" | "OFFICE_EXPENSES" | "EXPORTED_GOODS" | "PERSONAL_TRANSFER" | "OTHER" | "LIBERALIZED_REMITTANCE" | "TAX_PAYMENT" | "MEDICAL_TREATMENT" | "SHARES_INVESTMENT" | "ROYALTY_FEES" | "LOAN_PAYMENT" | "BUSINESS_INSURANCE" | "ADVERTISING_EXPENSES" | "TRAVEL" | "DELIVERY_FEES" | "PROPERTY_PURCHASE" | "FAMILY_SUPPORT" | "UTILITY_BILLS" | "CONSTRUCTION_EXPENSES" | "PROPERTY_RENTAL" | "SERVICE_CHARGES" | "HOTEL_ACCOMMODATION" | "SALARY_PAYMENT" | "EDUCATION" | "ADVISORY_FEES" | "FUND_INVESTMENT" | "COMPANY_EXPENSES" | "BILLS" | "INSURANCE" | "INVESTMENT" | "REMITTANCE" | "HEALTH" | "TAXES")
  Receiving Currency which is defined by /currencies. If OTHER is used, it could cause extended delays
- `source_of_funds` ("GIFT" | "SALARY" | "LOTTERY" | "SAVINGS" | "CASH" | "OTHER" | "BUSINESS")
  Receiving Currency which is defined by /currencies.
- `relationship` ("FAMILY" | "GRAND_FATHER" | "FATHER" | "FATHER_IN_LAW" | "GRAND_MOTHER" | "MOTHER" | "MOTHER_IN_LAW" | "UNCLE" | "AUNT" | "BROTHER" | "SISTER" | "FRIEND" | "EX-SPOUSE" | "SON" | "DAUGHTER" | "NIECE" | "NEPHEW" | "SISTER_IN_LAW" | "BROTHER_IN_LAW" | "HUSBAND" | "WIFE" | "SELF" | "SPOUSE" | "COUSIN" | "EX_SPOUSE" | "OTHER")
  Relationship between sender and recipient
- `remarks` (string)
  Remarks or notes
- `transaction_pin` (string)
  A PIN related the transfer, e.g. Cash Pickup PIN
- `exchange_rate` (number<double>)
  The exchange rate from sending currency to receiving currency, e.g. 1 BTC = 57151.5 USD.
- `status` ("created" | "awaiting_fund" | "trade_initiated" | "confirmed" | "rejected" | "cancelled" | "submitted" | "available" | "declined" | "completed" | "reversed")
  Transfer Status
- `sub_status` ("none" | "ambiguous" | "invalid_parameters" | "declined_by_provider" | "reversed_by_provider")
  Transfer SubStatus
- `error_desc` (string)
  Transfer error description / decline reason
- `error_code` ("E001" | "E002" | "E003" | "E004" | "E005" | "E006" | "E007" | "E008" | "E010" | "E011" | "E012" | "E013" | "E014" | "E015" | "E016" | "E017" | "E018" | "E019" | "E020" | "E022" | "E023" | "E024" | "E025" | "E026" | "E027" | "E028" | "E029" | "E030" | "E031" | "E032" | "E033" | "E034" | "E035" | "E036" | "E037" | "E038" | "E041" | "E042" | "E043" | "E044" | "E045" | "E048" | "E049" | "E052" | "E053" | "E054" | "E059" | "E060" | "E061" | "E063" | "E064" | "E065" | "E066" | "E067" | "E069" | "E072" | "E073" | "E074" | "E075" | "E076" | "E077")
  Transfer error code
- `balance_id` (string<uuid>)
  This indicates which balance is used for this transfer
- `balance_debit_amount` (number<double>)
  This indicates the amount which will be debit from merchant's balance with `balance_id` for this transfer.
- `balance_currency` (string<iso-4217-ext>)
  Iso-4217 for `fiat_money` (i.e., local currency), non-iso-4217 listed here (https://en.wikipedia.org/wiki/ISO_4217) for `cyptocurrency`'
- `fee` (number<double>)
  This indicates the amount which will be debit from merchant's balance as a transaction fee with `balance_id` for this transfer. This includes VAT and intermediary bank fee (if applicable).
- `fee_currency` (string<iso-4217-ext>)
  currency for transaction fee; where ISO-4217 for `fiat_money` (i.e., local currency), non-iso-4217 listed here (https://en.wikipedia.org/wiki/ISO_4217) for `cyptocurrency`'
- `vat` (number<double>)
  This indicates the VAT amount calculated on agreed pricing fee.
- `vat_percentage` (number<double>)
  This indicates the VAT percentage is used to calculate VAT fee on agreed pricing fee.
- `sending_amount_returned` (number<double>)
  This indicates the sending amount which will be returned to merchant's balance with `balance_id` for this transfer when the transfer is failed (rejected, cancelled, declined and reversed).
- `fee_returned` (number<double>)
  This indicates the transaction fee amount which will be returned to merchant's balance with `balance_id` for this transfer when the transfer is failed (rejected, cancelled and declined); for transfers are reversed, this will be 0.
- `expires_at` (string<date-time>)
  Creation Timestamp
- `created_at` (string<date-time>)
  Creation Timestamp
- `updated_at` (string<date-time>)
  Update Timestamp
- `charge_type` ("OUR" | "SHA")
  To specify which party bears the bank fee. **OUR** means that the initiator will pay the fee, which means an additional fee when you create the transfer. **SHA** means that both the initiator and the recipient will pay the fee. Some fees will be deducted from the amount sent by the intermediary banks
- `intermediary_bank_fee` (number<double>)
  Indicates the intermediary bank charge. It will follow the sending currency.
- `payment` (object)
  Payment
  - `id` (string<uuid>)
    Payment Identifier
  - `status` (string)
    Payment status
  - `reason` (string<uuid>)
    Failed/Declined Reason
  - `url` (string)
    CDN of payment page
  - `crypto_address` (string)
    Cryptocurrency token address
  - `crypto_currency` (string)
    Cryptocurrency value
  - `crypto_network` (string)
    The blockchain to use to pay
  - `expires_at` (string<date-time>)
    The expiration of the address
  - `card_issuer_country` (string)
    The issuer country of card if payment is made via card
  - `reference_number` (string)
    Payment reference number
  - `iban` (string)
    IBAN
- `card_form` (object)
  Only present for Card Destination Account
  - `id` (string)
  - `status` (string)
  - `reason` (string)
  - `reason_code` (string)
  - `created_at` (string<date>)
  - `deleted_at` (string<date>)
  - `expires_at` (string<date>)
  - `used_at` (string<date>)
  - `submitted_at` (string<date>)
  - `charged_at` (string<date>)
  - `hosted_url` (string<uri>)
    The link to the card adding form (front end).
    Card form is only valid for a certain time. To generate the new link, please call `POST /destination-accounts/{accountId}/card_form`.
    Please checkout the note for that api
- `conditions` (object)
  Conditions that a transfer must meet before it can be processed
  - `document_types` (object)
    - `transfer_purpose` (string)
- `documents` (object[])
  - `id` (string<uuid>)
  - `external_id` (string)
    A reference to the document given by API caller
  - `owner_id` (string<uuid>)
    The ID of an individual or company who owns the document.
  - `category` ("identity_verification")
    More categories will be added over time.
  - `document_type` ("passport" | "national_id" | "selfie_photo" | "kyc_provider_result")
    The type `kyc_provider_result` can be used to upload reports from the 3rd party KYC providers.
  - `mime_type` (string)
    The type `kyc_provider_result` can be used to upload reports from the 3rd party KYC providers.
  - `file_name` (string)
  - `file_id` (string)
  - `status` ("none" | "valid" | "pending" | "rejected" | "expired")
  - `expires_at` (string<date-time>)
    Time of expiry of the validity of this identity document.
  - `created_at` (string<date-time>)
  - `updated_at` (string<date-time>)

Example:

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "source_transfer_id": "00000000-0000-0000-0000-000000000000",
  "external_id": "string",
  "sender_id": "00000000-0000-0000-0000-000000000000",
  "recipient_id": "00000000-0000-0000-0000-000000000000",
  "destination_account_id": "00000000-0000-0000-0000-000000000000",
  "destination_account": {
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "bank_account",
    "owner_id": "00000000-0000-0000-0000-000000000000",
    "external_id": "string",
    "receiving_institution_id": "00000000-0000-0000-0000-000000000000",
    "currency": "USD",
    "country_code": "USA",
    "alias": "Account 1",
    "archived": false,
    "account": {
      "cashpoint": "string",
      "recipient_name": "string",
      "recipient_identification_type": "NATIONAL_ID",
      "recipient_identification_number": "S98765433X",
      "recipient_nationality": "SGP",
      "recipient_address": "1 Falcon Ave, California",
      "recipient_province_state": "New York",
      "recipient_city": "New York City",
      "recipient_email": "jamse.zhang@example.com",
      "recipient_date_of_birth": "2019-08-24",
      "recipient_identification_issuer": "City hall",
      "recipient_identification_issue_date": "2019-08-24",
      "recipient_identification_expiry_date": "2025-08-24",
      "recipient_gender": "female",
      "recipient_zip_code": "12345",
      "mobile_number": "string",
      "account_name": "John Zuckerberg",
      "account_number": "9876543201",
      "account_type": "IBAN",
      "bank_account_type": "SAVINGS",
      "routing_type": "SWIFT-BIC",
      "routing_code": "string",
      "additional_routing_type": "SWIFT-BIC",
      "additional_routing_code": "string",
      "branch_code": "string",
      "bank_name": "string",
      "network": "network:local"
    },
    "intermediary_bank_details": {
      "routing_code_type": "SWIFT-BIC",
      "routing_code_value": "BKENGB2LXXX",
      "bank_name": "Bank of England",
      "address": {
        "address_line_1": "1600 Amphitheatre Parkway",
        "address_line_2": "Building 43",
        "city": "Mountain View",
        "state": "California",
        "zip_code": "94043",
        "country_code": "USA"
      }
    },
    "created_at": "1970-01-01T00:00:00.000Z",
    "updated_at": "1970-01-01T00:00:00.000Z"
  },
  "mode": "sending",
  "sending_amount": 0.001,
  "sending_currency": "BTC",
  "receiving_amount": 57.15,
  "receiving_currency": "USD",
  "purpose_of_remittance": "FAMILY_SUPPORT",
  "source_of_funds": "SALARY",
  "relationship": "FATHER",
  "remarks": "string",
  "transaction_pin": "string",
  "exchange_rate": 57151.5,
  "status": "created",
  "sub_status": "none",
  "error_desc": "string",
  "error_code": "E001",
  "balance_id": "00000000-0000-0000-0000-000000000000",
  "balance_debit_amount": 57.15,
  "balance_currency": "USD",
  "fee": 57.15,
  "fee_currency": "USD",
  "vat": 57.15,
  "vat_percentage": 57.15,
  "sending_amount_returned": 57.15,
  "fee_returned": 57.15,
  "expires_at": "1970-01-01T00:00:00.000Z",
  "created_at": "1970-01-01T00:00:00.000Z",
  "updated_at": "1970-01-01T00:00:00.000Z",
  "charge_type": "SHA",
  "intermediary_bank_fee": 25,
  "payment": {
    "id": "00000000-0000-0000-0000-000000000000",
    "status": "string",
    "reason": "00000000-0000-0000-0000-000000000000",
    "url": "string",
    "crypto_address": "string",
    "crypto_currency": "string",
    "crypto_network": "string",
    "expires_at": "1970-01-01T00:00:00.000Z",
    "card_issuer_country": "USA",
    "reference_number": "MFB-870989-FPP",
    "iban": "FR7630006000011234567890189"
  },
  "card_form": {
    "id": "string",
    "status": "string",
    "reason": "string",
    "reason_code": "string",
    "created_at": "2024-01-01",
    "deleted_at": "2024-01-01",
    "expires_at": "2024-01-01",
    "used_at": "2024-01-01",
    "submitted_at": "2024-01-01",
    "charged_at": "2024-01-01",
    "hosted_url": "string"
  },
  "conditions": {
    "document_types": {
      "transfer_purpose": "string"
    }
  },
  "documents": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "external_id": "string",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "category": "identity_verification",
      "document_type": "passport",
      "mime_type": "string",
      "file_name": "string",
      "file_id": "string",
      "status": "pending",
      "expires_at": "1970-01-01T00:00:00.000Z",
      "created_at": "1970-01-01T00:00:00.000Z",
      "updated_at": "1970-01-01T00:00:00.000Z"
    }
  ]
}
```

### 400

Error defines errors may be returned from the system.

- `message` (string)
- `errors` (object[])
  - `errorCode` (string)
  - `message` (string)

Example:

```json
{
  "message": "string",
  "errors": [
    {
      "errorCode": "string",
      "message": "string"
    }
  ]
}
```

### 409

Error defines errors may be returned from the system.

- `message` (string)
- `errors` (object[])
  - `errorCode` (string)
  - `message` (string)

Example:

```json
{
  "message": "string",
  "errors": [
    {
      "errorCode": "string",
      "message": "string"
    }
  ]
}
```