---
title: "Link a customer bank account to a transaction for refund payouts"
method: PUT
path: "/api/v1/merchants/{merchantId}/transactions/{transactionId}/customer-bank-account"
tags: ["Transactions"]
---

# Link a customer bank account to a transaction for refund payouts

`PUT /api/v1/merchants/{merchantId}/transactions/{transactionId}/customer-bank-account`

Link a customer bank account to a transaction for refund payouts

## Path parameters

- `merchantId` string, uuid, required — The unique identifier of the merchant
- `transactionId` string, uuid, required — The unique identifier of the transaction

## Request body

- CustomerBankAccountInput — Customer bank account creation/update input
  - `account_holder_name` string, required — Name of the account holder
  - `customer_id` string, uuid — The customer who owns this bank account. Required when minting accounts outside the Flinks-linking flow.
  - `account_type` union — US ACH account type
    - 'checking'
    - 'savings'
  - `currency` string, required — The currency of the bank account
  - `country` string, required — The country of the bank account
  - `iban` string — The IBAN of the bank account
  - `account_number` string — The account number of the bank account
  - `sort_code` string — The sort code of the bank account (UK)
  - `routing_number` string — The routing number of the bank account (US)
  - `bban` string — Basic Bank Account Number (e.g., Norway)
  - `plusgiro_number` string — PlusGiro number (Sweden)
  - `bsb` string — Bank State Branch code (Australia)
  - `bic` string — The BIC/SWIFT code of the bank account

## Response `200`

Success

