---
title: "Close an external account"
method: POST
path: "/v1/external-bank-accounts/{id}/close"
tags: ["External Bank Accounts"]
---

# Close an external account

`POST /v1/external-bank-accounts/{id}/close`

Closes an active external account. Accounts still in review cannot be closed. The account can no longer be used as a transfer or FX destination, and linked fixed routes are disabled. Creating an external account later with the same bank details or proxy alias reopens this account with the same ID. Disabled fixed routes are not re-enabled automatically.

## Path parameters

- `id` string, required

## Headers

- `X-API-Key` string

## Response `200`

External account closed successfully

- ExternalAccountResponseDto
  - `id` string, required — Account ID
  - `customerId` string, required — Customer ID
  - `counterpartyId` string, nullable — Counterparty ID when this is a third-party recipient account
  - `type` 'EXTERNAL_BANK' | 'EXTERNAL_PROXY', required — Account type
  - `status` 'IN_REVIEW' | 'ACTIVE' | 'CLOSED', required — Account status
  - `beneficiaryType` 'INDIVIDUAL' | 'BUSINESS', required — Beneficiary type
  - `beneficiaryName` string, required — Beneficiary name
  - `metadata` AccountMetadataDto
    - `nickname` string — Account nickname
    - `purpose` string — Account purpose
    - `tags` string[] — Account tags
  - `paymentRail` 'ACH' | 'ACH_SAME_DAY' | 'WIRE' | 'FEDWIRE' | 'FED_NOW' | 'RTP' | 'EREBOR' | 'EREBOR_RAIL' | 'BALANCE' | 'SWIFT' | 'SEPA' | 'SEPA_INSTANT' | 'TIPS' | 'FASTER_PAYMENTS' | 'BACS' | 'CHAPS' | 'ELIXIR' | 'NICS' | 'EFT' | 'INTERAC' | 'NPP' | 'BECS' | 'UPI' | 'IMPS' | 'IMPS_WITH_FIRC' | 'NEFT' | 'RTGS' | 'BI_FAST' | 'ARTAJASA' | 'PIX' | 'TED' | 'TEF' | 'SPEI' | 'COELSA' | 'SINPE' | 'CIPS' | 'CFXPS' | 'CHATS' | 'ZENGIN' | 'KFTC' | 'FAST_SG' | 'MEPS' | 'DUITNOW' | 'PROMPTPAY' | 'INSTAPAY' | 'PESONET' | 'NAPAS' | 'BEFTN' | 'SLIPS' | 'ZAHAV' | 'GHIPSS' | 'NIBSS' | 'PESALINK' | 'RTC_ZA' | 'TZS_RTGS' | 'EGP_ACH' | 'JOD_ACH' | 'NPSS' | 'MADA' | 'QPS' | 'DOP_ACH' | 'GTQ_ACH' | 'HNL_ACH' | 'PEN_ACH' | 'JMD_ACH' | 'USD_ACH_SV' | 'USD_ACH_EC' | 'CLP_TEF' | 'PSE' | 'COP_ACH' | 'BOB_RTGS' | 'PYG_ACH' | 'CERTIS' | 'DKK_TIPS' | 'SENT' | 'NKS' | 'BANKGIROT' | 'HKD_FPS' | 'IBFT' | 'TRY_FAST', required — Primary payment rail for this account
  - `paymentRails` string[] — All payment rails this account supports (bank accounts only)
  - `beneficiaryAddress` object, nullable — Beneficiary address (bank accounts only)
    - `addressLine1` string
    - `addressLine2` string
    - `city` string
    - `state` string
    - `postalCode` string
    - `country` string
  - `beneficiaryPhone` string, nullable — Beneficiary phone number
  - `beneficiaryDateOfBirth` string, date — Account holder's date of birth
  - `bankName` string, nullable — Bank name (bank accounts only)
  - `bankAddress` object, nullable — Bank address (bank accounts only)
    - `addressLine1` string
    - `addressLine2` string
    - `city` string
    - `state` string
    - `postalCode` string
    - `country` string
  - `swiftBic` string, nullable — SWIFT/BIC code (bank accounts only)
  - `iban` string, nullable — IBAN (bank accounts only)
  - `accountNumber` string, nullable — Bank account number (bank accounts only)
  - `routingNumber` string, nullable — Bank routing code (ABA routing number, sort code, BSB, IFSC, etc.)
  - `branchCode` string, nullable — Bank branch code (for countries like Japan, Brazil, South Africa that use separate branch identifiers)
  - `beneficiaryDocumentType` string — Type of the beneficiary's national/tax identification document (rail-specific codes, e.g. CC/NIT for Colombia, RUT for Chile)
  - `beneficiaryDocumentNumber` string — The beneficiary's national/tax identification document number
  - `beneficiaryStateProvince` string — The beneficiary's state/department/province (rails that require it on payouts, e.g. Peru ACH)
  - `correspondentBankName` string, nullable — Correspondent/intermediary bank name (SWIFT)
  - `correspondentBankSwiftCode` string, nullable — Correspondent/intermediary bank SWIFT/BIC code (SWIFT)
  - `correspondentAccountNumber` string, nullable — Correspondent/intermediary account number (SWIFT)
  - `bankAccountType` 'checking' | 'savings', nullable — Bank account type (bank accounts only)
  - `currencyCodes` string[], nullable — Supported currency codes
  - `aliasType` 'PHONE' | 'EMAIL' | 'NATIONAL_ID' | 'TAX_ID' | 'RANDOM' | 'CORPORATE_ID', nullable — Type of proxy alias (proxy accounts only)
  - `aliasValue` string, nullable — The proxy alias value (proxy accounts only)
  - `createdAt` string, date-time, required — Account creation date
  - `updatedAt` string, date-time, required — Account last update date
  - `created` boolean — Present on create responses. `true` = a new account was inserted. `false` = an existing account matched (bank: customer + the exact normalized identifier set supplied; proxy: customer + alias + rail) and was reused. For bank accounts, existing `paymentRails` are not updated by create — use PATCH to add rails; missing create-only fields may still be backfilled and conflicting values return 400. For proxy accounts, inspect `paymentRail` (proxies do not return `paymentRails`).

## Other responses

- `400` — The account is still in review or is not an external account
- `401` — Unauthorized - Invalid or missing authentication credentials

---

[API](https://skmtc.dev/infinite/apis/infinite-api.md) · [All operations](https://skmtc.dev/infinite/apis/infinite-api/llms.txt) · [OpenAPI document](https://skmtc.dev/infinite/apis/infinite-api/revisions/916d2367a8f8?raw)
