---
title: "Update enabled payment methods and bank-transfer details"
method: POST
path: "/companies/{companyId}/receivables/payment-settings"
tags: ["Receivables"]
---

# Update enabled payment methods and bank-transfer details

`POST /companies/{companyId}/receivables/payment-settings`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/receivables/payment-settings`
- Auth: HTTP bearer

Wave 3b (#1153/#1154) + AR charge rail. DARK — 404s unless ar_ap_items_enabled. Member role required. Merge-patch: send only the fields being changed; a provided null clears a clearable field. Enabling card is refused with 422 STRIPE_CONNECT_NOT_CONNECTED unless a Stripe account is actually linked, and with 422 STRIPE_ACCOUNT_CANNOT_CHARGE when the linked account's charges_enabled capability is not active (both fail-closed). bankTransfer.detailsStatus is derived: "provided" when instructions are present, else "not_provided". bankAccount fields are stored clear (the public pay page serves them to the payer) but ALWAYS masked ****1234 on the returned view. Returns the updated ReceivablesPaymentSettingsView (see GET for the shape incl. feeMode + bankAccount).

## Request body

- object
  - `card` object
    - `enabled` boolean, required
  - `feeMode` 'absorb' | 'pass': Stored merchant preference for the card processing fee. Display/informational for now: the charge path FORCE-ABSORBS (the payer is charged the principal only) until pass-mode surcharge accounting ships.
  - `bankTransfer` object
    - `enabled` boolean
    - `instructions` string, nullable
  - `bankAccount` object: Structured receiving-account details, merged per-field onto the stored row (null clears a field). The public pay page requires accountHolderName + bankName + routingNumber + accountNumber before offering bank transfer.
    - `accountHolderName` string, nullable
    - `bankName` string, nullable
    - `routingNumber` string, nullable
    - `accountNumber` string, nullable
    - `accountType` 'checking' | 'savings' | 'null', nullable
    - `swiftBic` string, nullable
    - `wireInstructions` string, nullable

## Response `200`

Updated ReceivablesPaymentSettingsView (feeMode + masked bankAccount included)

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `404`: AR/AP items not enabled for this company
- `422`: STRIPE_CONNECT_NOT_CONNECTED (card enabled without a linked Stripe account), STRIPE_ACCOUNT_CANNOT_CHARGE (linked account cannot charge), or invalid body

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
