Skip to main content

Update a Bank Counterparty

Changes a US withdrawal destination. A field left out keeps its stored value, and sending "" does not clear one. reference, customer_id and coin cannot change. A body with no fields returns the counterparty unchanged.

The payment is checked only when the patch sends a payment field (instrument, wire_type, account_type, routing_number, account_number, swift or iban). The check is of the stored payment with those fields laid over it, under the same rules as a save. Changing the rail means sending every field the new rail needs that the stored one does not already have: an ACH turned into an international wire needs wire_type, swift, and an IBAN when it has no account number. A patch that only changes the name, the holder, the bank name or an address does not re-check the account, so a destination v2 saved with a routing number this API would refuse can still be renamed.

Changing the routing number, account number, SWIFT or IBAN of a destination the bank already knows drops that link, so the next withdrawal opens one for the new account. A destination whose status is needs_update becomes active, and status_reason is left out of the response, when the account it pays changes — including one the bank had not registered yet.

Sending address replaces the holder's address, and the object has to be complete. Sending any field of bank_address replaces the bank's address the same way. There is no idempotency header and no webhook.

An account-scoped key updates only its own account's counterparties; another account's reads as 404. A workspace-scoped key updates any US counterparty of the workspace.

Replaces PUT /api/v2/banking/counterparties/{id}.

Authorization:

Every request is signed with your API key: a short-lived JWT, signed with your private key, sent in one header on /v3/* and /api/v2/* alike.

Headers:
Authorization: APIKey {SIGNED_JWT}

How to build and sign the JWT: Authentication.

Endpoint

PATCH

/v3/banking/counterparties/{counterparty_id}

Path parameters​

ParameterTypeDescription
counterparty_idstring (bcp_…)Required. The counterparty.

Request Body Sample​

{
"name": "Northwind Holdings LLC"
}

Request Body Schema​

Every field is optional. The types and bounds are the ones on Save a Bank Counterparty.

FieldDescription
nameThe new name, 2 to 255 characters.
holder_typeindividual or business.
bank_nameThe bank, 2 to 255 characters.
instrument, wire_type, account_type, routing_number, account_number, swift, ibanLaid over the stored payment, then checked. See above.
addressReplaces the holder's address. Send the whole address.
bank_addressReplaces the bank's address. Send the whole address.

Response Sample​

{
"id": "bcp_01k8z5q7r9s1t3v5w7x9y1z3a5",
"customer_id": "cst_01h455vb4pex5vsknk084sn02q",
"reference": "vendor-42",
"coin": "USD",
"name": "Northwind Holdings LLC",
"holder_type": "business",
"bank_name": "Chase",
"instrument": "ach",
"account_type": "checking",
"routing_number": "021000021",
"account_number": "000123456789",
"status": "active",
"address": {
"line1": "1 Market Street",
"line2": "Suite 400",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US"
},
"created_at": "2026-10-23T12:00:00Z",
"updated_at": "2026-10-23T18:12:00Z"
}

Response Schema​

The counterparty, with the fields of a List Bank Counterparties row, without customer.

Errors​

StatusmessageWhen
400failed to parse requestThe body is not valid JSON, counterparty_id is not a bcp_… id, or a sent enum is not one of its values.
400invalid_holder_namename is shorter than 2 characters once spaces are collapsed.
400invalid_holder_typeholder_type is not individual or business.
400invalid_bank_namebank_name is shorter than 2 characters.
400invalid_addressAn address that was sent is incomplete or out of bounds.
400invalid_instrumentinstrument is not ach or wire.
400invalid_wire_typeThe payment, after the patch, is a wire without domestic or international.
400invalid_account_typeThe payment, after the patch, is an ACH without checking or savings.
400invalid_routing_numberThe payment, after the patch, fails the routing rule of its rail.
400invalid_account_numberThe payment, after the patch, fails the account-number rule of its rail.
400invalid_swiftAn international wire whose SWIFT is not 8 or 11 letters and digits.
400invalid_ibanAn IBAN that is not 15 to 34 letters and digits.
401unauthorizedMissing or invalid signature.
404bank_counterparty_not_foundNo such counterparty, it belongs to another account, it was deleted, or the id is not a US counterparty.
422Validation failedA sent text field or number is longer than allowed; details names it.

Coming from v2​

v2 (PUT /api/v2/banking/counterparties/{id})v3
PUTPATCH; a field left out keeps its stored value
id (uuid)counterparty_id (bcp_…)
the same camelCase body as createthe same snake_case body as create, every field optional

Support and Resources​

If you need assistance or have any questions, our support team is here to help. You can contact our support team at support@blockwyre.com.

Stay Updated​

Stay up-to-date with the latest news, updates, and features from BlockWyre by following us on social media:

We are excited to have you on board and look forward to seeing how you leverage BlockWyre's powerful tools to enhance your financial operations. Happy integrating!