Appearance
Bank Details
Submit and manage payment account information with country-specific field requirements.
Route
/candidate-details/bank-details
Availability
This tab is only enabled when the useBankDetails tenant setting is active and the worker has at least one signed engagement. The tab renders at activeTab={2} within CandidateDetailsTabs.
Blueprint selection
The form fields shown depend on the worker's contract type and country:
- Contractors use a universal bank template (
contractors-bank) where all country-specific fields are optional - Employees use a country-specific bank blueprint fetched by the bank country (defaulting to the existing bank details country or the candidate's country of residence)
- Changing the bank country reloads the blueprint and resets the form fields (except for contractors using the universal template)
The contract type is determined by fetching the last shared EOR instance for the user via getLastSharedCandidateEorByUserId.
Form fields
Always visible
- Account name (required; 1-256 chars; alphanumeric pattern
REGEX_ACCOUNT_NAME) - Bank country (required; country dropdown; 2-56 chars)
- Bank name (required; 1-256 chars)
- Bank branch address (optional; 1-256 chars)
- City/region (optional; 1-100 chars)
- Post/zip code (optional; 1-20 chars)
- Account number (required; 1-34 chars)
- Additional comments (optional; 1-1000 chars; textarea, max 1000 characters)
- File attachment (required; image or PDF upload via drop zone)
Country-specific fields
These fields appear when the bank blueprint includes them or when the user already has a value stored. For employees they are mandatory when present; for contractors on the universal template they are always optional.
- SWIFT (8-11 chars; pattern
REGEX_SWIFT) - IBAN (1-34 chars; pattern
REGEX_IBAN) - Sort code (8 chars; pattern
REGEX_SORT_CODE) - BSB (7 chars; pattern
REGEX_BSB) - IFSC (11 chars; pattern
REGEX_IFSC) - Bank institution code (3 chars; pattern
REGEX_INSTITUTION_CODE) - Transit number (5 chars; pattern
REGEX_TRANSIT_NUMBER) - Branch code (3-5 chars; pattern
REGEX_BRANCH_CODE) - CLABE code (18 chars; pattern
REGEX_CLABE) - Routing number ABA (9 chars; pattern
REGEX_ROUTING_NUMBER_ABA) - Intermediary bank (1-256 chars)
File attachment
- A supporting document (bank statement, void cheque, etc.) is required for submission
- Accepted file types: images (
image/*) and PDF (.pdf) - HEIC files are converted to JPEG automatically
- Uploading a new file generates a UUID-based file ID (
.jpegor.pdfextension based on content type) - Existing attachments can be previewed (opens
FilePreviewPopUp) or deleted in edit mode - If any bank details field changes during editing, a new file must be attached
Submission flow
- User clicks the edit (pencil) icon to enter edit mode
- Form fields become editable; validation errors display inline
- The save button is disabled until all mandatory fields are valid and a file is attached
- On save, the file is uploaded (if changed) via
uploadDocument, thensubmitUserBankDetailssends the command - Polling via
pollingGetConditionwaits until thesubmittedAttimestamp updates to confirm backend processing - A spinner is shown during the polling phase
- On success the form reloads with the updated bank details; on failure an error notification is shown
Edit and cancel
- Cancel reverts the form to the last saved state by re-fetching all data from the API (profile, bank details, and blueprint)
- The edit icon is disabled while already in edit mode
- The form content area is scrollable (60vh height) for long country-specific field lists
Validation behavior
For contractors using the universal template, any field with a validation error blocks submission. For employees, only mandatory fields (those present in the blueprint or with existing values) block submission. Validation errors are shown inline only while in edit mode.
Status states
Bank details carry a status: Submitted, approved (has approvedAt), or rejected (has rejectedAt). The status affects display but does not prevent re-submission.