- TransactionResponse
  - `success` boolean, required
  - `data` object, required
    - `id` string, required
    - `transaction_number` string, required
    - `amount` number, required — Transaction amount in decimal format
    - `currency` object, required
      - `code` string, required — ISO 4217 currency code
      - `symbol` string, required — Currency symbol
      - `name` string, required — Currency name
      - `minor_unit` number, required — Number of decimal places
    - `transaction_type` 'payment' | 'refund' | 'reversal', required
    - `status` 'pending' | 'received' | 'fee_paid' | 'converted' | 'completed' | 'failed' | 'cancelled' | 'error' | 'unknown', required
    - `status_message` string, nullable, required
    - `cross_border` boolean, required
    - `deposit_country` string, required
    - `payout_country` string, required
    - `payout_currency` object, nullable, required
      - `code` string, required — ISO 4217 currency code
      - `symbol` string, required — Currency symbol
      - `name` string, required — Currency name
      - `minor_unit` number, required — Number of decimal places
    - `exchange_rate` number, nullable, required — FX rate applied for cross-border conversion
    - `converted_amount` number, nullable, required — Amount in payout currency after FX conversion
    - `payout_at` string, date-time, nullable, required — When the payout settled
    - `payout_batch_id` string, uuid, nullable, required — ID of the payout batch this transaction belongs to
    - `test` boolean, nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `settled_at` string, date-time, nullable, required
    - `payment_request` object, nullable, required
      - `id` string, uuid, required
      - `order_id` string, required — Merchant order ID
      - `merchant` object, nullable, required
        - `id` string, uuid, required
        - `partner` object, nullable, required
          - `id` string, uuid, required
      - `customer` object, nullable, required
        - `id` string, uuid, required
        - `name` string, required
        - `email` string, required
      - `payment_token` string, required — Payment token
      - `authorization_agreement_record_id` string, uuid, nullable, required — AgreementRecord id documenting the customer acceptance that authorised this payment request (ACH click-wrap).
    - `destination_account` string, nullable, required
    - `destination_account_type` string, nullable, required
    - `remittance_information` string, nullable, required
    - `payment_scheme` string, nullable, required
    - `platform` 'shopify' | 'woocommerce' | 'embedded' | 'payment_link', nullable, required
    - `problems` object[]
      - `code` string, required — Error code identifying the problem
      - `message` string, required — Human-readable description of the problem
      - `label` string, required — Display label for the problem
      - `is_resolvable` boolean, required — Whether the problem can be resolved by providing additional data
    - `target_status` union
      - 'pending'
      - 'received'
      - 'fee_paid'
      - 'converted'
      - 'completed'
      - 'failed'
      - 'cancelled'
      - 'error'
      - 'unknown'
    - `refund_status` union, required — Current refund status for payment transactions
      - 'refunding'
      - 'refunding_stuck'
      - 'refunding_failed'
      - 'partially_refunded'
      - 'fully_refunded'
    - `can_refund` boolean, required — Whether a refund can be initiated for this transaction
    - `related_transaction` object, nullable, required
      - `id` string, uuid, required
      - `transaction_number` string, required
    - `provider_status_events` object[], required
      - `id` string, uuid, required
      - `source` 'webhook' | 'polling' | 'finalization' | 'admin', required
      - `provider_name` string, required
      - `provider_status` string, required
      - `processing_status` 'received' | 'processed' | 'ignored' | 'failed' | 'conflict' | 'stale', required
      - `provider_updated_at` string, date-time, nullable, required
      - `created_at` string, date-time, required
      - `observed_at` string, date-time, required
      - `signature_valid` boolean, required
      - `event_id` string
      - `event_type` string
      - `processing_error` string
      - `provider_request_id` string
    - `merchant_webhook_deliveries` object[], required
      - `id` string, uuid, required
      - `payment_provider_status_id` string, uuid, nullable, required — Optional ID of the PaymentProviderStatus event that triggered this delivery
      - `webhook_url` string, required — The URL the webhook was sent to
      - `platform` 'embedded' | 'shopify' | 'woocommerce', required — Platform type
      - `event_type` string, required — Event type sent
      - `status` 'delivered' | 'failed', required — Delivery status
      - `response_status_code` number, nullable, required — HTTP response status code from merchant endpoint
      - `error_message` string — Error message if delivery failed
      - `duration_ms` number, nullable, required — Request duration in milliseconds
      - `created_at` string, date-time, required
    - `fees` object, required
      - `total` number, required — Total fees in decimal format
      - `currency` object, required
        - `code` string, required — ISO 4217 currency code
        - `symbol` string, required — Currency symbol
        - `name` string, required — Currency name
        - `minor_unit` number, required — Number of decimal places
      - `items` object[], required
        - `id` string, uuid, required
        - `amount` number, required — Fee amount in decimal format
        - `currency` object, required
          - `code` string, required — ISO 4217 currency code
          - `symbol` string, required — Currency symbol
          - `name` string, required — Currency name
          - `minor_unit` number, required — Number of decimal places
        - `fee_type` string, required
        - `rate_type` string, required
        - `rate_value` string, required
        - `rate_unit` string, required
        - `rate_base` string, required
        - `notes` string, nullable, required
        - `settlement_status` string, required
        - `invoice_id` string, uuid, nullable, required
        - `settled_at` string, date-time, nullable, required
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
    - `refunds` object[] — Refund transactions with full details including fees (only present for payment transactions with refunds)
      - `id` string, required
      - `transaction_number` string, required
      - `amount` number, required — Transaction amount in decimal format
      - `currency` object, required
        - `code` string, required — ISO 4217 currency code
        - `symbol` string, required — Currency symbol
        - `name` string, required — Currency name
        - `minor_unit` number, required — Number of decimal places
      - `transaction_type` 'payment' | 'refund' | 'reversal', required
      - `status` 'pending' | 'received' | 'fee_paid' | 'converted' | 'completed' | 'failed' | 'cancelled' | 'error' | 'unknown', required
      - `status_message` string, nullable, required
      - `cross_border` boolean, required
      - `deposit_country` string, required
      - `payout_country` string, required
      - `payout_currency` object, nullable, required
        - `code` string, required — ISO 4217 currency code
        - `symbol` string, required — Currency symbol
        - `name` string, required — Currency name
        - `minor_unit` number, required — Number of decimal places
      - `exchange_rate` number, nullable, required — FX rate applied for cross-border conversion
      - `converted_amount` number, nullable, required — Amount in payout currency after FX conversion
      - `payout_at` string, date-time, nullable, required — When the payout settled
      - `payout_batch_id` string, uuid, nullable, required — ID of the payout batch this transaction belongs to
      - `test` boolean, nullable, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `settled_at` string, date-time, nullable, required
      - `payment_request` object, nullable, required
        - `id` string, uuid, required
        - `order_id` string, required — Merchant order ID
        - `merchant` object, nullable, required
          - `id` string, uuid, required
          - `partner` object, nullable, required
            - `id` string, uuid, required
        - `customer` object, nullable, required
          - `id` string, uuid, required
          - `name` string, required
          - `email` string, required
        - `payment_token` string, required — Payment token
        - `authorization_agreement_record_id` string, uuid, nullable, required — AgreementRecord id documenting the customer acceptance that authorised this payment request (ACH click-wrap).
      - `destination_account` string, nullable, required
      - `destination_account_type` string, nullable, required
      - `remittance_information` string, nullable, required
      - `payment_scheme` string, nullable, required
      - `platform` 'shopify' | 'woocommerce' | 'embedded' | 'payment_link', nullable, required
      - `problems` object[]
        - `code` string, required — Error code identifying the problem
        - `message` string, required — Human-readable description of the problem
        - `label` string, required — Display label for the problem
        - `is_resolvable` boolean, required — Whether the problem can be resolved by providing additional data
      - `target_status` union
        - 'pending'
        - 'received'
        - 'fee_paid'
        - 'converted'
        - 'completed'
        - 'failed'
        - 'cancelled'
        - 'error'
        - 'unknown'
      - `refund_status` union, required — Current refund status for payment transactions
        - 'refunding'
        - 'refunding_stuck'
        - 'refunding_failed'
        - 'partially_refunded'
        - 'fully_refunded'
      - `can_refund` boolean, required — Whether a refund can be initiated for this transaction
      - `related_transaction` object, nullable, required
        - `id` string, uuid, required
        - `transaction_number` string, required
      - `provider_status_events` object[], required
        - `id` string, uuid, required
        - `source` 'webhook' | 'polling' | 'finalization' | 'admin', required
        - `provider_name` string, required
        - `provider_status` string, required
        - `processing_status` 'received' | 'processed' | 'ignored' | 'failed' | 'conflict' | 'stale', required
        - `provider_updated_at` string, date-time, nullable, required
        - `created_at` string, date-time, required
        - `observed_at` string, date-time, required
        - `signature_valid` boolean, required
        - `event_id` string
        - `event_type` string
        - `processing_error` string
        - `provider_request_id` string
      - `merchant_webhook_deliveries` object[], required
        - `id` string, uuid, required
        - `payment_provider_status_id` string, uuid, nullable, required — Optional ID of the PaymentProviderStatus event that triggered this delivery
        - `webhook_url` string, required — The URL the webhook was sent to
        - `platform` 'embedded' | 'shopify' | 'woocommerce', required — Platform type
        - `event_type` string, required — Event type sent
        - `status` 'delivered' | 'failed', required — Delivery status
        - `response_status_code` number, nullable, required — HTTP response status code from merchant endpoint
        - `error_message` string — Error message if delivery failed
        - `duration_ms` number, nullable, required — Request duration in milliseconds
        - `created_at` string, date-time, required
      - `fees` object, required
        - `total` number, required — Total fees in decimal format
        - `currency` object, required
          - `code` string, required — ISO 4217 currency code
          - `symbol` string, required — Currency symbol
          - `name` string, required — Currency name
          - `minor_unit` number, required — Number of decimal places
        - `items` object[], required
          - `id` string, uuid, required
          - `amount` number, required — Fee amount in decimal format
          - `currency` object, required
            - `code` string, required — ISO 4217 currency code
            - `symbol` string, required — Currency symbol
            - `name` string, required — Currency name
            - `minor_unit` number, required — Number of decimal places
          - `fee_type` string, required
          - `rate_type` string, required
          - `rate_value` string, required
          - `rate_unit` string, required
          - `rate_base` string, required
          - `notes` string, nullable, required
          - `settlement_status` string, required
          - `invoice_id` string, uuid, nullable, required
          - `settled_at` string, date-time, nullable, required
          - `created_at` string, date-time, required
          - `updated_at` string, date-time, required
    - `reversals` object[] — Reversal transactions with full details (only present for payment transactions with reversals)
      - `id` string, required
      - `transaction_number` string, required
      - `amount` number, required — Transaction amount in decimal format
      - `currency` object, required
        - `code` string, required — ISO 4217 currency code
        - `symbol` string, required — Currency symbol
        - `name` string, required — Currency name
        - `minor_unit` number, required — Number of decimal places
      - `transaction_type` 'payment' | 'refund' | 'reversal', required
      - `status` 'pending' | 'received' | 'fee_paid' | 'converted' | 'completed' | 'failed' | 'cancelled' | 'error' | 'unknown', required
      - `status_message` string, nullable, required
      - `cross_border` boolean, required
      - `deposit_country` string, required
      - `payout_country` string, required
      - `payout_currency` object, nullable, required
        - `code` string, required — ISO 4217 currency code
        - `symbol` string, required — Currency symbol
        - `name` string, required — Currency name
        - `minor_unit` number, required — Number of decimal places
      - `exchange_rate` number, nullable, required — FX rate applied for cross-border conversion
      - `converted_amount` number, nullable, required — Amount in payout currency after FX conversion
      - `payout_at` string, date-time, nullable, required — When the payout settled
      - `payout_batch_id` string, uuid, nullable, required — ID of the payout batch this transaction belongs to
      - `test` boolean, nullable, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `settled_at` string, date-time, nullable, required
      - `payment_request` object, nullable, required
        - `id` string, uuid, required
        - `order_id` string, required — Merchant order ID
        - `merchant` object, nullable, required
          - `id` string, uuid, required
          - `partner` object, nullable, required
            - `id` string, uuid, required
        - `customer` object, nullable, required
          - `id` string, uuid, required
          - `name` string, required
          - `email` string, required
        - `payment_token` string, required — Payment token
        - `authorization_agreement_record_id` string, uuid, nullable, required — AgreementRecord id documenting the customer acceptance that authorised this payment request (ACH click-wrap).
      - `destination_account` string, nullable, required
      - `destination_account_type` string, nullable, required
      - `remittance_information` string, nullable, required
      - `payment_scheme` string, nullable, required
      - `platform` 'shopify' | 'woocommerce' | 'embedded' | 'payment_link', nullable, required
      - `problems` object[]
        - `code` string, required — Error code identifying the problem
        - `message` string, required — Human-readable description of the problem
        - `label` string, required — Display label for the problem
        - `is_resolvable` boolean, required — Whether the problem can be resolved by providing additional data
      - `target_status` union
        - 'pending'
        - 'received'
        - 'fee_paid'
        - 'converted'
        - 'completed'
        - 'failed'
        - 'cancelled'
        - 'error'
        - 'unknown'
      - `refund_status` union, required — Current refund status for payment transactions
        - 'refunding'
        - 'refunding_stuck'
        - 'refunding_failed'
        - 'partially_refunded'
        - 'fully_refunded'
      - `can_refund` boolean, required — Whether a refund can be initiated for this transaction
      - `related_transaction` object, nullable, required
        - `id` string, uuid, required
        - `transaction_number` string, required
      - `provider_status_events` object[], required
        - `id` string, uuid, required
        - `source` 'webhook' | 'polling' | 'finalization' | 'admin', required
        - `provider_name` string, required
        - `provider_status` string, required
        - `processing_status` 'received' | 'processed' | 'ignored' | 'failed' | 'conflict' | 'stale', required
        - `provider_updated_at` string, date-time, nullable, required
        - `created_at` string, date-time, required
        - `observed_at` string, date-time, required
        - `signature_valid` boolean, required
        - `event_id` string
        - `event_type` string
        - `processing_error` string
        - `provider_request_id` string
      - `merchant_webhook_deliveries` object[], required
        - `id` string, uuid, required
        - `payment_provider_status_id` string, uuid, nullable, required — Optional ID of the PaymentProviderStatus event that triggered this delivery
        - `webhook_url` string, required — The URL the webhook was sent to
        - `platform` 'embedded' | 'shopify' | 'woocommerce', required — Platform type
        - `event_type` string, required — Event type sent
        - `status` 'delivered' | 'failed', required — Delivery status
        - `response_status_code` number, nullable, required — HTTP response status code from merchant endpoint
        - `error_message` string — Error message if delivery failed
        - `duration_ms` number, nullable, required — Request duration in milliseconds
        - `created_at` string, date-time, required
      - `fees` object, required
        - `total` number, required — Total fees in decimal format
        - `currency` object, required
          - `code` string, required — ISO 4217 currency code
          - `symbol` string, required — Currency symbol
          - `name` string, required — Currency name
          - `minor_unit` number, required — Number of decimal places
        - `items` object[], required
          - `id` string, uuid, required
          - `amount` number, required — Fee amount in decimal format
          - `currency` object, required
            - `code` string, required — ISO 4217 currency code
            - `symbol` string, required — Currency symbol
            - `name` string, required — Currency name
            - `minor_unit` number, required — Number of decimal places
          - `fee_type` string, required
          - `rate_type` string, required
          - `rate_value` string, required
          - `rate_unit` string, required
          - `rate_base` string, required
          - `notes` string, nullable, required
          - `settlement_status` string, required
          - `invoice_id` string, uuid, nullable, required
          - `settled_at` string, date-time, nullable, required
          - `created_at` string, date-time, required
          - `updated_at` string, date-time, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found

---

[API](https://skmtc.net/banqzinc/apis/quidkey-api.md) · [All operations](https://skmtc.net/banqzinc/apis/quidkey-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/banqzinc/quidkey-api/revisions/f86d2bdbcb08/schema)
