openapi: 3.1.0 info: title: Endpoints subpackage_payouts API version: 1.0.0 servers: - url: https://api.letsdeel.com/rest/v2 - url: https://api-staging.letsdeel.com/rest/v2 tags: - name: subpackage_payouts paths: /payouts/employees/methods: post: operationId: add-edit-bank-details summary: Add/Edit Bank Details description: "Add/Edit Bank Details\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Add Bank Details / Edit Bank Details content: application/json: schema: $ref: '#/components/schemas/Payouts_addEditBankDetails_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PayoutsEmployeesMethodsPostRequestBodyContentApplicationJsonSchemaData' description: Request data get: operationId: get-bank-details summary: Get Bank Details description: "Get Bank Details\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Get Bank Details content: application/json: schema: $ref: '#/components/schemas/Payouts_getBankDetails_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /payouts/auto-withdrawal-setting: patch: operationId: change-the-auto-withdrawal-setting-v-2026-01-01 summary: Change the auto-withdrawal setting description: "Turn auto-withdrawal on or off and choose a method to withdraw to\n **Token scopes**: `worker:write`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Successfully update auto-withdrawal settings content: application/json: schema: $ref: '#/components/schemas/Payouts_changeTheAutoWithdrawalSetting-v2026-01-01_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: description: Change the auto withdrawal setting content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PayoutsAutoWithdrawalSettingPatchRequestBodyContentApplicationJsonSchemaData' get: operationId: get-the-auto-withdrawal-setting summary: Get the auto-withdrawal setting description: "Get whether auto-withdrawal is turned on and which method is selected to withdraw to\n **Token scopes**: `worker:read`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Auto-withdrawal setting result content: application/json: schema: $ref: '#/components/schemas/Payouts_getTheAutoWithdrawalSetting_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /payouts/contractors/methods: post: operationId: create-bank-transfer-method summary: Create a bank transfer method description: "Creates a bank transfer method with dynamic payload properties based on the selected option.\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '201': description: Bank transfer method created successfully. content: application/json: schema: $ref: '#/components/schemas/Payouts_createBankTransferMethod_Response_201' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PayoutsContractorsMethodsPostRequestBodyContentApplicationJsonSchemaData' required: - data get: operationId: get-payout-methods summary: Fetch all payout methods description: "Retrieves all payout methods associated with the current user or account. Supports filtering by default method status.\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: is_default in: query description: Filter by whether the method is default. If true, only default methods will be returned. required: false schema: type: boolean - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: List of payout methods retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/Payouts_getPayoutMethods_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /payouts/employees/methods/{id}: delete: operationId: delete-bank-details summary: Delete Bank Details description: "Delete Bank Details\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: id in: path description: method ID required: true schema: type: string - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Delete Bank Details content: application/json: schema: $ref: '#/components/schemas/Payouts_deleteBankDetails_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /payouts/employees/methods/bank_transfers/requirements: post: operationId: dynamic-requirements summary: Dynamic Requirements description: "Dynamic Requirements\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Dynamic Requirements content: application/json: schema: $ref: '#/components/schemas/Payouts_dynamicRequirements_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PayoutsEmployeesMethodsBankTransfersRequirementsPostRequestBodyContentApplicationJsonSchemaData' description: Request data /payouts/contractors/methods/bank_transfers/requirements: get: operationId: get-bank-transfer-requirements summary: Get bank transfer requirements description: "Retrieve requireements for bank transfer method creation\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: country in: query description: Country code required: true schema: type: string - name: currency in: query description: Currency code required: true schema: type: string - name: amount in: query description: Amount for calculating fees, if not provided, the default amount of 100.00 is used required: false schema: type: number format: double - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Successful operation. content: application/json: schema: $ref: '#/components/schemas/Payouts_getBankTransferRequirements_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /payouts/contractors/methods/bank_transfers/supported_routes: get: operationId: get-bank-transfer-supported-routes summary: Get bank transfer supported routes for contractor description: "Get all bank transfer supported routes for specific contractor.\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Successful operation. content: application/json: schema: $ref: '#/components/schemas/Payouts_getBankTransferSupportedRoutes_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /payouts/balances: get: operationId: list-contractor-balances summary: List Contractor Balances description: "Retrieves the total available balances for the authenticated contractor, broken down by currency and in total.\n **Token scopes**: `worker:read`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Successful operation. Returns the contractor's balances. content: application/json: schema: $ref: '#/components/schemas/Payouts_listContractorBalances_Response_200' '400': description: Operation failed. content: application/json: schema: type: array items: $ref: '#/components/schemas/PayoutsBalancesGetResponsesContentApplicationJsonSchemaItems' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /payouts/withdrawals: post: operationId: request-to-withdraw-funds summary: Request to withdraw funds description: "Request to withdraw some or all of the available funds to a method\n **Token scopes**: `worker:write`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '201': description: Withdrawal successfully initiated content: application/json: schema: $ref: '#/components/schemas/Payouts_requestToWithdrawFunds_Response_201' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/RequestToWithdrawFundsRequestInternalServerError' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PayoutsWithdrawalsPostRequestBodyContentApplicationJsonSchemaData' required: - data /payouts/contractors/methods/{id}: put: operationId: update-bank-transfer-method summary: Update a bank transfer method description: "Updates a bank transfer method\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: id in: path description: Method unique identifier required: true schema: type: string - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Bank transfer method created successfully. content: application/json: schema: $ref: '#/components/schemas/Payouts_updateBankTransferMethod_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PayoutsContractorsMethodsIdPutRequestBodyContentApplicationJsonSchemaData' required: - data /payouts/contractors/settings/auto_withdraw: post: operationId: update-auto-withdraw-setting summary: Update auto withdraw setting for contractor description: "Updates auto withdraw setting for contractor\n **Token scopes**: `worker:read`, `worker:write`" tags: - subpackage_payouts parameters: - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Auto withdraw setting updated successfully content: application/json: schema: $ref: '#/components/schemas/Payouts_updateAutoWithdrawSetting_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PayoutsContractorsSettingsAutoWithdrawPostRequestBodyContentApplicationJsonSchemaData' required: - data components: schemas: PayoutsContractorsMethodsPostRequestBodyContentApplicationJsonSchemaDataPaymentMethod: type: string enum: - bank_transfer description: Specifies the type of payment method title: PayoutsContractorsMethodsPostRequestBodyContentApplicationJsonSchemaDataPaymentMethod PayoutsContractorsMethodsGetResponsesContentApplicationJsonSchemaData: type: object properties: address: $ref: '#/components/schemas/PayoutsContractorsMethodsGetResponsesContentApplicationJsonSchemaDataAddress' payload: type: object additionalProperties: description: Any type description: Dynamic properties based on selected option. For example, if `selectedOption` is `swift_code`, payload may include `swiftCode`, `accountHolderName`, and `accountNumber`. is_default: type: boolean description: Specifies if the method is the default payout method - if true, autowithdrawal will be enabled for the contractor using this method method_name: type: string description: Name for method payment_method: $ref: '#/components/schemas/PayoutsContractorsMethodsGetResponsesContentApplicationJsonSchemaDataPaymentMethod' selectedOption: type: string description: Specifies the type of bank transfer method. Maps from requirements type field required: - address - payload - payment_method title: PayoutsContractorsMethodsGetResponsesContentApplicationJsonSchemaData PayoutsContractorsMethodsIdPutResponsesContentApplicationJsonSchemaDataStatus: type: string enum: - pending - verifying - failed - approved description: Status of the method. Can be `pending`, `verifying`, `failed`, or `approved` title: PayoutsContractorsMethodsIdPutResponsesContentApplicationJsonSchemaDataStatus PayoutsWithdrawalsPostResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string format: uuid description: ID of the created transaction amount: type: number format: double description: Amount of the transaction currency: type: string description: Currency of the transaction created_at: type: string format: date-time description: Timestamp of the transaction creation updated_at: type: string format: date-time description: Timestamp of the transaction update title: PayoutsWithdrawalsPostResponsesContentApplicationJsonSchemaData PayoutsEmployeesMethodsPostRequestBodyContentApplicationJsonSchemaDataPayload: type: object properties: city: type: string description: Name of the city iban: type: string description: International Bank Account Number postal: type: string description: Postal code bank_name: type: string description: Name of the bank full_name: type: string description: Full name of the account holder swift_bic: type: string description: SWIFT/BIC code country_code: type: string description: Country code address_line1: type: string description: Address line 1 original_name: type: string description: Original name of the account holder province_state: type: string description: Province or state bank_country_code: type: string description: Country code of the bank description: Payload containing bank details title: PayoutsEmployeesMethodsPostRequestBodyContentApplicationJsonSchemaDataPayload PayoutsContractorsSettingsAutoWithdrawPostRequestBodyContentApplicationJsonSchemaData: type: object properties: is_auto_withdraw_enabled: type: boolean description: Sets auto withdraw to enabled or disabled for contractor required: - is_auto_withdraw_enabled title: PayoutsContractorsSettingsAutoWithdrawPostRequestBodyContentApplicationJsonSchemaData PayoutsAutoWithdrawalSettingPatchResponsesContentApplicationJsonSchemaData: type: object properties: method_id: type: string format: uuid description: The ID of the withdrawal method to be used for auto withdrawal is_auto_withdraw_enabled: type: boolean description: Whether auto withdrawal is enabled title: PayoutsAutoWithdrawalSettingPatchResponsesContentApplicationJsonSchemaData Payouts_deleteBankDetails_Response_200: type: object properties: {} description: Empty response body title: Payouts_deleteBankDetails_Response_200 Payouts_updateAutoWithdrawSetting_Response_200: type: object properties: {} description: Empty response body title: Payouts_updateAutoWithdrawSetting_Response_200 PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsIntermediaryItems: type: object properties: name: type: string description: User facing name of the intermediary object group: type: array items: $ref: '#/components/schemas/PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsIntermediaryItemsGroupItems' required: - name - group title: PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsIntermediaryItems PayoutsEmployeesMethodsPostRequestBodyContentApplicationJsonSchemaData: type: object properties: id: type: string description: Unique identifier for the bank details payload: $ref: '#/components/schemas/PayoutsEmployeesMethodsPostRequestBodyContentApplicationJsonSchemaDataPayload' description: Payload containing bank details description: Request data title: PayoutsEmployeesMethodsPostRequestBodyContentApplicationJsonSchemaData PayoutsContractorsMethodsIdPutRequestBodyContentApplicationJsonSchemaData: type: object properties: address: $ref: '#/components/schemas/PayoutsContractorsMethodsIdPutRequestBodyContentApplicationJsonSchemaDataAddress' payload: type: object additionalProperties: description: Any type description: Dynamic properties based on selected option. For example, if `selectedOption` is `swift_code`, payload may include `swiftCode`, `accountHolderName`, and `accountNumber`. is_default: type: boolean description: Specifies if the method is the default payout method - if true, autowithdrawal will be enabled for the contractor using this method method_name: type: string description: Name for method payment_method: $ref: '#/components/schemas/PayoutsContractorsMethodsIdPutRequestBodyContentApplicationJsonSchemaDataPaymentMethod' description: Specifies the type of payment method selectedOption: type: string description: Specifies the type of bank transfer method. Maps from requirements type field required: - address - payload - payment_method title: PayoutsContractorsMethodsIdPutRequestBodyContentApplicationJsonSchemaData Payouts_listContractorBalances_Response_200: type: object properties: data: $ref: '#/components/schemas/PayoutsBalancesGetResponsesContentApplicationJsonSchemaData' title: Payouts_listContractorBalances_Response_200 Payouts_requestToWithdrawFunds_Response_201: type: object properties: data: $ref: '#/components/schemas/PayoutsWithdrawalsPostResponsesContentApplicationJsonSchemaData' title: Payouts_requestToWithdrawFunds_Response_201 PayoutsEmployeesMethodsPostResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string description: Unique identifier for the bank details data: $ref: '#/components/schemas/PayoutsEmployeesMethodsPostResponsesContentApplicationJsonSchemaDataData' status: type: string description: Status of the bank details version: type: string description: Version identifier created_at: type: string description: Creation timestamp updated_at: type: string description: Last update timestamp is_active_version: type: boolean description: Indicates if this is the active version funds_distribution: type: number format: double description: Funds distribution percentage title: PayoutsEmployeesMethodsPostResponsesContentApplicationJsonSchemaData PayoutsContractorsMethodsPostResponsesContentApplicationJsonSchemaDataStatus: type: string enum: - pending - verifying - failed - approved description: Status of the bank transfer method title: PayoutsContractorsMethodsPostResponsesContentApplicationJsonSchemaDataStatus PayoutsEmployeesMethodsGetResponsesContentApplicationJsonSchemaDataItems: type: object properties: id: type: string description: Unique identifier for the bank details data: $ref: '#/components/schemas/PayoutsEmployeesMethodsGetResponsesContentApplicationJsonSchemaDataItemsData' status: type: string description: Status of the bank details version: type: string description: Version identifier created_at: type: string description: Creation timestamp updated_at: type: string description: Last update timestamp is_active_version: type: boolean description: Indicates if this is the active version funds_distribution: type: number format: double description: Funds distribution percentage title: PayoutsEmployeesMethodsGetResponsesContentApplicationJsonSchemaDataItems PayoutsBalancesGetResponsesContentApplicationJsonSchemaItems: type: object properties: message: type: string description: error message title: PayoutsBalancesGetResponsesContentApplicationJsonSchemaItems PayoutsContractorsMethodsIdPutResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string description: Unique identifier for the bank transfer method status: $ref: '#/components/schemas/PayoutsContractorsMethodsIdPutResponsesContentApplicationJsonSchemaDataStatus' description: Status of the method. Can be `pending`, `verifying`, `failed`, or `approved` title: PayoutsContractorsMethodsIdPutResponsesContentApplicationJsonSchemaData Payouts_createBankTransferMethod_Response_201: type: object properties: data: $ref: '#/components/schemas/PayoutsContractorsMethodsPostResponsesContentApplicationJsonSchemaData' required: - data title: Payouts_createBankTransferMethod_Response_201 PayoutsWithdrawalsPostResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: message: type: string description: Error message title: PayoutsWithdrawalsPostResponsesContentApplicationJsonSchemaErrorsItems PayoutsBalancesGetResponsesContentApplicationJsonSchemaDataBalancesTotal: type: object properties: amount: type: string description: total amount of all currencies in the contractor balance currency: type: string description: currency of the total amount title: PayoutsBalancesGetResponsesContentApplicationJsonSchemaDataBalancesTotal PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItems: type: object properties: type: type: string description: Type of bank transfer, such as local, swift, iban. Maps to selected_option in method creation data. title: type: string description: Title of the bank transfer method fields: type: array items: $ref: '#/components/schemas/PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItems' description: Each field key is input field for the bank transfer method creation payload. total_fee: type: string description: Fee preview for amount provided in query parameter intermediary: type: array items: $ref: '#/components/schemas/PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsIntermediaryItems' description: Each field is input for the bank transfer method creation payload intermediary object required: - type - title - fields - total_fee title: PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItems ? PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItemsCategoriesItemsAlert : type: object properties: type: type: string description: Alert type title: type: string description: Alert title message: type: string description: Alert message description: Alert information title: PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItemsCategoriesItemsAlert PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItems: type: object properties: name: type: string description: Step name banner: oneOf: - description: Any type - type: 'null' description: Banner information header: type: string description: Step header categories: type: array items: $ref: '#/components/schemas/PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItemsCategoriesItems' description: Categories of the steps right_side_placeholder: type: string description: Right side placeholder title: PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItems ? PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsIntermediaryItemsGroupItemsValuesAllowedItems : type: object properties: key: type: string description: The country code (e.g., AL for Albania). name: type: string description: The full name of the country (e.g., Albania). required: - key - name title: PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsIntermediaryItemsGroupItemsValuesAllowedItems PayoutsContractorsMethodsIdPutRequestBodyContentApplicationJsonSchemaDataAddress: type: object properties: city: type: string description: City name state: type: string description: State code country: type: string description: Country code post_code: type: string description: Post code first_line: type: string description: First line of the address required: - city - country - post_code - first_line title: PayoutsContractorsMethodsIdPutRequestBodyContentApplicationJsonSchemaDataAddress PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItemsCategoriesItems: type: object properties: name: type: string description: Category name alert: $ref: '#/components/schemas/PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItemsCategoriesItemsAlert' description: Alert information banner: oneOf: - description: Any type - type: 'null' description: Banner information fields: type: array items: $ref: '#/components/schemas/PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItemsCategoriesItemsFieldsItems' description: Fields in the category header: type: string description: Category header priority: type: number format: double description: Category priority title: PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItemsCategoriesItems ? PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItemsGroupItemsValuesAllowedItems : type: object properties: key: type: string description: The country code (e.g., AL for Albania). name: type: string description: The full name of the country (e.g., Albania). required: - key - name title: PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItemsGroupItemsValuesAllowedItems ? PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItemsCategoriesItemsFieldsItems : type: object properties: id: type: number format: double description: Field ID key: type: string description: Field key name: type: string description: Field name type: type: string description: Field type example: oneOf: - description: Any type - type: 'null' description: Example value tooltip: oneOf: - description: Any type - type: 'null' description: Tooltip information category: type: string description: Field category disabled: type: boolean description: Indicates if the field is disabled required: type: boolean description: Indicates if the field is required sensitive: type: boolean description: Indicates if the field is sensitive max_length: type: string description: Maximum length of the field min_length: type: string description: Minimum length of the field values_allowed: oneOf: - description: Any type - type: 'null' description: Allowed values for the field validation_regexp: oneOf: - description: Any type - type: 'null' description: Validation regex pattern validation_regex_flags: oneOf: - description: Any type - type: 'null' description: Validation regex flags title: PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItemsCategoriesItemsFieldsItems PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItemsGroupItems: type: object properties: key: type: string description: The key of the field in the method creaion payload name: type: string description: User facing name of property type: $ref: '#/components/schemas/PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItemsGroupItemsType' description: The type of the field, such as text, radio, select, or date_local. example: type: string description: Example value for the field required: type: boolean description: Whether the field is required max_length: type: integer description: The maximum length of the field values_allowed: type: array items: $ref: '#/components/schemas/PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItemsGroupItemsValuesAllowedItems' description: An array of allowed values with corresponding key and name. validation_regexp: type: string description: The regular expression to validate the field refresh_requirements_on_change: type: boolean description: Whether to refresh the requirements when the field value changes with field key as query parameter required: - key - name - type - required title: PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItemsGroupItems PayoutsEmployeesMethodsBankTransfersRequirementsPostRequestBodyContentApplicationJsonSchemaData: type: object properties: current_state: $ref: '#/components/schemas/PayoutsEmployeesMethodsBankTransfersRequirementsPostRequestBodyContentApplicationJsonSchemaDataCurrentState' description: Current state of the bank details description: Request data title: PayoutsEmployeesMethodsBankTransfersRequirementsPostRequestBodyContentApplicationJsonSchemaData Payouts_updateBankTransferMethod_Response_200: type: object properties: data: $ref: '#/components/schemas/PayoutsContractorsMethodsIdPutResponsesContentApplicationJsonSchemaData' required: - data title: Payouts_updateBankTransferMethod_Response_200 PayoutsContractorsMethodsIdPutRequestBodyContentApplicationJsonSchemaDataPaymentMethod: type: string enum: - bank_transfer description: Specifies the type of payment method title: PayoutsContractorsMethodsIdPutRequestBodyContentApplicationJsonSchemaDataPaymentMethod Payouts_dynamicRequirements_Response_200: type: object properties: data: $ref: '#/components/schemas/PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaData' description: Response data title: Payouts_dynamicRequirements_Response_200 PayoutsEmployeesMethodsPostResponsesContentApplicationJsonSchemaDataData: type: object properties: city: type: string description: Name of the city iban: type: string description: International Bank Account Number postal: type: string description: Postal code bank_name: type: string description: Name of the bank full_name: type: string description: Full name of the account holder swift_bic: type: string description: SWIFT/BIC code country_code: type: string description: Country code address_line1: type: string description: Address line 1 original_name: type: string description: Original name of the account holder province_state: type: string description: Province or state bank_country_code: type: string description: Country code of the bank title: PayoutsEmployeesMethodsPostResponsesContentApplicationJsonSchemaDataData ApiError: type: object properties: message: type: string description: A description of the returned error path: type: string description: The JSON path where input validation failed title: ApiError PayoutsAutoWithdrawalSettingGetResponsesContentApplicationJsonSchemaData: type: object properties: method_id: type: string format: uuid description: The ID of the withdrawal method to be used for auto withdrawal is_auto_withdraw_enabled: type: boolean description: Whether auto withdrawal is enabled title: PayoutsAutoWithdrawalSettingGetResponsesContentApplicationJsonSchemaData PayoutsBalancesGetResponsesContentApplicationJsonSchemaDataBalancesItems: type: object properties: amount: type: string description: amount of that currency in the contractor balance currency: type: string description: currency of that amount title: PayoutsBalancesGetResponsesContentApplicationJsonSchemaDataBalancesItems PayoutsContractorsMethodsPostRequestBodyContentApplicationJsonSchemaDataAddress: type: object properties: city: type: string description: City name state: type: string description: State code country: type: string description: Country code post_code: type: string description: Post code first_line: type: string description: First line of the address required: - city - country - post_code - first_line title: PayoutsContractorsMethodsPostRequestBodyContentApplicationJsonSchemaDataAddress Payouts_getBankDetails_Response_200: type: object properties: data: type: array items: $ref: '#/components/schemas/PayoutsEmployeesMethodsGetResponsesContentApplicationJsonSchemaDataItems' title: Payouts_getBankDetails_Response_200 Payouts_changeTheAutoWithdrawalSetting-v2026-01-01_Response_200: type: object properties: data: $ref: '#/components/schemas/PayoutsAutoWithdrawalSettingPatchResponsesContentApplicationJsonSchemaData' title: Payouts_changeTheAutoWithdrawalSetting-v2026-01-01_Response_200 PayoutsContractorsMethodsGetResponsesContentApplicationJsonSchemaDataAddress: type: object properties: city: type: string description: City name state: type: string description: State code country: type: string description: Country code post_code: type: string description: Post code first_line: type: string description: First line of the address required: - city - country - post_code - first_line title: PayoutsContractorsMethodsGetResponsesContentApplicationJsonSchemaDataAddress RequestToWithdrawFundsRequestInternalServerError: type: object properties: errors: type: array items: $ref: '#/components/schemas/PayoutsWithdrawalsPostResponsesContentApplicationJsonSchemaErrorsItems' title: RequestToWithdrawFundsRequestInternalServerError ApiErrorContainer: type: object properties: request: $ref: '#/components/schemas/ApiErrorRequest' errors: type: array items: $ref: '#/components/schemas/ApiError' title: ApiErrorContainer PayoutsBalancesGetResponsesContentApplicationJsonSchemaData: type: object properties: balances: type: array items: $ref: '#/components/schemas/PayoutsBalancesGetResponsesContentApplicationJsonSchemaDataBalancesItems' balances_total: $ref: '#/components/schemas/PayoutsBalancesGetResponsesContentApplicationJsonSchemaDataBalancesTotal' title: PayoutsBalancesGetResponsesContentApplicationJsonSchemaData PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItems: type: object properties: name: type: string group: type: array items: $ref: '#/components/schemas/PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItemsGroupItems' required: - name - group title: PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItems PayoutsEmployeesMethodsGetResponsesContentApplicationJsonSchemaDataItemsData: type: object properties: city: type: string description: Name of the city iban: type: string description: International Bank Account Number postal: type: string description: Postal code bank_name: type: string description: Name of the bank full_name: type: string description: Full name of the account holder swift_bic: type: string description: SWIFT/BIC code country_code: type: string description: Country code address_line1: type: string description: Address line 1 original_name: type: string description: Original name of the account holder province_state: type: string description: Province or state bank_country_code: type: string description: Country code of the bank title: PayoutsEmployeesMethodsGetResponsesContentApplicationJsonSchemaDataItemsData PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaData: type: object properties: steps: type: array items: $ref: '#/components/schemas/PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaDataStepsItems' description: Steps to fulfill the requirements is_final: type: boolean description: Indicates if the requirements are final requirements_id: type: number format: double description: ID of the requirements description: Response data title: PayoutsEmployeesMethodsBankTransfersRequirementsPostResponsesContentApplicationJsonSchemaData PayoutsContractorsMethodsPostRequestBodyContentApplicationJsonSchemaData: type: object properties: address: $ref: '#/components/schemas/PayoutsContractorsMethodsPostRequestBodyContentApplicationJsonSchemaDataAddress' payload: type: object additionalProperties: description: Any type description: Dynamic properties based on selected option. For example, if `selectedOption` is `swift_code`, payload may include `swiftCode`, `accountHolderName`, and `accountNumber`. is_default: type: boolean description: Specifies if the method is the default payout method - if true, autowithdrawal will be enabled for the contractor using this method method_name: type: string description: Name for method payment_method: $ref: '#/components/schemas/PayoutsContractorsMethodsPostRequestBodyContentApplicationJsonSchemaDataPaymentMethod' description: Specifies the type of payment method selectedOption: type: string description: Specifies the type of bank transfer method. Maps from requirements type field required: - address - payload - payment_method title: PayoutsContractorsMethodsPostRequestBodyContentApplicationJsonSchemaData Payouts_getBankTransferSupportedRoutes_Response_200: type: object properties: data: type: object additionalProperties: type: array items: type: string description: A mapping of country codes to arrays of supported currency codes required: - data title: Payouts_getBankTransferSupportedRoutes_Response_200 PayoutsAutoWithdrawalSettingPatchRequestBodyContentApplicationJsonSchemaData: type: object properties: method_id: type: string format: uuid description: The ID of the withdrawal method to be used for auto withdrawal is_auto_withdraw_enabled: type: boolean description: Whether auto withdrawal should be enabled title: PayoutsAutoWithdrawalSettingPatchRequestBodyContentApplicationJsonSchemaData PayoutsContractorsMethodsGetResponsesContentApplicationJsonSchemaDataPaymentMethod: type: string enum: - bank_transfer title: PayoutsContractorsMethodsGetResponsesContentApplicationJsonSchemaDataPaymentMethod PayoutsWithdrawalsPostRequestBodyContentApplicationJsonSchemaData: type: object properties: amount: type: number format: double description: Amount to withdraw (must be positive) currency: type: string description: Currency code for the withdrawal amount withdrawal_method_id: type: string format: uuid description: Id of the withdrawal method to use required: - amount - currency - withdrawal_method_id title: PayoutsWithdrawalsPostRequestBodyContentApplicationJsonSchemaData Payouts_getTheAutoWithdrawalSetting_Response_200: type: object properties: data: $ref: '#/components/schemas/PayoutsAutoWithdrawalSettingGetResponsesContentApplicationJsonSchemaData' title: Payouts_getTheAutoWithdrawalSetting_Response_200 PayoutsEmployeesMethodsBankTransfersRequirementsPostRequestBodyContentApplicationJsonSchemaDataCurrentState: type: object properties: payment_type: type: string description: Type of payment currency_code: type: string description: Currency code bank_country_code: type: string description: Country code of the bank description: Current state of the bank details title: PayoutsEmployeesMethodsBankTransfersRequirementsPostRequestBodyContentApplicationJsonSchemaDataCurrentState ? PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItemsGroupItemsType : type: string enum: - text - radio - select - date_local description: The type of the field, such as text, radio, select, or date_local. title: PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsFieldsItemsGroupItemsType PayoutsContractorsMethodsPostResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string description: Unique identifier for the bank transfer method status: $ref: '#/components/schemas/PayoutsContractorsMethodsPostResponsesContentApplicationJsonSchemaDataStatus' description: Status of the bank transfer method title: PayoutsContractorsMethodsPostResponsesContentApplicationJsonSchemaData Payouts_getPayoutMethods_Response_200: type: object properties: data: $ref: '#/components/schemas/PayoutsContractorsMethodsGetResponsesContentApplicationJsonSchemaData' required: - data title: Payouts_getPayoutMethods_Response_200 Payouts_getBankTransferRequirements_Response_200: type: object properties: data: type: array items: $ref: '#/components/schemas/PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItems' required: - data title: Payouts_getBankTransferRequirements_Response_200 ? PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsIntermediaryItemsGroupItems : type: object properties: key: type: string name: type: string description: User facing name of the intermediary object type: type: string example: type: string description: Example value for the field required: type: boolean description: Whether the field is required max_length: type: integer description: The maximum length of the field min_length: type: integer description: The minimum length of the field values_allowed: type: array items: $ref: '#/components/schemas/PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsIntermediaryItemsGroupItemsValuesAllowedItems' description: An array of allowed values with corresponding key and name. validation_regexp: type: string description: The regular expression to validate the field required: - key - name - type - required title: PayoutsContractorsMethodsBankTransfersRequirementsGetResponsesContentApplicationJsonSchemaDataItemsIntermediaryItemsGroupItems ApiErrorRequest: type: object properties: method: type: string description: The HTTP method of the failed request url: type: string description: The relative URL of the failed request status: type: number format: double description: The status code of the response api_req_id: type: string description: The request ID of the failed request docs: type: string description: A link to the official documentation for the requested endpoint resource source: type: string description: The source handler which produced the returned error code: type: number format: double description: The code of the source handler which produced the returned error title: ApiErrorRequest Payouts_addEditBankDetails_Response_200: type: object properties: data: $ref: '#/components/schemas/PayoutsEmployeesMethodsPostResponsesContentApplicationJsonSchemaData' title: Payouts_addEditBankDetails_Response_200 securitySchemes: deelToken: type: http scheme: bearer description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" oauth2: type: http scheme: bearer description: Standard OAuth2 security scheme based on https://swagger.io/docs/specification/authentication/