{"openapi":"3.1.0","info":{"title":"Branch API","description":"Branch API","version":"2.0.5"},"servers":[{"url":"https://api.branchapp.com","description":"Production URL"},{"url":"https://sandbox.branchapp.com","description":"Sandbox URL"}],"security":[{"ApiKeyAuth":[]}],"paths":{"/v1/organizations/{orgId}/advances":{"get":{"tags":["Advances"],"summary":"Search Advances","description":"Search for advances by entering search criteria.","operationId":"search-advances","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employee_id","in":"query","required":false,"schema":{"type":"string","description":"The employee's ID","example":"123"}},{"name":"status","in":"query","description":"List of Advance statuses to include in search","required":false,"schema":{"type":"array","default":[],"example":["OUTSTANDING","DEDUCTION_REQUESTED"],"items":{"type":"string","default":"[]","enum":["ALL","PAID","OUTSTANDING","PAYBACK_IN_PROGRESS","PAYBACK_FAIL","PAYOUT_NEW","PAYOUT_TIMEOUT","PAYOUT_FAIL","PAYOUT_PENDING","PAYOUT_CANCEL","DEDUCTION_REQUESTED","DEDUCTION_COMPLETED","PAYBACK_DEFAULTED","DEDUCTION_DEFAULTED","NON_PAYMENT"],"example":"[\"OUTSTANDING\",\"DEDUCTION_REQUESTED\"]"}}},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaEmployeeAdvanceDto"}}}}}}},"/v1/organizations/{orgId}/employees/{employeeId}/card":{"get":{"tags":["Cards"],"summary":"Get Activated User Card","description":"Card returned will be either active or temporarily suspended. Permanently terminated cards are not returned.  \nIf the provided user does not have an active or suspended card, call will return 404 - Not Found.","operationId":"get-activated-user-card","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"Success - Returns a user's activated card.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardDto"},"example":{"state":"ACTIVE","card_type":"PHYSICAL","time_created":"2020-02-18T19:42:48Z"}}}},"404":{"description":"Not Found. No active or suspended card","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-10-04T23:08:23.954+00:00","status":404,"error":"Not Found","message":"Employee does not have an active card.","path":"/v1/organizations/123/employees/456/card"}}}}}}},"/v2/organizations/{orgId}/payouts/card/{payoutId}":{"get":{"tags":["V2 Card Payout Details"],"summary":"Get External Card Payout","description":"Returns external card payout details for a disbursement","operationId":"get-external-card-payout-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"payoutId","in":"path","description":"Payout ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2CardPayoutDto"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/disbursements":{"get":{"tags":["V2 Disbursements"],"summary":"Search Worker Disbursements","description":"Searches all disbursements sent to worker.","operationId":"search-worker-disbursements-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123},{"name":"status","in":"query","description":"The disbursement's status","required":false,"schema":{"type":"string","description":"The disbursement's status","enum":["PENDING","SCHEDULED","COMPLETED","FAILED","CANCELED","SKIPPED"],"example":"COMPLETED"},"example":"COMPLETED"},{"name":"type","in":"query","description":"The disbursement's type","required":false,"schema":{"type":"string","description":"The disbursement's type","enum":["TIP","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"TIP"},"example":"TIP"},{"name":"external_id","in":"query","required":false,"schema":{"type":"string","description":"The disbursement's external ID","example":"ABC123"}},{"name":"invoice_id","in":"query","required":false,"schema":{"type":"integer","format":"int64","description":"The disbursement's invoice ID","example":123}},{"name":"worker_id","in":"query","required":false,"schema":{"type":"string","description":"The disbursement's worker ID","example":"123"}},{"name":"time_last_attempted_start","in":"query","required":false,"schema":{"type":"string","format":"date-time","description":"The start of the timeframe to search for disbursement attempts","example":"2020-02-18T19:42:48Z"}},{"name":"time_last_attempted_end","in":"query","required":false,"schema":{"type":"string","format":"date-time","description":"The end of the timeframe to search for disbursement attempts","example":"2020-02-21T19:42:48Z"}},{"name":"worker_group","in":"query","required":false,"schema":{"type":"string","description":"The disbursement's worker group","example":"Store #1"}},{"name":"after","in":"query","description":"Cursor to retrieve `size` elements after. Use the value from `next_cursor` to get the next page. Formatted as a Base64-encoded JSON object containing the element ID.","required":false,"schema":{"type":"string","description":"Cursor to retrieve `size` elements after. Use the value from `next_cursor` to get the next page. Formatted as a Base64-encoded JSON object containing the element ID.","example":"eyJ1IjoiMjg2MiJ9"},"example":"eyJ1IjoiMjg2MiJ9"},{"name":"before","in":"query","description":"Cursor to retrieve `size` elements before. Use the value from `prev_cursor` to get the previous page. Formatted as a Base64-encoded JSON object containing the element ID.","required":false,"schema":{"type":"string","description":"Cursor to retrieve `size` elements before. Use the value from `prev_cursor` to get the previous page. Formatted as a Base64-encoded JSON object containing the element ID.","example":"eyJ1IjoiMTc4MCJ9"},"example":"eyJ1IjoiMTc4MCJ9"},{"name":"size","in":"query","description":"Number of elements on the page","required":false,"schema":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"example":20},{"name":"sort","in":"query","description":"Format: field_name,direction","schema":{"type":"string"},"example":"id,asc"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiCursorPageSchemaV2DisbursementDto"}}}}}},"post":{"tags":["V2 Disbursements"],"summary":"Create Disbursement","description":"Creates a disbursement for an worker. A disbursement is an initiation of payment to a worker.\n","operationId":"create-disbursement-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2DisbursementCreateRequest"}}},"required":true},"responses":{"200":{"description":"Returned if the disbursement already exists and an additional attempt to disburse funds was not made. This can occur if the disbursement was already complete or if the resulting status is in [ CANCELED | SKIPPED | REVERSED ]\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2DisbursementDto"},"examples":{"Canceled":{"value":{"worker_id":"123456","amount":100,"external_id":"090eaa89-77f6-4f06-b352-a8e8a277f966","type":"TIP","worker_group":"1","description":"Payout Description","display_header_label":null,"display_sub_label":null,"status":"CANCELED","reason_code":null,"payout":null,"metadata":null,"time_created":"2026-01-01T18:00:00Z","time_modified":null}},"Reversed":{"value":{"worker_id":"123456","amount":100,"external_id":"090eaa89-77f6-4f06-b352-a8e8a277f966","type":"TIP","worker_group":"1","description":"Payout Description","display_header_label":null,"display_sub_label":null,"status":"REVERSED","reason_code":null,"payout":{"id":"98d656e9-6979-4777-b97c-f3f4b8b1a0e7","payment_type":"WALLET","amount":100,"fee":0,"org_paid_fee":0,"time_completed":"2026-01-01T18:00:10Z"},"metadata":null,"time_created":"2026-01-01T18:00:00Z","time_modified":null}}}}}},"201":{"description":"Returned if an attempt to disburse funds was successful. This can occur if the disbursement is new or if it already exists and is retried successfully.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2DisbursementDto"},"examples":{"Completed":{"value":{"worker_id":"123456","amount":100,"external_id":"090eaa89-77f6-4f06-b352-a8e8a277f966","type":"TIP","worker_group":"1","description":"Payout Description","display_header_label":null,"display_sub_label":null,"status":"COMPLETED","reason_code":null,"payout":{"id":"98d656e9-6979-4777-b97c-f3f4b8b1a0e7","payment_type":"WALLET","amount":100,"fee":0,"org_paid_fee":0,"time_completed":"2026-01-01T18:00:10Z"},"metadata":{"adjustments":[{"name":"401k","amount":-1000}],"custom_key":"custom-value"},"time_created":"2026-01-01T18:00:00Z","time_modified":"2026-01-01T18:00:15Z"}},"Scheduled":{"value":{"worker_id":"123456","amount":100,"external_id":"090eaa89-77f6-4f06-b352-a8e8a277f966","type":"TIP","worker_group":"1","description":"Disbursement Description","display_header_label":null,"display_sub_label":null,"status":"SCHEDULED","reason_code":null,"payout":null,"metadata":null,"time_created":"2026-01-01T18:00:00Z","time_modified":null}}}}}},"202":{"description":"Returned if an attempt to disburse funds was unsuccessful. This can occur if the resulting status is in [ FAILED | PENDING ]. Additional information can be found via `reason_code`.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2DisbursementDto"},"examples":{"Failed":{"value":{"worker_id":"123456","amount":100,"external_id":"090eaa89-77f6-4f06-b352-a8e8a277f966","type":"TIP","worker_group":"1","description":"Payout Description","display_header_label":null,"display_sub_label":null,"status":"FAILED","reason_code":"PAYMENT_PROFILE_FRAUDULENT","payout":null,"metadata":null,"time_created":"2026-01-01T18:00:00Z","time_modified":"2026-01-01T18:00:10Z"}},"Pending":{"value":{"worker_id":"123456","amount":100,"external_id":"090eaa89-77f6-4f06-b352-a8e8a277f966","type":"TIP","worker_group":"1","description":"Payout Description","display_header_label":null,"display_sub_label":null,"status":"PENDING","reason_code":null,"payout":null,"metadata":null,"time_created":"2026-01-01T18:00:00Z","time_modified":null}}}}}},"400":{"description":"Returned if the request does not adhere to the API specification. Can also be returned if the disbursement cannot be created due to improper invoicing setup.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Invalid Request":{"value":{"timestamp":"2026-01-01T18:00:00.000+00:00","status":400,"error":"Bad Request","message":"amount is required","path":"/v2/organizations/100000/workers/123456/disbursements"}},"Missing Invoice Configuration":{"value":{"timestamp":"2026-01-01T18:00:00.000+00:00","status":400,"error":"Bad Request","message":"Could not match disbursement to invoice configuration","path":"/v2/organizations/100000/workers/123456/disbursements"}}}}}},"429":{"description":"Returned if the request is throttled. Throttling can occur based on requests/min or if you have reached your organization's daily disbursement limit.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Too Many Requests":{"value":{"timestamp":"2026-01-01T18:00:00.000+00:00","status":429,"error":"Too Many Requests","message":"You have exhausted your API Request Quota","path":"/v2/organizations/100000/workers/123456/disbursements"}}}}}},"500":{"description":"If persistent, contact your Branch representative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Internal Server Error":{"value":{"timestamp":"2026-01-01T18:00:00.000+00:00","status":500,"error":"Internal Server Error","message":"An internal server error occurred","path":"/v2/organizations/100000/workers/123456/disbursements"}}}}}}}},"delete":{"tags":["V2 Disbursements"],"summary":"Cancel Disbursement","description":"Cancels a disbursement.\n\nDisbursements already in `CANCELED` status are accepted as a no-op. Disbursements in `SCHEDULED` or `FAILED` status will be transitioned to `CANCELED`. Attempts to cancel a disbursement with any other status returns a `409` response. Successful cancellation returns a `204` response.\n\nA `CANCELED` disbursement can be retried by calling Create Disbursement using the same (`external_id`, `type`) and `retry: true`.\n","operationId":"cancel-disbursement-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123},{"name":"external_id","in":"query","required":true,"schema":{"type":"string","description":"The external ID of the disbursement","example":"ABC123","maxLength":64,"minLength":0}},{"name":"type","in":"query","description":"The type of the disbursement","required":true,"schema":{"type":"string","description":"The type of the disbursement","enum":["TIP","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"TIP"},"example":"TIP"}],"responses":{"204":{"description":"Disbursement successfully canceled."},"404":{"description":"Disbursement not found for the given organization and worker.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Disbursement is not in a cancelable status. The error message will indicate whether the disbursement is already completed, already reversed, or otherwise not eligible for cancellation.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v2/organizations/{orgId}/disbursements":{"get":{"tags":["V2 Disbursements"],"summary":"Search Disbursements","description":"Searches all disbursements.","operationId":"search-disbursements-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"status","in":"query","description":"The disbursement's status","required":false,"schema":{"type":"string","description":"The disbursement's status","enum":["PENDING","SCHEDULED","COMPLETED","FAILED","CANCELED","SKIPPED"],"example":"COMPLETED"},"example":"COMPLETED"},{"name":"type","in":"query","description":"The disbursement's type","required":false,"schema":{"type":"string","description":"The disbursement's type","enum":["TIP","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"TIP"},"example":"TIP"},{"name":"external_id","in":"query","required":false,"schema":{"type":"string","description":"The disbursement's external ID","example":"ABC123"}},{"name":"invoice_id","in":"query","required":false,"schema":{"type":"integer","format":"int64","description":"The disbursement's invoice ID","example":123}},{"name":"worker_id","in":"query","required":false,"schema":{"type":"string","description":"The disbursement's worker ID","example":"123"}},{"name":"time_last_attempted_start","in":"query","required":false,"schema":{"type":"string","format":"date-time","description":"The start of the timeframe to search for disbursement attempts","example":"2020-02-18T19:42:48Z"}},{"name":"time_last_attempted_end","in":"query","required":false,"schema":{"type":"string","format":"date-time","description":"The end of the timeframe to search for disbursement attempts","example":"2020-02-21T19:42:48Z"}},{"name":"worker_group","in":"query","required":false,"schema":{"type":"string","description":"The disbursement's worker group","example":"Store #1"}},{"name":"after","in":"query","description":"Cursor to retrieve `size` elements after. Use the value from `next_cursor` to get the next page. Formatted as a Base64-encoded JSON object containing the element ID.","required":false,"schema":{"type":"string","description":"Cursor to retrieve `size` elements after. Use the value from `next_cursor` to get the next page. Formatted as a Base64-encoded JSON object containing the element ID.","example":"eyJ1IjoiMjg2MiJ9"},"example":"eyJ1IjoiMjg2MiJ9"},{"name":"before","in":"query","description":"Cursor to retrieve `size` elements before. Use the value from `prev_cursor` to get the previous page. Formatted as a Base64-encoded JSON object containing the element ID.","required":false,"schema":{"type":"string","description":"Cursor to retrieve `size` elements before. Use the value from `prev_cursor` to get the previous page. Formatted as a Base64-encoded JSON object containing the element ID.","example":"eyJ1IjoiMTc4MCJ9"},"example":"eyJ1IjoiMTc4MCJ9"},{"name":"size","in":"query","description":"Number of elements on the page","required":false,"schema":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"example":20},{"name":"sort","in":"query","description":"Format: field_name,direction","schema":{"type":"string"},"example":"id,asc"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiCursorPageSchemaV2DisbursementDto"}}}}}}},"/v2/organizations/{orgId}/disbursements/reversals":{"get":{"tags":["V2 Disbursement Reversals"],"summary":"Search Disbursement Reversals","description":"Searches all disbursement reversals.","operationId":"search-disbursement-reversals-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"id","in":"query","description":"The ID of the original disbursement","required":false,"schema":{"type":"integer","format":"int64"},"example":123},{"name":"status","in":"query","description":"The status of the disbursement reversal","required":false,"schema":{"type":"string","enum":["PENDING","COMPLETED","FAILED"]},"example":"PENDING"},{"name":"request_reason","in":"query","description":"The reason that the disbursement should be reversed","required":false,"schema":{"type":"string","enum":["DUPLICATE_PAYMENT","INCORRECT_AMOUNT","PAYMENT_TO_WRONG_ACCOUNT","OTHER"]},"example":"INCORRECT_AMOUNT"},{"name":"worker_id","in":"query","required":false,"schema":{"type":"string","description":"The worker's ID associated with the disbursement"},"example":123},{"name":"external_id","in":"query","description":"external_id of the original disbursement","required":false,"schema":{"type":"string"},"example":"ABC123"},{"name":"type","in":"query","description":"The type of the disbursement","required":false,"schema":{"type":"string","description":"The type of the disbursement","enum":["TIP","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"TIP"},"example":"TIP"},{"name":"amount","in":"query","description":"The amount of the original disbursement in cents","required":false,"schema":{"type":"integer","format":"int64"},"example":500},{"name":"after","in":"query","description":"Cursor to retrieve `size` elements after. Use the value from `next_cursor` to get the next page. Formatted as a Base64-encoded JSON object containing the element ID.","required":false,"schema":{"type":"string","description":"Cursor to retrieve `size` elements after. Use the value from `next_cursor` to get the next page. Formatted as a Base64-encoded JSON object containing the element ID.","example":"eyJ1IjoiMjg2MiJ9"},"example":"eyJ1IjoiMjg2MiJ9"},{"name":"before","in":"query","description":"Cursor to retrieve `size` elements before. Use the value from `prev_cursor` to get the previous page. Formatted as a Base64-encoded JSON object containing the element ID.","required":false,"schema":{"type":"string","description":"Cursor to retrieve `size` elements before. Use the value from `prev_cursor` to get the previous page. Formatted as a Base64-encoded JSON object containing the element ID.","example":"eyJ1IjoiMTc4MCJ9"},"example":"eyJ1IjoiMTc4MCJ9"},{"name":"size","in":"query","description":"Number of elements on the page","required":false,"schema":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"example":20},{"name":"sort","in":"query","description":"Format: field_name,direction","schema":{"type":"string","example":"id,asc"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2SearchReversalSchema"},"examples":{"Successful Reversal":{"description":"Successful Reversal","value":{"content":[{"amount":5,"memo":"Memo content","request_reason":"OTHER","status":"COMPLETED","reason_code":null,"reversal":{"reference_id":"47f5a2ae-6eec-4aa6-bf06-872e23c63883","payout_type":"Wallet","amount":5,"time_completed":"2020-02-07T01:35:02Z","time_created":"2020-02-07T01:35:02Z"},"disbursement":{"id":99999,"external_id":"053976ad-cc46-4722-8294-fea971e4c127","employee_id":"123456","type":"MILEAGE"},"time_created":"2020-02-07T01:35:01Z","time_modified":"2020-02-07T01:35:02Z"}],"prev_cursor":"eyJ1IjoiMSJ9","next_cursor":"eyJ1IjoiMSJ9","size":1}},"Unsuccessful Reversal":{"description":"Unsuccessful Reversal","value":{"content":[{"amount":5,"memo":null,"request_reason":"INCORRECT_AMOUNT","status":"FAILED","reason_code":"REVERSAL_TIMELIMIT_EXPIRED","disbursement":{"id":99999,"external_id":"053976ad-cc46-4722-8294-fea971e4c127","employee_id":"123456","type":"MILEAGE"},"time_created":"2020-02-07T01:35:01Z","time_modified":"2020-02-07T01:35:02Z"}],"prev_cursor":"eyJ1IjoiMSJ9","next_cursor":"eyJ1IjoiMSJ9","size":1}},"No Results":{"description":"No Results","value":{"content":[],"prev_cursor":null,"next_cursor":null,"size":0}}}}}}}},"post":{"tags":["V2 Disbursement Reversals"],"summary":"Create Disbursement Reversal","description":"Creates a reversal for an existing disbursement","operationId":"create-disbursement-reversal-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"external_id","in":"query","required":true,"schema":{"type":"string","description":"The external ID of the disbursement","example":"ABC123"}},{"name":"type","in":"query","description":"The type of the disbursement","required":true,"schema":{"type":"string","description":"The type of the disbursement","enum":["TIP","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"TIP"},"example":"TIP"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2ReversalCreateRequest"}}},"required":true},"responses":{"201":{"description":"Returned if an attempt to reverse a disbursement was successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2ReversalSchemaCreated"},"examples":{"Successful Reversal":{"description":"Successful Reversal","value":{"amount":500,"memo":null,"request_reason":"OTHER","status":"COMPLETED","reason_code":null,"reversal":{"reference_id":"6ded03f6-79c3-436a-8327-de36f5d072ad","payout_type":"Wallet","amount":500,"time_completed":"2024-02-20T17:56:26Z","time_created":"2024-02-20T17:56:26Z"},"disbursement":{"id":99999,"external_id":"053976ad-cc46-4722-8294-fea971e4c127","employee_id":"123456","type":"MILEAGE"},"time_created":"2024-02-20T17:56:25Z","time_modified":"2024-02-20T17:56:26Z"}}}}}},"202":{"description":"Returned if an attempt to reverse a disbursement was unsuccessful.\n\nThis can occur if the resulting status is in [ FAILED | PENDING ].\n\nAdditional information can be found via reason_code.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2ReversalSchemaFailed"},"examples":{"Invalid Disbursement Status":{"description":"Invalid Disbursement Status","value":{"amount":500,"memo":null,"request_reason":"OTHER","status":"FAILED","reason_code":"DISBURSEMENT_STATUS_NOT_SUPPORTED","reversal":null,"disbursement":{"id":99999,"external_id":"053976ad-cc46-4722-8294-fea971e4c127","employee_id":"123456","type":"MILEAGE"},"time_created":"2020-02-18T16:24:09Z","time_modified":"2020-02-18T16:24:09Z"}},"Time Limit Expired":{"description":"Time Limit Expired","value":{"amount":500,"status":"FAILED","memo":null,"reason_code":"REVERSAL_TIMELIMIT_EXPIRED","request_reason":"OTHER","reversal":null,"disbursement":{"id":99999,"external_id":"053976ad-cc46-4722-8294-fea971e4c127","employee_id":"123456","type":"MILEAGE"},"time_created":"2020-02-15T18:28:56Z","time_modified":"2020-02-15T18:28:56Z"}},"Reversal Pending":{"description":"Reversal Pending","value":{"amount":500,"status":"PENDING","memo":null,"reason_code":"REVERSAL_PENDING","request_reason":"OTHER","reversal":null,"disbursement":{"id":99999,"external_id":"053976ad-cc46-4722-8294-fea971e4c127","employee_id":"123456","type":"MILEAGE"},"time_created":"2020-02-15T18:28:56Z","time_modified":"2020-02-15T18:28:56Z"}}}}}},"400":{"description":"Returned if the request does not adhere to the API specification. Can also be returned if the reversal cannot be created due to improper invoicing setup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Invalid Request":{"description":"Invalid Request","value":{"timestamp":"2023-01-01T00:00:00.000+00:00","status":400,"error":"Bad Request","message":"amount is required","path":"/v2/organizations/123/disbursements/123/reversals"}},"Missing Invoice Configuration":{"description":"Missing Invoice Configuration","value":{"timestamp":"2023-01-01T00:00:00.000+00:00","status":400,"error":"Bad Request","message":"Could not match reversal to invoice configuration","path":"/v2/organizations/123/disbursements/123/reversals"}}}}}},"404":{"description":"Returned if the disbursement was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Not Found":{"description":"Not Found","value":{"timestamp":"2023-01-01T00:00:00.000+00:00","status":404,"error":"Not Found","message":"No message available","path":"/v2/organizations/123/disbursements/123/reversals"}}}}}},"500":{"description":"If error persists, contact your Branch representative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v2/organizations/{orgId}/disbursements/fees/calculate":{"post":{"tags":["V2 Disbursement Fee"],"summary":"Calculate Disbursement Fee","description":"Uses the current organization fee settings to calculate the fees that will be charged for a given disbursement amount.","operationId":"calculate-disbursement-fee-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisbursementFeeCalculationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisbursementFeeCalculation"},"examples":{"Valid Amount Disbursed":{"description":"Valid Amount Disbursed","value":{"disbursement":10000,"sent_to_worker":9900,"user_paid_fee":100,"error_reason_code":null}},"Invalid Amount Disbursed":{"description":"Invalid Amount Disbursed","value":{"disbursement":1,"sent_to_worker":0,"user_paid_fee":100,"error_reason_code":"AMOUNT_DOES_NOT_COVER_FEES"}}}}}},"400":{"description":"Returned if the request does not adhere to the API specification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Invalid Amount":{"description":"Invalid Amount","value":{"timestamp":"2024-03-06T21:37:09.216+00:00","status":400,"error":"Bad Request","message":"[400] amount must be greater than or equal to 1","path":"/v2/organizations/100019/disbursements/fees/calculate"}},"Invalid Payment Method":{"description":"Invalid Payment Method","value":{"timestamp":"2024-03-07T22:58:45.918+00:00","status":400,"error":"Bad Request","message":"invalid payment method type","path":"/v2/organizations/100019/disbursements/fees/calculate"}}}}}}}}},"/v2/organizations/{orgId}/disbursements/fees":{"get":{"tags":["V2 Disbursement Fee"],"summary":"Get Disbursement Fees","operationId":"get-disbursement-fees-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DisbursementFeeSettingsDto"}}}}}}}},"/v1/organizations/{orgId}/employees/{employeeId}/disbursements":{"get":{"tags":["Disbursements"],"summary":"Search Employee Disbursements","description":"Get a list of disbursements for an employee.","operationId":"search-employee-disbursements-v1","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123},{"name":"status","in":"query","description":"`CREATED`: The disbursement was created and Branch is attempting to disburse funds\n\n`ATTEMPTING_PAYBACK`: Branch successfully disbursed funds and is attempting pay back for the disbursement\n\n`PAYBACK_FAILED`: Branch successfully disbursed funds but was unable to complete pay back for the disbursement\n\n`COMPLETED`: Branch successfully disbursed funds\n\n`FAILED`: Funds were unable to be disbursed\n\n`SKIPPED`: Funds were not disbursed because an identical disbursement already existed\n\n`CANCELLED`: Funds were not disbursed and no further action will be attempted for the disbursement\n\n`SCHEDULED`: Funds are scheduled to disburse in the future\n\n","required":false,"schema":{"type":"string","description":"`CREATED`: The disbursement was created and Branch is attempting to disburse funds\n\n`ATTEMPTING_PAYBACK`: Branch successfully disbursed funds and is attempting pay back for the disbursement\n\n`PAYBACK_FAILED`: Branch successfully disbursed funds but was unable to complete pay back for the disbursement\n\n`COMPLETED`: Branch successfully disbursed funds\n\n`FAILED`: Funds were unable to be disbursed\n\n`SKIPPED`: Funds were not disbursed because an identical disbursement already existed\n\n`CANCELLED`: Funds were not disbursed and no further action will be attempted for the disbursement\n\n`SCHEDULED`: Funds are scheduled to disburse in the future\n\n","enum":["CREATED","ATTEMPTING_PAYBACK","PAYBACK_FAILED","COMPLETED","FAILED","SKIPPED","CANCELLED","SCHEDULED"],"example":"CREATED"},"example":"CREATED"},{"name":"type","in":"query","description":"`TIPS`: Disbursement for tips earned by worker\n\n`TRIP`: Disbursement for trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for delivery made by worker\n\n`DEPOSIT`: Disbursement for generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","required":false,"schema":{"type":"string","description":"`TIPS`: Disbursement for tips earned by worker\n\n`TRIP`: Disbursement for trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for delivery made by worker\n\n`DEPOSIT`: Disbursement for generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","enum":["TIPS","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"MILEAGE"},"example":"MILEAGE"},{"name":"external_id","in":"query","description":"A unique ID with custom specification that correlates back to your own records.","required":false,"schema":{"type":"string"},"example":123456},{"name":"invoice_id","in":"query","description":"The ID of the invoice requesting payback for the disbursement","required":false,"schema":{"type":"integer","format":"int64"},"example":123456},{"name":"amount","in":"query","description":"Amount of disbursement in cents","required":false,"schema":{"type":"integer","format":"int64"},"example":500},{"name":"employee_id","in":"query","description":"The employee's ID","required":false,"schema":{"type":"string"},"example":123},{"name":"employee_group","in":"query","description":"A grouping for the employee. This could be anything that is used by your organization in order to group employees: store id, employee tier, region code, etc.","required":false,"schema":{"type":"string"},"example":"Store #1"},{"name":"time_created_start","in":"query","description":"The start of the timeframe to search for created disbursement","required":false,"schema":{"type":"string","format":"date-time"},"example":"2020-02-18T19:42:48Z"},{"name":"time_created_end","in":"query","description":"The end of the timeframe to search for created disbursements","required":false,"schema":{"type":"string","format":"date-time"},"example":"2020-02-21T19:42:48Z"},{"name":"last_time_created","in":"query","description":"The latest time before which to search for attempted disbursements","required":false,"schema":{"type":"string","format":"date-time"},"example":"2020-02-21T19:42:48Z"},{"name":"last_id","in":"query","description":"The largest ID lower than which to search for attempted disbursements","required":false,"schema":{"type":"integer","format":"int64"},"example":123},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}},{"name":"sort","in":"query","description":"Format: field_name,direction","required":true,"schema":{"type":"string"},"example":"id,asc"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaDisbursementDto"}}}}}},"post":{"tags":["Disbursements"],"summary":"Create Disbursement","description":"Creates a disbursement for an employee. This initiates a payment to the employee.","operationId":"create-disbursement-v1","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisbursementCreationRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisbursementDto"}}}}}}},"/v1/organizations/{orgId}/invoices/{invoiceId}/disbursements":{"get":{"tags":["Disbursements"],"summary":"Search Invoice Disbursements","description":"Get a list of disbursements for an invoice.","operationId":"search-invoice-disbursements-v1","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"invoiceId","in":"path","description":"Invoice ID","required":true,"schema":{"type":"integer","format":"int64"},"example":123},{"name":"status","in":"query","description":"`CREATED`: The disbursement was created and Branch is attempting to disburse funds\n\n`ATTEMPTING_PAYBACK`: Branch successfully disbursed funds and is attempting pay back for the disbursement\n\n`PAYBACK_FAILED`: Branch successfully disbursed funds but was unable to complete pay back for the disbursement\n\n`COMPLETED`: Branch successfully disbursed funds\n\n`FAILED`: Funds were unable to be disbursed\n\n`SKIPPED`: Funds were not disbursed because an identical disbursement already existed\n\n`CANCELLED`: Funds were not disbursed and no further action will be attempted for the disbursement\n\n`SCHEDULED`: Funds are scheduled to disburse in the future\n\n","required":false,"schema":{"type":"string","description":"`CREATED`: The disbursement was created and Branch is attempting to disburse funds\n\n`ATTEMPTING_PAYBACK`: Branch successfully disbursed funds and is attempting pay back for the disbursement\n\n`PAYBACK_FAILED`: Branch successfully disbursed funds but was unable to complete pay back for the disbursement\n\n`COMPLETED`: Branch successfully disbursed funds\n\n`FAILED`: Funds were unable to be disbursed\n\n`SKIPPED`: Funds were not disbursed because an identical disbursement already existed\n\n`CANCELLED`: Funds were not disbursed and no further action will be attempted for the disbursement\n\n`SCHEDULED`: Funds are scheduled to disburse in the future\n\n","enum":["CREATED","ATTEMPTING_PAYBACK","PAYBACK_FAILED","COMPLETED","FAILED","SKIPPED","CANCELLED","SCHEDULED"],"example":"CREATED"},"example":"CREATED"},{"name":"type","in":"query","description":"`TIPS`: Disbursement for tips earned by worker\n\n`TRIP`: Disbursement for trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for delivery made by worker\n\n`DEPOSIT`: Disbursement for generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","required":false,"schema":{"type":"string","description":"`TIPS`: Disbursement for tips earned by worker\n\n`TRIP`: Disbursement for trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for delivery made by worker\n\n`DEPOSIT`: Disbursement for generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","enum":["TIPS","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"MILEAGE"},"example":"MILEAGE"},{"name":"external_id","in":"query","description":"A unique ID with custom specification that correlates back to your own records.","required":false,"schema":{"type":"string"},"example":123456},{"name":"invoice_id","in":"query","description":"The ID of the invoice requesting payback for the disbursement","required":false,"schema":{"type":"integer","format":"int64"},"example":123456},{"name":"amount","in":"query","description":"Amount of disbursement in cents","required":false,"schema":{"type":"integer","format":"int64"},"example":500},{"name":"employee_id","in":"query","description":"The employee's ID","required":false,"schema":{"type":"string"},"example":123},{"name":"employee_group","in":"query","description":"A grouping for the employee. This could be anything that is used by your organization in order to group employees: store id, employee tier, region code, etc.","required":false,"schema":{"type":"string"},"example":"Store #1"},{"name":"time_created_start","in":"query","description":"The start of the timeframe to search for created disbursement","required":false,"schema":{"type":"string","format":"date-time"},"example":"2020-02-18T19:42:48Z"},{"name":"time_created_end","in":"query","description":"The end of the timeframe to search for created disbursements","required":false,"schema":{"type":"string","format":"date-time"},"example":"2020-02-21T19:42:48Z"},{"name":"last_time_created","in":"query","description":"The latest time before which to search for attempted disbursements","required":false,"schema":{"type":"string","format":"date-time"},"example":"2020-02-21T19:42:48Z"},{"name":"last_id","in":"query","description":"The largest ID lower than which to search for attempted disbursements","required":false,"schema":{"type":"integer","format":"int64"},"example":123},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}},{"name":"sort","in":"query","description":"Format: field_name,direction","required":true,"schema":{"type":"string"},"example":"id,asc"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaDisbursementDto"}}}}}}},"/v1/organizations/{orgId}/disbursements":{"get":{"tags":["Disbursements"],"summary":"Search Disbursements","description":"Searches disbursements while returning HATEOAS links (e.g. prev_page, next_page) for retrieving additional data.","operationId":"search-disbursements-v1","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"status","in":"query","description":"`CREATED`: The disbursement was created and Branch is attempting to disburse funds\n\n`ATTEMPTING_PAYBACK`: Branch successfully disbursed funds and is attempting pay back for the disbursement\n\n`PAYBACK_FAILED`: Branch successfully disbursed funds but was unable to complete pay back for the disbursement\n\n`COMPLETED`: Branch successfully disbursed funds\n\n`FAILED`: Funds were unable to be disbursed\n\n`SKIPPED`: Funds were not disbursed because an identical disbursement already existed\n\n`CANCELLED`: Funds were not disbursed and no further action will be attempted for the disbursement\n\n`SCHEDULED`: Funds are scheduled to disburse in the future\n\n","required":false,"schema":{"type":"string","description":"`CREATED`: The disbursement was created and Branch is attempting to disburse funds\n\n`ATTEMPTING_PAYBACK`: Branch successfully disbursed funds and is attempting pay back for the disbursement\n\n`PAYBACK_FAILED`: Branch successfully disbursed funds but was unable to complete pay back for the disbursement\n\n`COMPLETED`: Branch successfully disbursed funds\n\n`FAILED`: Funds were unable to be disbursed\n\n`SKIPPED`: Funds were not disbursed because an identical disbursement already existed\n\n`CANCELLED`: Funds were not disbursed and no further action will be attempted for the disbursement\n\n`SCHEDULED`: Funds are scheduled to disburse in the future\n\n","enum":["CREATED","ATTEMPTING_PAYBACK","PAYBACK_FAILED","COMPLETED","FAILED","SKIPPED","CANCELLED","SCHEDULED"],"example":"CREATED"},"example":"CREATED"},{"name":"type","in":"query","description":"`TIPS`: Disbursement for tips earned by worker\n\n`TRIP`: Disbursement for trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for delivery made by worker\n\n`DEPOSIT`: Disbursement for generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","required":false,"schema":{"type":"string","description":"`TIPS`: Disbursement for tips earned by worker\n\n`TRIP`: Disbursement for trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for delivery made by worker\n\n`DEPOSIT`: Disbursement for generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","enum":["TIPS","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"MILEAGE"},"example":"MILEAGE"},{"name":"external_id","in":"query","description":"A unique ID with custom specification that correlates back to your own records.","required":false,"schema":{"type":"string"},"example":123456},{"name":"invoice_id","in":"query","description":"The ID of the invoice requesting payback for the disbursement","required":false,"schema":{"type":"integer","format":"int64"},"example":123456},{"name":"amount","in":"query","description":"Amount of disbursement in cents","required":false,"schema":{"type":"integer","format":"int64"},"example":500},{"name":"employee_id","in":"query","description":"The employee's ID","required":false,"schema":{"type":"string"},"example":123},{"name":"employee_group","in":"query","description":"A grouping for the employee. This could be anything that is used by your organization in order to group employees: store id, employee tier, region code, etc.","required":false,"schema":{"type":"string"},"example":"Store #1"},{"name":"time_created_start","in":"query","description":"The start of the timeframe to search for created disbursement","required":false,"schema":{"type":"string","format":"date-time"},"example":"2020-02-18T19:42:48Z"},{"name":"time_created_end","in":"query","description":"The end of the timeframe to search for created disbursements","required":false,"schema":{"type":"string","format":"date-time"},"example":"2020-02-21T19:42:48Z"},{"name":"last_time_created","in":"query","description":"The latest time before which to search for attempted disbursements","required":false,"schema":{"type":"string","format":"date-time"},"example":"2020-02-21T19:42:48Z"},{"name":"last_id","in":"query","description":"The largest ID lower than which to search for attempted disbursements","required":false,"schema":{"type":"integer","format":"int64"},"example":123},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}},{"name":"sort","in":"query","description":"Format: field_name,direction","required":true,"schema":{"type":"string"},"example":"id,asc"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaDisbursementDto"}}}}}}},"/v1/organizations/{orgId}/employees/{employeeId}":{"get":{"tags":["Employees"],"summary":"Get Employee","description":"Get an Employee by ID.","operationId":"get-employee","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeDto"}}}},"404":{"description":"Returned if the requested employeeId was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2025-01-24T21:56:51.219+00:00","status":404,"error":"Not Found","message":"[404]  Employee Id was not found","path":"/v1/organizations/100019/employees/1"}}}}}},"put":{"tags":["Employees"],"summary":"Update Employee","description":"Update an employee by ID.","operationId":"update-employee","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeDto"}}}},"400":{"description":"Bad Request. If a field provided is invalid, an error response will be returned with a message describing why.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-01-01T11:00:00.000+00:00","status":400,"error":"Bad Request","message":"Field 'example' was invalid","path":"/v1/organizations/123/employees/456"}}}}}},"post":{"tags":["Employees"],"summary":"Create Employee","description":"Create a new employee. Updates if the employee already exists.","operationId":"create-employee","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeCreationRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeDto"}}}},"400":{"description":"Bad Request. If a field provided is invalid, an error response will be returned with a message describing why.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-01-01T11:00:00.000+00:00","status":400,"error":"Bad Request","message":"Field 'example' was invalid","path":"/v1/organizations/123/employees/456"}}}}}},"delete":{"tags":["Employees"],"summary":"Delete Employee","description":"Delete an employee by ID.","operationId":"delete-employee","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"204":{"description":"No Content"}}}},"/v1/organizations/{orgId}/employees":{"get":{"tags":["Employees"],"summary":"Search Employees","description":"Search for employees by providing search criteria.","operationId":"search-employees","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"first_name","in":"query","description":"The first name of the employee","required":false,"schema":{"type":"string","description":"The first name of the employee","example":"John"},"example":"John"},{"name":"last_name","in":"query","description":"The last name of the employee","required":false,"schema":{"type":"string","description":"The last name of the employee","example":"Larson"},"example":"Larson"},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaEmployeeDto"}}}}}}},"/v1/organizations/{orgId}/employees/{employeeId}/address":{"get":{"tags":["Employees"],"summary":"Get Employee Address","description":"Get the address of an employee.","operationId":"get-employee-address","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Address"}}}},"404":{"description":"Returned if the requested address was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2025-01-24T21:57:13.579+00:00","status":404,"error":"Not Found","message":"Cannot find address for employee","path":"/v1/organizations/100019/employees/1/address"}}}}}}},"/v1/organizations/{orgId}/employees/{employeeId}/period-earnings":{"put":{"tags":["Employee Earnings"],"summary":"Update Employee Earning","description":"Update an employee's earning for a period.","operationId":"update-employee-earning","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeePeriodEarningRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeePeriodEarningSummaryDto"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/ewa/available-balance":{"get":{"tags":["EWA"],"summary":"Get EWA Available Balance","description":"Returns the worker's available EWA balance.\n\nIn sandbox, the following worker IDs are available to return a static balance response:\n- `TYPICAL_SAMPLE_WORKER_ID`: Returns a response with `available_balance` = 5000.\n- `NO_AVAILABLE_BALANCE_SAMPLE_WORKER_ID`: Returns a response with `available_balance` = 0.\n- `NOT_FOUND_SAMPLE_WORKER_ID`: Returns a 404 error indicating the worker was not found.\n","operationId":"get-ewa-available-balance","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"Success - Returns the worker's available EWA balance","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EwaAvailableBalanceResponse"},"example":{"available_balance":5000}}}},"404":{"description":"Not Found. Can occur for example if the worker ID provided does not match an existing worker.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2026-06-01T12:00:00.000+00:00","status":404,"error":"Not Found","message":"Worker does not exist for organization","path":"/v2/organizations/123/workers/456/ewa/available-balance"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/ewa/account":{"get":{"tags":["EWA"],"summary":"Get EWA Account","description":"Get EWA account for a worker.\n\nIn sandbox, the following worker IDs are available to return a static account response:\n- `PENDING_VERIFICATION_SAMPLE_WORKER_ID`: Returns an account with `status` = `PENDING_VERIFICATION`.\n- `VERIFICATION_IN_PROGRESS_SAMPLE_WORKER_ID`: Returns an account with `status` = `VERIFICATION_IN_PROGRESS`.\n- `ACTIVE_SAMPLE_WORKER_ID`: Returns an account with `status` = `ACTIVE`.\n- `FAILED_SAMPLE_WORKER_ID`: Returns an account with `status` = `FAILED`.\n- `SUSPENDED_SAMPLE_WORKER_ID`: Returns an account with `status` = `SUSPENDED`.\n- `NOT_FOUND_SAMPLE_WORKER_ID`: Returns a 404 error indicating the account was not found.\n","operationId":"get-ewa-account","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"Success - Returns the worker's EWA account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EwaAccountResponse"},"example":{"status":"ACTIVE"}}}},"404":{"description":"Not Found. Can occur for example if the worker ID provided does not match an existing worker, or the worker does not have an EWA account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2026-06-01T12:00:00.000+00:00","status":404,"error":"Not Found","message":"EWA account does not exist for worker","path":"/v2/organizations/123/workers/456/ewa/account"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/external-cards":{"get":{"tags":["External Cards"],"summary":"Search External Cards","description":"Get a list of external cards for a worker.","operationId":"search-external-cards","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123},{"name":"network","in":"query","description":"The network of the external card","required":false,"schema":{"type":"string"},"example":"visa"},{"name":"last4","in":"query","description":"The last 4 digits of the external card's PAN","required":false,"schema":{"type":"string"},"example":1234},{"name":"time_created_start","in":"query","description":"The start of the timeframe to search for external card creation","required":false,"schema":{"type":"string","format":"date-time"},"example":"2023-01-01T00:00:00.000Z"},{"name":"time_created_end","in":"query","description":"The end of the timeframe to search for external card creation","required":false,"schema":{"type":"string","format":"date-time"},"example":"2023-01-31T23:59:59.999Z"},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSlimWorkerTabapayExternalCardDto"}}}}}},"post":{"tags":["External Cards"],"summary":"Add External Card","description":"Add an external card for a worker.","operationId":"add-external-card","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerDirectFormRequest"}}},"required":true},"responses":{"201":{"description":"Returned if an attempt to add an external payment card was successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerTabapayExternalCardDto"}}}},"400":{"description":"Returned if the request does not adhere to the API specification. This will also return if the payment card details are invalid or not supported\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Invalid Request":{"description":"Invalid Request","value":{"timestamp":"2023-01-01T00:00:00.000+00:00","status":400,"error":"Bad Request","message":"token is required","path":"/v2/organizations/123/workers/123/external-cards"}}}}}},"409":{"description":"Returned if the worker has an existing external payment card.  Direct worker to delete their current card and try again.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/external-cards/{externalCardId}":{"get":{"tags":["External Cards"],"summary":"Get External Card","description":"Get an external card.","operationId":"get-external-card","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123},{"name":"externalCardId","in":"path","description":"External Card ID","required":true,"schema":{"type":"integer","format":"int64"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerTabapayExternalCardDto"}}}},"404":{"description":"Returned if the requested external card was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2025-01-24T21:59:39.630+00:00","status":404,"error":"Not Found","message":"No static resource v2/organizations/100019/workers/1/external-cards/1.","path":"/v2/organizations/100019/workers/1/external-cards/1"}}}}}},"delete":{"tags":["External Cards"],"summary":"Delete External Card","description":"Delete an external card.","operationId":"delete-external-card","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123},{"name":"externalCardId","in":"path","description":"External Card ID","required":true,"schema":{"type":"integer","format":"int64"},"example":123}],"responses":{"204":{"description":"No Content"}}}},"/v1/organizations":{"get":{"tags":["Organizations"],"summary":"Search Organizations","description":"Get Organizations.","operationId":"search-organizations","parameters":[{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaOrganizationDto"}}}}}}},"/v1/organizations/{orgId}":{"get":{"tags":["Organizations"],"summary":"Get Organization","description":"Get an Organization by ID.","operationId":"get-organization","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDto"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/payment-profile":{"get":{"tags":["Payment Profile"],"summary":"Get Payment Profile","description":"Get the payment profile for a worker, which shows the payment types by which a worker can be paid according to their current configuration, and the active payment type.","operationId":"get-payment-profile","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerPaymentProfileDto"}}}},"404":{"description":"Returned if the requested workerId was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Not Found":{"description":"Not Found","value":{"timestamp":"2024-02-06T18:02:04.351+00:00","status":404,"error":"Not Found","message":"No static resource v2/organizations/100019/workers/2444666666/payment-profile.","path":"/v2/organizations/100019/workers/2444666666/payment-profile"}}}}}}}},"put":{"tags":["Payment Profile"],"summary":"Update Payment Profile","description":"Update a worker's payment profile to change the active payment type.","operationId":"update-payment-profile","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerPaymentProfileUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkerPaymentProfileDto"}}}},"400":{"description":"Returned if the request does not adhere to the API specification, or if the worker does not have the requested profile type configured\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Invalid Request":{"description":"Invalid Request","value":{"timestamp":"2024-02-06T18:13:21.047+00:00","status":400,"error":"Bad Request","message":"[400]  valid payment card not found for worker","path":"/v2/organizations/100019/workers/123456/payment-profile"}}}}}},"404":{"description":"Returned if the requested workerId was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"Not Found":{"description":"Not Found","value":{"timestamp":"2024-02-06T18:02:04.351+00:00","status":404,"error":"Not Found","message":"No message available","path":"/v2/organizations/100019/workers/2444666666/payment-profile"}}}}}}}}},"/v1/organizations/{orgId}/payroll-calendar":{"get":{"tags":["Payroll Calendar"],"summary":"Get Payroll Calendar","description":"Get the payroll calendar for an organization","operationId":"get-payroll-calendar","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayrollCalendarDto"}}}}}},"post":{"tags":["Payroll Calendar"],"summary":"Create Payroll Calendar","description":"Create a new payroll calendar, which defines payroll periods.","operationId":"create-payroll-calendar","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayrollCalendarCreationRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayrollCalendarDto"}}}}}}},"/v1/organizations/{orgId}/payroll-calendar/periods/{payrollPeriodId}":{"get":{"tags":["Payroll Periods"],"summary":"Get Payroll Period","description":"Get an existing payroll period.","operationId":"get-payroll-period","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"payrollPeriodId","in":"path","description":"Payroll Period ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayrollPeriodDto"}}}},"404":{"description":"Returned if the requested payroll period was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2025-01-24T22:02:44.878+00:00","status":404,"error":"Not Found","message":"Payroll period not found","path":"/v1/organizations/100019/payroll-calendar/periods/1"}}}}}},"put":{"tags":["Payroll Periods"],"summary":"Update Payroll Period","description":"Update a payroll period pay date and deadline.","operationId":"update-payroll-period","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"payrollPeriodId","in":"path","description":"Payroll Period ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayrollPeriodUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayrollPeriodDto"}}}}}}},"/v1/organizations/{orgId}/remittances/{remittanceId}/deductions":{"post":{"tags":["Remittance"],"summary":"Report Remittance Deduction","description":"Post an amount that was deducted from a worker on the remittance.","operationId":"report-remittance-deduction","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"remittanceId","in":"path","description":"Remittance ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeductionCreationRequest"}}},"required":true},"responses":{"201":{"description":"Created"}}}},"/v1/organizations/{orgId}/remittances/{remittanceId}":{"patch":{"tags":["Remittance"],"summary":"Complete Remittance Deduction","description":"Update an existing remittance to mark it as completed.","operationId":"complete-remittance-deduction","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"remittanceId","in":"path","description":"Remittance ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemittanceUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/v1/organizations/{orgId}/remittances":{"get":{"tags":["Remittance"],"summary":"Search Remittances","description":"Return a list of remittances by an organization.","operationId":"search-remittances","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaRemittanceDto"}}}}}}},"/v1/organizations/{orgId}/remittances/{remittanceId}/requested-deductions":{"get":{"tags":["Remittance"],"summary":"Search Remittance Requested Deductions","description":"Return a list of requested deductions from an organization's remittance.","operationId":"search-remittance-requested-deductions","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"remittanceId","in":"path","description":"Remittance ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaRemittanceRequestedDeductionDto"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/rewards/lifetime_summary":{"get":{"tags":["Rewards"],"summary":"Get Worker Rewards Lifetime Summary","description":"Gets a worker's lifetime rewards summary.","operationId":"get-worker-rewards-lifetime-summary","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewardLifetimeSummaryDto"}}}},"404":{"description":"Not Found. Can occur for example if the worker ID provided does not match an existing worker.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-01-01T11:00:00.000+00:00","status":404,"error":"Not Found","message":"Worker does not exist for org","path":"/v2/organizations/123/workers/456/rewards/lifetime_summary"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/shifts/{shiftId}":{"get":{"tags":["V2 Shifts"],"summary":"Get Shift","description":"Get a worker's completed shift. Requires a shift id to identify which shift to retrieve. If an existing shift cannot be found with the provided shift id, call will return 404 - Not Found. Successful call will return the completed shift.","operationId":"get-shift-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123},{"name":"shiftId","in":"path","description":"Shift ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftV2Response"},"example":{"id":"f8fb4058-a1a2-43ae-8b0c-e81eabc85665","external_id":"f8fb4058-a1a2-43ae-8b0c-e81eabc85665","punch_in":"2024-06-04T12:08:18.574Z","punch_out":"2024-06-04T19:38:18.574Z","hours":7.5,"rate":2000,"time_created":"2024-06-04T19:38:18.574Z","time_modified":"2024-06-04T19:38:18.574Z","worker_group":"Store #1"}}}},"400":{"description":"Bad Request. If a field provided is invalid, an error response will be returned with a message describing why.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-10-04T23:08:23.954Z","status":"400","error":"Bad Request","message":"Field 'example' was invalid","path":"/v2/organizations/100/workers/abcdef/shifts"}}}},"404":{"description":"Not Found. Can occur for example if the worker ID provided does not match an existing worker.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-10-04T23:08:23.954Z","status":"404","error":"Not Found","message":"Worker does not exist for org","path":"/v2/organizations/100/workers/abcdef/shifts"}}}}}},"put":{"tags":["V2 Shifts"],"summary":"Update Shift","description":"Update a worker's completed shift. Requires shift_id to identify which shift to update. If an existing shift cannot be found with the provided shift_id, call will return 404 - Not Found. Requests made with missing required fields or invalid dates/times will return 400 - Bad Request. Successful call will return newly updated shift.","operationId":"update-shift-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123},{"name":"shiftId","in":"path","description":"Shift ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftV2UpdateRequest"}}},"required":true},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftV2Response"},"example":{"id":"f8fb4058-a1a2-43ae-8b0c-e81eabc85665","external_id":"f8fb4058-a1a2-43ae-8b0c-e81eabc85665","punch_in":"2024-06-04T12:08:18.574Z","punch_out":"2024-06-04T19:38:18.574Z","hours":7.5,"rate":2000,"time_created":"2024-06-04T19:38:18.574Z","time_modified":"2024-06-04T19:38:18.574Z","worker_group":"Store #2"}}}},"400":{"description":"Bad Request. If a field provided is invalid, an error response will be returned with a message describing why.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-10-04T23:08:23.954Z","status":"400","error":"Bad Request","message":"Field 'example' was invalid","path":"/v2/organizations/100/workers/abcdef/shifts/f8fb4058-a1a2-43ae-8b0c-e81eabc85665"}}}},"404":{"description":"Not Found. Can occur when an existing shift cannot be found with the provided shift_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-10-04T23:08:23.954Z","status":"404","error":"Not Found","message":"Shift with id ['f8fb4058-a1a2-43ae-8b0c-e81eabc85665'] does not exist","path":"/v2/organizations/100/workers/abcdef/shifts/f8fb4058-a1a2-43ae-8b0c-e81eabc85665"}}}}}},"delete":{"tags":["V2 Shifts"],"summary":"Delete Shift","description":"Delete an existing shift. Requires shift_id to identify which shift to delete. If an existing shift cannot be found with the provided shift_id, call will return 404 - Not Found. Successful call will return status 204 - No Content.","operationId":"delete-shift-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123},{"name":"shiftId","in":"path","description":"Shift ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"204":{"description":"No Content."},"404":{"description":"Not Found. Can occur when an existing shift cannot be found with the provided shift_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-10-04T23:08:23.954Z","status":"404","error":"Not Found","message":"Shift with id ['f8fb4058-a1a2-43ae-8b0c-e81eabc85665'] does not exist","path":"/v2/organizations/100/workers/abcdef/shifts/f8fb4058-a1a2-43ae-8b0c-e81eabc85665"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/shifts":{"post":{"tags":["V2 Shifts"],"summary":"Submit Shift","description":"Submit a person's completed shift. Shifts are used to track hours worked by an individual worker and calculate EWA. Shifts may be created with a shift_id unique within the organization. Successful call will return the created shift and status 201.","operationId":"submit-shift-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftV2CreationRequest"}}},"required":true},"responses":{"201":{"description":"Success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftV2Response"},"example":{"id":"f8fb4058-a1a2-43ae-8b0c-e81eabc85665","external_id":"f8fb4058-a1a2-43ae-8b0c-e81eabc85665","punch_in":"2024-06-04T12:08:18.574Z","punch_out":"2024-06-04T19:38:18.574Z","hours":7.5,"rate":2000,"time_created":"2024-06-04T19:38:18.574Z","time_modified":"2024-06-04T19:38:18.574Z"}}}},"400":{"description":"Bad Request. If a field provided is invalid, an error response will be returned with a message describing why.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-10-04T23:08:23.954Z","status":"400","error":"Bad Request","message":"Field 'example' was invalid","path":"/v2/organizations/100/workers/abcdef/shifts"}}}},"404":{"description":"Not Found. Can occur for example if the worker ID provided does not match an existing worker.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-10-04T23:08:23.954Z","status":"404","error":"Not Found","message":"Worker does not exist for org","path":"/v2/organizations/100/workers/abcdef/shifts"}}}},"409":{"description":"Conflict. Can occur if a shift with matching `external_id` exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-10-04T23:08:23.954Z","status":"409","error":"Conflict","message":"[409]  Conflict. Attempting duplicate timekeeping entry. External id example-id already exists.","path":"/v2/organizations/100/workers/abcdef/shifts"}}}}}}},"/v1/organizations/{orgId}/employees/{employeeId}/shifts/{shiftId}":{"get":{"tags":["Shifts"],"summary":"Get Shift","description":"Get a worker's completed shift. Requires shift_id to identify which shift to retrieve. If an existing shift cannot be found with the provided shift_id, call will return 404 - Not Found. Successful call will return the completed shift.","operationId":"get-shift-v1","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123},{"name":"shiftId","in":"path","description":"Shift ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftDto"}}}},"404":{"description":"Returned if the requested employee or shift was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2025-01-24T22:03:31.048+00:00","status":404,"error":"Not Found","message":"404 NOT_FOUND","path":"/v1/organizations/100019/employees/1/shifts/1"}}}}}},"put":{"tags":["Shifts"],"summary":"Update Shift","description":"Update a worker's completed shift. Requires shift_id to identify which shift to update. If an existing shift cannot be found with the provided shift_id, call will return 404 - Not Found. Requests made with missing required fields or invalid dates/times will return 400 - Bad Request. Successful call will return newly updated shift.","operationId":"update-shift-v1","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123},{"name":"shiftId","in":"path","description":"Shift ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftDto"}}}}}},"delete":{"tags":["Shifts"],"summary":"Delete shift","description":"Delete an existing shift. Requires shift_id to identify which shift to delete. If an existing shift cannot be found with the provided shift_id, call will return 404 - Not Found. Successful call will return status 204 - No Content.","operationId":"delete-shift-v1","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123},{"name":"shiftId","in":"path","description":"Shift ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"204":{"description":"No Content"}}}},"/v1/organizations/{orgId}/employees/{employeeId}/shifts":{"post":{"tags":["Shifts"],"summary":"Submit Shift","description":"Submit a person's completed shift. Shifts are used to track hours worked by an individual employee and calculate EWA. Shifts may be created with a shift_id unique within the organization. Failure to provide a shift_id will cause a UUID to be generated instead.If a duplicate shift_id is provided, call will return 409 - Conflict. Successful call will return the created shift and status 201.","operationId":"submit-shift-v1","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string"},"example":123}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftCreationRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftDto"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/tin-verification":{"get":{"tags":["TIN Verification"],"summary":"Get Worker TIN Verification","description":"Gets a worker's TIN Verification Status.","operationId":"get-worker-tin-verification","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TinVerificationDto"}}}},"404":{"description":"Not Found. Can occur if the worker has no TIN Verification record, or if the worker ID provided does not match an existing worker.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-01-01T11:00:00.000+00:00","status":404,"error":"Not Found","message":"Worker does not exist for org","path":"/v2/organizations/123/workers/456/tin-verification"}}}},"412":{"description":"Precondition Failed. Can occur if organization does not have Tax Filing enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-01-01T11:00:00.000+00:00","status":412,"error":"Precondition Failed","message":"Tax filing is not enabled","path":"/v2/organizations/123/workers/456/tin-verification"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/wallet/transactions":{"get":{"tags":["V2 Wallet"],"summary":"Get Wallet Transactions","description":"Gets a worker's recent wallet transactions.","operationId":"get-wallet-transactions","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123},{"name":"count","in":"query","description":"The number of transactions to retrieve","required":false,"schema":{"type":"integer","format":"int32","default":10,"maximum":100,"minimum":1},"example":10}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionListDto"}}}},"404":{"description":"Not Found. Can occur for example if the worker ID provided does not match an existing worker or the worker does not have a wallet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2025-01-01T12:00:00.000+00:00","status":404,"error":"Not Found","message":"Worker either does not exist for org or does not have a wallet","path":"/v2/organizations/123/workers/456/wallet/transactions"}}}}}}},"/v2/organizations/{orgId}/workers/{workerId}/wallet/balance":{"get":{"tags":["V2 Wallet"],"summary":"Get Wallet Balance","description":"Gets a worker's wallet balance.","operationId":"get-wallet-balance","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"workerId","in":"path","description":"Worker ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletBalanceDto"}}}},"404":{"description":"Not Found. Can occur for example if the worker ID provided does not match an existing worker or the worker does not have a wallet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2025-01-01T12:00:00.000+00:00","status":404,"error":"Not Found","message":"Worker either does not exist for org or does not have a wallet","path":"/v2/organizations/123/workers/456/wallet/balance"}}}},"504":{"description":"Gateway Timeout. Can occur if the server did not return the balance response in a timely manner. Retry the request.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2025-01-01T12:00:00.000+00:00","status":504,"error":"Gateway Timeout","message":"Timeout when retrieving balance","path":"/v2/organizations/123/workers/456/wallet/balance"}}}}}}},"/v1/organizations/{orgId}/employees/{employeeId}/wallets":{"post":{"tags":["Wallet"],"summary":"Create Wallet","description":"Creates a digital wallet for an employee. Optionally allows a Branch card to be automatically ordered for the employee.","operationId":"create-wallet","parameters":[{"name":"X-Test-Mode","in":"header","description":"Enables test scenarios based on the supplied test SSN","required":false,"schema":{"type":"boolean","default":false}},{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string","example":"123","maxLength":512}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWalletCreationRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWalletCreatedSchema"}}}},"400":{"description":"Bad Request. If a field provided is invalid, an error response will be returned with a message describing why.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-01-01T11:00:00.000+00:00","status":400,"error":"Bad Request","message":"Field 'example' was invalid","path":"/v1/organizations/123/employees/456/wallets"}}}},"404":{"description":"Not Found. Can occur for example if the create_employee field is set to false, and the employee ID provided does not match an existing worker.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-01-01T11:00:00.000+00:00","status":404,"error":"Not Found","message":"Employee does not exist for org","path":"/v1/organizations/123/employees/456/wallets"}}}},"409":{"description":"Conflict. Can occur for example if the email address provided matches an account that already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-01-01T11:00:00.000+00:00","status":409,"error":"Conflict","message":"Could not create wallet account for user: An account with the email 'worker@example.com' already exists","path":"/v1/organizations/123/employees/456/wallets"}}}},"429":{"description":"Rate limited. Max 2 wallet creation requests per second.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2023-01-01T11:00:00.000+00:00","status":429,"error":"Too Many Requests","message":"You have exhausted your API Request Quota","path":"/v1/organizations/123/employees/456/wallets"}}}}}}},"/v1/organizations/{orgId}/wallets":{"get":{"tags":["Wallet"],"summary":"Search Wallets","description":"Get a list of wallets for an organization.","operationId":"search-wallets","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaOrganizationWalletDto"}}}}}}},"/v1/organizations/{orgId}/wallet-statuses":{"get":{"tags":["Wallet"],"summary":"Search Wallet Statuses","description":"Get the status of wallets for an organization.","operationId":"search-wallet-statuses","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"page","in":"query","description":"Index of the requested page","required":false,"schema":{"type":"integer","format":"int64","default":1,"description":"Index of the requested page","example":1},"example":1},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":20,"description":"Number of elements in the requested page","example":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageSchemaOrganizationWalletStatusDto"}}}}}}},"/v1/organizations/{orgId}/employees/{employeeId}/wallet":{"get":{"tags":["Wallet"],"summary":"Get Employee Wallet","description":"Get wallet for an employee.\n\nIn sandbox, the following employee IDs are available to return a static wallet response:\n- `ACTIVE_SAMPLE_WORKER_ID`: Returns an active wallet.\n- `NOT_CREATED_SAMPLE_WORKER_ID`: Returns a wallet that has not been created.\n- `CLOSED_SAMPLE_WORKER_ID`: Returns a closed wallet.\n- `NOT_FOUND_SAMPLE_WORKER_ID`: Returns a 404 error indicating the employee was not found.\n","operationId":"get-employee-wallet","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"employeeId","in":"path","description":"Employee ID","required":true,"schema":{"type":"string","description":"Employee ID","example":"123","maxLength":512},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWalletDto"}}}},"404":{"description":"Returned if the requested employee was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"example":{"timestamp":"2025-01-24T22:04:01.734+00:00","status":404,"error":"Not Found","message":"Employee not found","path":"/v1/organizations/100019/employees/1/wallet"}}}}}}},"/v2/organizations/{orgId}/payouts/wallet/{payoutId}":{"get":{"tags":["V2 Wallet Payout Details"],"summary":"Get Wallet Payout","description":"Returns Wallet payout details for a disbursement","operationId":"get-wallet-payout-v2","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int32"},"example":123456},{"name":"payoutId","in":"path","description":"Payout ID","required":true,"schema":{"type":"string"},"example":123}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V2WalletPayoutDto"}}}}}}}},"components":{"schemas":{"ShiftV2Response":{"properties":{"employee_id":{"type":"string","description":"The worker's ID"},"external_id":{"type":"string","description":"The external id of the timekeeping record."},"hours":{"type":"number","format":"double","description":"The hours worked during the shift.","example":7.5},"id":{"type":"string","description":"The id of the timekeeping record."},"punch_in":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for shift start time.","example":"2024-06-04T12:08:18.574Z"},"punch_out":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for shift end time.","example":"2024-06-04T19:38:18.574Z"},"rate":{"type":"integer","format":"int32","description":"The rate, in cents, that the employee gets paid for this shift.","example":2000},"time_created":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for when the timekeeping record was created"},"time_modified":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for when the timekeeping record was last updated"},"worker_group":{"type":"string","description":"A grouping for the worker. This could be anything that is used by your organization in order to group workers: store id, worker tier, region code, etc"}}},"ApiError":{"properties":{"status":{"type":"integer","format":"int32","description":"Numerical error response code","example":123},"error":{"type":"string","description":"Label of the error","example":"Bad Request"},"message":{"type":"string","description":"Detailed reason for the error","example":"An error occurred while processing your request"},"path":{"type":"string","description":"URL pathname the error occurred on","example":"/v1/organizations/123/employees/456/wallets"},"timestamp":{"type":"string","format":"date-time","description":"Time the error occurred","example":"2023-10-04T23:08:23.954Z"}}},"ShiftV2UpdateRequest":{"properties":{"punch_in":{"type":"string","format":"date-time","description":"Time the shift started","example":"2020-02-18T11:42:48Z"},"punch_out":{"type":"string","format":"date-time","description":"Time the shift ended. This does not need to be provided if 'hours' is provided","example":"2020-02-18T19:42:48Z"},"hours":{"type":"number","format":"double","description":"Number of hours worked in the shift. This value cannot be negative. This does not need to be provided if 'punch_out' is provided","example":8,"minimum":0},"rate":{"type":"integer","format":"int32","description":"Amount of money, in cents, the employee made per hour","example":2000},"worker_group":{"type":"string","description":"A grouping for the worker. This could be anything that is used by your organization in order to group workers: store id, worker tier, region code, etc.","example":"Store #2","maxLength":36,"minLength":0}}},"WorkerPaymentProfileUpdateRequest":{"properties":{"type":{"type":"string","description":"The type of the worker payment profile","enum":["WALLET","CARD","NONE"],"example":"WALLET"}},"required":["type"]},"WorkerPaymentProfileCardExampleItem":{"description":"The currently active payment method","properties":{"type":{"type":"string","description":"The type of the worker payment profile","enum":["WALLET","CARD","NONE"],"example":"CARD"},"ref":{"type":"string","description":"The reference URL to GET this worker payment profile","example":"organizations/{organizationID}/employees/{employeeID}/external-cards/{externalCardID}"}}},"WorkerPaymentProfileDto":{"properties":{"additional_payment_methods":{"type":"array","description":"List of other previously-configured payment methods","items":{"$ref":"#/components/schemas/WorkerPaymentProfileItem"}},"payment_method":{"$ref":"#/components/schemas/WorkerPaymentProfileCardExampleItem"}}},"WorkerPaymentProfileItem":{"description":"List of other previously-configured payment methods","properties":{"type":{"type":"string","description":"The type of the worker payment profile","enum":["WALLET","CARD","NONE"],"example":"WALLET"},"ref":{"type":"string","description":"The reference URL to GET this worker payment profile","example":"organizations/{organizationID}/employees/{employeeID}/wallet"}}},"PayrollPeriodUpdateRequest":{"properties":{"payroll_deadline":{"type":"string","format":"date","description":"The date by which workers' pay must be determined.","example":"2000-01-01"},"pay_date":{"type":"string","format":"date","description":"The date individuals will receive payment.","example":"2000-01-01"}}},"PayrollPeriodDto":{"properties":{"id":{"type":"integer","format":"int32","description":"The existing payroll period id.","example":123},"payroll_deadline":{"type":"string","format":"date","description":"The date by which workers' pay must be determined.","example":"2000-01-01"},"pay_date":{"type":"string","format":"date","description":"The date individuals will receive payment.","example":"2000-01-02"}}},"EmployeeUpdateRequest":{"properties":{"first_name":{"type":"string","description":"First name of employee. Numbers not allowed","example":"John","minLength":1},"last_name":{"type":"string","description":"Last name of employee. Numbers not allowed","example":"Larson","minLength":1},"phone_number":{"type":"string","description":"Phone number of employee. Required for Branch Direct","example":"+11235550123"},"email_address":{"type":"string","format":"email","description":"Email address of employee. Required for Branch Direct","example":"worker@branchapp.com"},"type":{"type":"string","description":"The employee's wage type","enum":["HOURLY","SALARY"],"example":"HOURLY"},"pay_rate":{"type":"integer","format":"int32","description":"Rate of pay, in cents, used in conjunction with type. The following should be defined as follows:\n  If type = salary, then should be the annual salary of the employee\n  If type = hourly, then should be the hourly rate the employee earns","example":2000,"minimum":0},"business_name":{"type":"string","description":"A cosmetic descriptor of the employee's workplace","example":"Dunder Mifflin Paper Company"},"group_name":{"type":"string","description":"An additional layer of categorization within an organization allowing for more granular customized settings","example":"GOLD"},"ein":{"type":"string","description":"9 digit employer identification number","example":"XXXXXXXXX"},"password":{"type":"string","description":"Password of the employee","example":"ABC123"},"state":{"type":"string","description":"Valid U.S. 2-character state abbreviation.","example":"MN"}},"required":["first_name","last_name"]},"EmployeeDto":{"properties":{"id":{"type":"string","description":"Unique ID of employee","example":"123"},"first_name":{"type":"string","description":"First name of employee","example":"John"},"last_name":{"type":"string","description":"Last name of employee","example":"Larson"},"phone_number":{"type":"string","description":"Phone number of employee","example":"+11235550123"},"email_address":{"type":"string","description":"Email address of employee","example":"employee@branchapp.com"},"type":{"type":"string","description":"The employee's wage type","enum":["HOURLY","SALARY"],"example":"HOURLY"},"pay_rate":{"type":"integer","format":"int32","description":"Rate of pay, in cents, used in conjunction with type. The following should be defined as follows:\n  If type = salary, then is the annual salary of the employee\n  If type = hourly, then is the hourly rate the employee earns","example":2000},"business_name":{"type":"string","description":"A cosmetic descriptor of the employee's workplace","example":"Dunder Mifflin Paper Company"},"group_name":{"type":"string","description":"An additional layer of categorization within an organization allowing for more granular customized settings","example":"GOLD"},"ein":{"type":"string","description":"9 digit employer identification number","example":"XXXXXXXXX"},"state":{"type":"string","description":"Valid U.S. 2-character state abbreviation.","example":"MN"},"deleted":{"type":"boolean","description":"Status of roster activity","example":true}}},"ShiftUpdateRequest":{"properties":{"punch_in":{"type":"string","format":"date-time","description":"Time the shift started","example":"2020-02-18T11:42:48Z"},"punch_out":{"type":"string","format":"date-time","description":"Time the shift ended. This does not need to be provided if `hours` is provided","example":"2020-02-18T19:42:48Z"},"hours":{"type":"number","format":"double","description":"Number of hours worked in the shift. This does not need to be provided if `punch_out` is provided","example":8},"rate":{"type":"integer","format":"int32","description":"Amount of money, in cents, the employee made per hour/day depending on `shift_type`","example":2000},"shift_type":{"type":"string","description":"Shift type","enum":["Hourly","Daily"],"example":"Hourly"}}},"ShiftDto":{"properties":{"id":{"type":"string","description":"The id of the timekeeping record.","example":"123"},"employee_id":{"type":"string","description":"The worker's ID","example":"123"},"punch_in_time":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for shift start time.","example":"2024-06-04T12:08:18.574Z"},"punch_out_time":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for shift end time.","example":"2024-06-04T19:38:18.574Z"},"rate":{"type":"integer","format":"int32","description":"The rate, in cents, that the employee gets paid for this shift.","example":2000},"shift_type":{"type":"string","description":"Shift type","enum":["Hourly","Daily"]},"pay_period_end":{"type":"string","format":"date","description":"ISO-8601 date for the end of the pay period."},"time_modified":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for when the timekeeping record was last updated"},"worker_group":{"type":"string","description":"A grouping for the worker. This could be anything that is used by your organization in order to group workers: store id, worker tier, region code, etc","example":"Store #1"}}},"EmployeePeriodEarningRequest":{"properties":{"amount":{"type":"integer","format":"int32","description":"Earnings in cents. Must be greater than 0","example":500,"minimum":1},"date":{"type":"string","format":"date","description":"The date of the employee's earning period","example":"2021-06-24","pattern":"yyyy-MM-dd"}}},"EmployeePeriodEarningSummaryDto":{"properties":{"total":{"type":"integer","format":"int32","description":"Total amount in cents of current period earnings for an employee\n","example":2000}}},"ShiftV2CreationRequest":{"properties":{"external_id":{"type":"string","description":"If blank, defaults to UUID","example":"ABC123"},"hours":{"type":"number","format":"double","description":"Number of hours worked in the shift. This value cannot be negative. This does not need to be provided if 'punch_out' is provided","example":8,"minimum":0},"punch_in":{"type":"string","format":"date-time","description":"Time the shift started","example":"2020-02-18T11:42:48Z"},"punch_out":{"type":"string","format":"date-time","description":"Time the shift ended. This does not need to be provided if 'hours' is provided","example":"2020-02-18T19:42:48Z"},"rate":{"type":"integer","format":"int32","description":"Amount of money, in cents, the employee made per hour","example":2000},"worker_group":{"type":"string","description":"A grouping for the worker. This could be anything that is used by your organization in order to group workers: store id, worker tier, region code, etc.","example":"Store #1","maxLength":36,"minLength":0}}},"V2DisbursementCreateRequest":{"properties":{"amount":{"type":"integer","format":"int64","description":"Amount, in cents, to be disbursed to the worker.","example":500,"minimum":0},"external_id":{"type":"string","description":"Allows the custom specification of a unique ID that correlates back to your own records.","example":"123456","maxLength":64,"minLength":0},"type":{"type":"string","description":"`TIP`: Disbursement for a tip earned by worker\n\n`TRIP`: Disbursement for a trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for a delivery made by worker\n\n`DEPOSIT`: Disbursement for a generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","enum":["TIP","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"MILEAGE"},"worker_group":{"type":"string","description":"A grouping for the worker. This could be anything that is used by your organization in order to group workers: store id, worker tier, region code, etc.","example":"Store #1","maxLength":150,"minLength":0},"display_header_label":{"type":"string","description":"The primary label of the disbursement. This will be displayed to the worker in the application. If left blank, will default to the disbursement type or a template value configured in organization settings","example":"Tip","maxLength":32,"minLength":0},"display_sub_label":{"type":"string","description":"The sub label of the disbursement. This will be displayed to the worker in the application. If left blank, will default to the organization name or a template value configured in organization settings","example":"Pizza Delivery Company","maxLength":32,"minLength":0},"description":{"type":"string","description":"The description of the disbursement. This will be displayed in PayAdmin, and is not visible to the worker","example":"Disbursement for miles driven.","maxLength":256,"minLength":0},"retry":{"type":"boolean","default":false,"description":"If a disbursement with matching `external_id` and `type` exists, and `status` != `COMPLETED`, will retry instead of skipping.","example":false},"metadata":{"type":"object","additionalProperties":{"type":"object","description":"Accepts custom JSON. [Format definition](/docs/disbursement-create#disbursement-adjustments)"},"description":"Accepts custom JSON. [Format definition](/docs/disbursement-create#disbursement-adjustments)"},"time_scheduled":{"type":"string","format":"date-time","description":"Date and time at which the specified amount will be disbursed to the worker.","example":"2020-02-18T19:42:48Z"}},"required":["amount","description","external_id","type"]},"DisbursementAdjustmentSchema":{"properties":{"name":{"type":"string","description":"The label of the adjustment","example":"401k"},"amount":{"type":"integer","format":"int32","description":"The amount of the adjustment in cents","example":-1000}}},"DisbursementMetadataSchema":{"description":"Accepts custom JSON. [Format definition](/docs/disbursement-create#disbursement-adjustments)","properties":{"adjustments":{"type":"array","items":{"$ref":"#/components/schemas/DisbursementAdjustmentSchema"}},"custom_key":{"type":"string","description":"A custom entry of the metadata","example":"custom-value"}}},"V2DisbursementDto":{"properties":{"worker_id":{"type":"string","description":"The worker's ID","example":"123"},"amount":{"type":"integer","format":"int64","description":"Amount, in cents, to be disbursed to the worker","example":500},"external_id":{"type":"string","description":"Allows the custom specification of a unique ID that correlates back to your own records. Max 64 characters","example":"123456"},"type":{"type":"string","description":"`TIP`: Disbursement for a tip earned by worker\n\n`TRIP`: Disbursement for a trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for a delivery made by worker\n\n`DEPOSIT`: Disbursement for a generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","enum":["TIP","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM","UNKNOWN"],"example":"TIP"},"worker_group":{"type":"string","description":"A grouping for the worker. This could be anything that is used by your organization in order to group workers: store id, worker tier, region code, etc","example":"Store #1"},"description":{"type":"string","description":"The description of the disbursement. This will be displayed in PayAdmin, and is not visible to the worker","example":"Disbursement for miles driven"},"display_header_label":{"type":"string","description":"The primary label of the disbursement. This will be displayed to the worker in the application. If left blank, will default to the disbursement type or a template value configured in organization settings","example":"Tip"},"display_sub_label":{"type":"string","description":"The sub label of the disbursement. This will be displayed to the worker in the application. If left blank, will default to the organization name or a template value configured in organization settings","example":"Pizza Delivery Company"},"status":{"type":"string","description":"`PENDING`: The disbursement was created, but processing is not yet completed\n\n`SCHEDULED`: The disbursement was created and will be processed at the specified time\n\n`COMPLETED`: Branch successfully disbursed funds\n\n`FAILED`: Funds were unable to be disbursed\n\n`CANCELED`: Funds were not disbursed and no further action will be attempted for the disbursement\n\n`SKIPPED`: The disbursement was not attempted. See `reason_code` for more information\n\n`REVERSED`: The disbursement was completed, then fully reversed\n\n","enum":["PENDING","SCHEDULED","COMPLETED","FAILED","CANCELED","SKIPPED","REVERSED","UNKNOWN"],"example":"COMPLETED"},"reason_code":{"type":"string","description":"`PAYOUT_PENDING`: The disbursement is still in progress\n\n`AMOUNT_ZERO`: The payout was recorded with an amount of $0.00\n\n`RETRY_PERIOD_ELAPSED`: The disbursement already existed and is too old to be attempted again\n\n`RETRY_LIMIT_EXCEEDED`: The disbursement has been retried the max number of allowed attempts\n\n`LIKELY_MATCH_FOUND`: The disbursement was not attempted because another disbursement was identified as a duplicate\n\n`WORKER_NOT_FOUND`: The worker was not found on the active roster\n\n`PAYMENT_PROFILE_NOT_FOUND`: No destination account could be found for the provided worker\n\n`PAYMENT_PROFILE_SUSPENDED`: The destination account is not payable due to suspension\n\n`PAYMENT_PROFILE_NOT_ACTIVE`: The destination account is not payable because it is closed or otherwise inactive\n\n`PAYMENT_PROFILE_FRAUDULENT`: The destination account is not payable because it has been closed for fraud\n\n`TRANSFER_FAILED`: An error occurred while issuing the funds to the worker\n\n`AMOUNT_EXCEEDS_ORG_SINGLE_DISBURSEMENT_LIMIT`: The amount exceeds the organization's limit for a single disbursement\n\n`AMOUNT_EXCEEDS_ORG_DAILY_DISBURSEMENT_LIMIT`: The amount would exceed the organization's daily limit for disbursements\n\n`AMOUNT_EXCEEDS_WORKER_DAILY_DISBURSEMENT_LIMIT`: The amount would exceed the worker's daily limit for disbursements\n\n`AMOUNT_DOES_NOT_COVER_USER_FEES`: The fee to be charged to the worker exceeds or is equal to the disbursement amount\n\n`UNEXPECTED_ERROR`: Something unexpected occurred. Contact Branch support if this persists\n\n","enum":["PAYOUT_PENDING","AMOUNT_ZERO","RETRY_PERIOD_ELAPSED","RETRY_LIMIT_EXCEEDED","LIKELY_MATCH_FOUND","WORKER_NOT_FOUND","PAYMENT_PROFILE_NOT_FOUND","PAYMENT_PROFILE_SUSPENDED","PAYMENT_PROFILE_NOT_ACTIVE","PAYMENT_PROFILE_FRAUDULENT","TRANSFER_FAILED","AMOUNT_EXCEEDS_ORG_SINGLE_DISBURSEMENT_LIMIT","AMOUNT_EXCEEDS_ORG_DAILY_DISBURSEMENT_LIMIT","AMOUNT_EXCEEDS_WORKER_DAILY_DISBURSEMENT_LIMIT","AMOUNT_DOES_NOT_COVER_USER_FEES","UNEXPECTED_ERROR","UNKNOWN"],"example":"WORKER_NOT_FOUND"},"payout":{"$ref":"#/components/schemas/V2DisbursementPayoutDto"},"metadata":{"$ref":"#/components/schemas/DisbursementMetadataSchema"},"time_created":{"type":"string","format":"date-time","description":"The time the disbursement was created"},"time_modified":{"type":"string","format":"date-time","description":"The time the disbursement was last modified"}}},"V2DisbursementPayoutDto":{"description":"Payout details. Will be null if the disbursement has not been paid out","properties":{"id":{"type":"string","description":"The ID of the payout. Depending on the payout type, the format may differ.","example":"123"},"payment_type":{"type":"string","description":"Describes which payment profile type was the destination for the disbursement's funds","enum":["WALLET","CARD","NONE"]},"amount":{"type":"integer","format":"int64","description":"How much of the disbursement was sent to the worker after any fees.","example":500},"fee":{"type":"integer","format":"int64","description":"The fee charged by Branch for the disbursement.","example":100},"org_paid_fee":{"type":"integer","format":"int64","description":"The portion of the fee charged by Branch for the disbursement covered by the organization.","example":50},"time_completed":{"type":"string","format":"date-time","description":"When the money arrived in the worker's account. This is not necessarily when the disbursement was created."}}},"WorkerDirectFormRequest":{"properties":{"token":{"type":"string","description":"The card token generated by the TabaPay debit card form response","example":"TabaPay_AccountID_22ch"},"owner":{"$ref":"#/components/schemas/WorkerDirectFormRequest.Owner"}},"required":["owner","token"]},"WorkerDirectFormRequest.Owner":{"description":"The owner information of the debit card","properties":{"first_name":{"type":"string","description":"The first name of the worker","example":"John","minLength":1},"last_name":{"type":"string","description":"The last name of the worker","example":"Larson","minLength":1},"address":{"$ref":"#/components/schemas/WorkerDirectFormRequest.Owner.Address"}},"required":["address","first_name","last_name"]},"WorkerDirectFormRequest.Owner.Address":{"description":"The mailing address of the worker","properties":{"address_1":{"type":"string","description":"The first line of the mailing address","example":"8035 Pleasant Hill Road","minLength":1},"city":{"type":"string","description":"The city of the mailing address","example":"Minneapolis","minLength":1},"state":{"type":"string","description":"The two-character state code of the mailing address","example":"MN","maxLength":2,"minLength":2},"postal_code":{"type":"string","description":"The postal zip code of the mailing address","example":"55123","minLength":1,"pattern":"^\\d{5}(-\\d{4})?$"}},"required":["address_1","city","postal_code","state"]},"WorkerTabapayExternalCardDto":{"properties":{"id":{"type":"integer","format":"int64","description":"The unique ID of the external card","example":1},"network":{"type":"string","description":"The network of the external card","example":"visa"},"last_four":{"type":"string","description":"The last 4 digits of the external card's PAN","example":"1234"},"time_created":{"type":"string","format":"date-time","description":"The time that the external card was created","example":"2023-01-01T00:00:00Z"}}},"V2ReversalCreateRequest":{"properties":{"amount":{"type":"integer","format":"int64","description":"Amount, in cents, to be reversed against the original disbursement","example":500,"minimum":0},"memo":{"type":"string","description":"A description string that carries through to the reversal ledger entry","example":"Memo content","maxLength":99,"minLength":0},"request_reason":{"type":"string","description":"The reason that the disbursement should be reversed","enum":["DUPLICATE_PAYMENT","INCORRECT_AMOUNT","PAYMENT_TO_WRONG_ACCOUNT","OTHER"],"example":"DUPLICATE_PAYMENT"}},"required":["amount","request_reason"]},"V2ReversalDetailDto":{"description":"Reversal details. Will be null if the reversal has not been completed","properties":{"reference_id":{"type":"string","description":"The Reference ID of the reversal. Depending on the payout type, the format may differ."},"payout_type":{"type":"string","description":"Describes which payment profile type was the destination for the original disbursement"},"amount":{"type":"integer","format":"int64","description":"How much of the original disbursement was reversed with this transaction."},"time_completed":{"type":"string","format":"date-time","description":"When the money was moved from the worker's account"},"time_created":{"type":"string","format":"date-time","description":"When the disbursement reversal was created"}}},"V2ReversalDisbursementDetailDto":{"description":"Original disbursement details","properties":{"external_id":{"type":"string","description":"external_id of the disbursement"},"type":{"type":"string","description":"type of the disbursement","enum":["TIP","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM","UNKNOWN"]}}},"V2ReversalSchemaCreated":{"properties":{"amount":{"type":"integer","format":"int64","description":"Amount, in cents, to be reversed against the original disbursement","example":500},"memo":{"type":"string","description":"A description string that carries through to the reversal ledger entry"},"request_reason":{"type":"string","description":"The reason that the disbursement should be reversed","enum":["DUPLICATE_PAYMENT","INCORRECT_AMOUNT","PAYMENT_TO_WRONG_ACCOUNT","OTHER"],"example":"DUPLICATE_PAYMENT"},"disbursement":{"$ref":"#/components/schemas/V2ReversalDisbursementDetailDto"},"time_modified":{"type":"string","format":"date-time","description":"When the disbursement reversal was modified"},"time_created":{"type":"string","format":"date-time","description":"When the disbursement reversal was created"},"status":{"type":"string","description":"CREATED: A disbursement reversal has been created","enum":["CREATED"],"example":"CREATED"},"reversal":{"$ref":"#/components/schemas/V2ReversalDetailDto"}}},"V2ReversalSchemaFailed":{"properties":{"amount":{"type":"integer","format":"int64","description":"Amount, in cents, to be reversed against the original disbursement","example":500},"memo":{"type":"string","description":"A description string that carries through to the reversal ledger entry"},"request_reason":{"type":"string","description":"The reason that the disbursement should be reversed","enum":["DUPLICATE_PAYMENT","INCORRECT_AMOUNT","PAYMENT_TO_WRONG_ACCOUNT","OTHER"],"example":"DUPLICATE_PAYMENT"},"disbursement":{"$ref":"#/components/schemas/V2ReversalDisbursementDetailDto"},"time_modified":{"type":"string","format":"date-time","description":"When the disbursement reversal was modified"},"time_created":{"type":"string","format":"date-time","description":"When the disbursement reversal was created"},"status":{"type":"string","description":"PENDING: The reversal was created, but processing is not yet completed\n\nFAILED: Funds were unable to be reversed\n","enum":["PENDING","FAILED"],"example":"PENDING"},"reason_code":{"type":"string","description":"`REVERSAL_PENDING`: The reversal is still in progress\n\n`TRANSFER_FAILED`: An error occurred while returning the funds from the worker\n\n`REVERSAL_TIMELIMIT_EXPIRED`: The timelimit allowed to reverse the disbursement has lapsed\n\n`PAYOUT_TYPE_NOT_SUPPORTED`: The original disbursement payout type does not support reversals\n\n`DISBURSEMENT_STATUS_NOT_SUPPORTED`: The original disbursement is not in a final status that can be reversed\n\n`AMOUNT_ZERO`: The reversal was recorded with an amount of $0.00\n\n`AMOUNT_GREATER_THAN_DISBURSEMENT`: The requested reversal amount exceeds the original disbursement amount\n\n`INSUFFICIENT_FUNDS`: The worker account does not have sufficient funds to issue a reversal of the amount requested\n\n`UNEXPECTED_ERROR`: Something unexpected occurred. Contact Branch support if this persists\n\n","enum":["REVERSAL_PENDING","TRANSFER_FAILED","REVERSAL_TIMELIMIT_EXPIRED","PAYOUT_TYPE_NOT_SUPPORTED","DISBURSEMENT_STATUS_NOT_SUPPORTED","AMOUNT_ZERO","AMOUNT_GREATER_THAN_DISBURSEMENT","INSUFFICIENT_FUNDS","UNEXPECTED_ERROR"],"example":"REVERSAL_PENDING"}}},"DisbursementFeeCalculationRequest":{"properties":{"amount":{"type":"integer","format":"int64","description":"The disbursement amount, in cents, used to calculate the fee","example":500,"minimum":1},"payment_method_type":{"type":"string","description":"The payment method type of the disbursement","enum":["CARD","WALLET"],"example":"CARD"}},"required":["payment_method_type"]},"DisbursementFeeCalculation":{"properties":{"disbursement":{"type":"integer","format":"int64","description":"Amount of the original disbursement in cents"},"sent_to_worker":{"type":"integer","format":"int64","description":"Amount sent to the worker in cents, after any fees were deducted"},"user_paid_fee":{"type":"integer","format":"int64","description":"Amount in cents the user paid as a fee"},"error_reason_code":{"type":"string","description":"Error reason code if disbursement calculations were not successful","enum":["AMOUNT_DOES_NOT_COVER_FEES","EXPECTED_ORG_FEES_NOT_CALCULATED"]}}},"DeductionCreationRequest":{"properties":{"employee_id":{"type":"string","description":"The employee's ID","example":"123","minLength":1},"amount":{"type":"integer","format":"int32","description":"Amount, in cents, that was successfully deducted for the employee","example":500,"minimum":0}},"required":["employee_id"]},"PayrollCalendarCreationRequest":{"properties":{"payroll_periods":{"type":"array","description":"The list of payroll periods creation requests for the calendar.","items":{"$ref":"#/components/schemas/PayrollPeriodCreationRequest"}}}},"PayrollPeriodCreationRequest":{"description":"The list of payroll periods creation requests for the calendar.","properties":{"payroll_deadline":{"type":"string","format":"date","description":"The date by which workers' pay must be determined.","example":"2000-01-01"},"pay_date":{"type":"string","format":"date","description":"The date individuals will receive payment.","example":"2000-01-01"}}},"PayrollCalendarDto":{"properties":{"payroll_periods":{"type":"array","description":"The list of payroll periods in the calendar.","items":{"$ref":"#/components/schemas/PayrollPeriodDto"}}}},"EmployeeCreationRequest":{"properties":{"first_name":{"type":"string","description":"First name of employee. Numbers not allowed","example":"John","minLength":1},"last_name":{"type":"string","description":"Last name of employee. Numbers not allowed","example":"Larson","minLength":1},"phone_number":{"type":"string","description":"Phone number of employee. Required for Branch Direct","example":"+11235550123"},"email_address":{"type":"string","format":"email","description":"Email address of employee. Required for Branch Direct","example":"worker@branchapp.com"},"type":{"type":"string","description":"The employee's wage type","enum":["HOURLY","SALARY"],"example":"HOURLY"},"pay_rate":{"type":"integer","format":"int32","description":"Rate of pay, in cents, used in conjunction with type. The following should be defined as follows:\n  If type = salary, then should be the annual salary of the employee\n  If type = hourly, then should be the hourly rate the employee earns","example":2000,"minimum":0},"business_name":{"type":"string","description":"A cosmetic descriptor of the employee's workplace","example":"Dunder Mifflin Paper Company"},"group_name":{"type":"string","description":"An additional layer of categorization within an organization allowing for more granular customized settings","example":"GOLD"},"ein":{"type":"string","description":"9 digit employer identification number","example":"XXXXXXXXX"},"password":{"type":"string","description":"Password of the employee","example":"ABC123"},"state":{"type":"string","description":"Valid U.S. 2-character state abbreviation.","example":"MN"}},"required":["first_name","last_name"]},"OrganizationWalletCreatedSchema":{"properties":{"employee_id":{"type":"string","description":"The employee's ID","example":"123"},"account_number":{"type":"string","description":"The wallet's bank account number","example":"000000000000"},"routing_number":{"type":"string","description":"The wallet's bank routing number","example":"123456789"},"has_activated_card":{"type":"boolean","description":"Whether the wallet's associated physical card has been activated"},"status":{"type":"string","description":"##### Basic Statuses:\n\n`CREATED`: A wallet has been created.\n\n`CLOSED`: A wallet has been closed.\n\n`PENDING`: We are attempting to create the wallet. It is not yet available for disbursing funds.\n\n`UNCLAIMED`: A wallet has been created and is able to receive funds through the API, but the employee has not signed up with Branch yet.\n\n`ACTIVE`: A wallet has been created for an employee and they are in control of it.\n\n##### v1.01 Statuses:\n\n`REVIEW`: The user has been flagged for manual review.\n\n`FAILED`: A failure occurred during wallet creation.\n\n","enum":["PENDING","REVIEW","CREATED","UNCLAIMED","ACTIVE","FAILED","CLOSED"],"example":"ACTIVE"},"reason_code":{"type":"string","description":"##### Basic Reason Codes:\n\n`ADDITIONAL_DOCS_REQ`: Branch was not able to confirm identity with the information provided. The user will have to provide additional documentation, like a driver's license, in order to get a wallet on Branch.\n\n`FRAUD_CHECK_REQ`: Branch is performing checks to ensure that the user is not linked in any way to fraudulent activity. Once finished, this user's wallet will be activated. Until then, the wallet that was created for the user will not be able to be funded in any way.\n\n`CONFIRMED_FRAUD`: Branch determined this user to behave in fraudulent activities. As a result, the user will not be allowed to have a wallet on the platform. The wallet created for them will remain closed.\n\n`DENIED`: For one reason or another, the user has been denied access to the platform.\n\n`ERROR`: A system error occurred, please try again.\n\n\n##### v1.01 Reason Codes:\n\n`KYC_SSN_INVALID`: KYC verification failed due to invalid social security number\n\n`KYC_PII_SSN_MISMATCH`: KYC verification failed due to invalid personal information (name, birthdate)\n\n`KYC_DECEASED`: KYC verification failed due to person reported deceased\n\n`KYC_PO_BOX_NOT_ALLOWED`: KYC verification failed due to PO Box address\n\n`KYC_ERROR`: Unexpected error occurred during KYC step\n\n`ACCOUNT_SUSPENDED`: Wallet account was suspended due to failed KYC fraud checks\n\n`ACCOUNT_WITH_EMAIL_EXISTS`: Another Branch account already uses the same email\n\n`EMPLOYEE_NOT_FOUND`: Employee was not found\n\n`EMPLOYEE_UNDER_AGE`: Employee was not of the minimum age to create an account\n\n`EMPLOYEE_ALREADY_LINKED`: Employee was already linked to another user account\n\n","enum":["FRAUD_CHECK_REQ","ADDITIONAL_DOCS_REQ","CONFIRMED_FRAUD","USER_REQUESTED","TERMS_OF_SERVICE_VIOLATION","DENIED","KYC_SSN_INVALID","KYC_PII_SSN_MISMATCH","KYC_DECEASED","KYC_PO_BOX_NOT_ALLOWED","KYC_ERROR","ACCOUNT_SUSPENDED","ACCOUNT_WITH_EMAIL_EXISTS","EMPLOYEE_NOT_FOUND","EMPLOYEE_UNDER_AGE","EMPLOYEE_ALREADY_LINKED","ERROR"],"example":"ADDITIONAL_DOCS_REQ"},"reason":{"type":"string","description":"A short message explaining the `reason_code` field. This may or may not provide additional\ncontext for the `reason_code`.\n","example":"Branch was not able to confirm identity with the information provided."},"onboarding_link":{"type":"string","description":"If the wallet was initiated by the organization, will be populated with a link\nwith which the employee can utilize to streamline onboarding.\n"},"kyc_additional_documentation_link":{"type":"string","description":"A link to additional documentation for KYC"},"ein":{"type":"string","description":"9 digit Employer Identification Number. Format: XXXXXXXXX","example":"123456789"},"business_name":{"type":"string","description":"Business name for the user.","example":"Dunder Mifflin Paper Company"},"time_last_initialization_attempted":{"type":"string","format":"date-time","description":"The last time wallet initialization was attempted"},"time_created":{"type":"string","format":"date-time","description":"The time the wallet was created"}}},"Address":{"properties":{"address_1":{"type":"string","description":"The first line of the mailing address","example":"8035 Pleasant Hill Road","maxLength":255,"minLength":1},"address_2":{"type":"string","description":"The second line of the mailing address","example":"Suite 103","maxLength":255,"minLength":0},"city":{"type":"string","description":"The city of the mailing address","example":"Minneapolis","maxLength":40,"minLength":1},"state":{"type":"string","description":"The two-character state code of the mailing address","example":"MN","maxLength":2,"minLength":2},"postal_code":{"type":"string","description":"The postal zip code of the mailing address. Format either ##### or #####-####","example":"55123","maxLength":10,"minLength":1,"pattern":"^\\d{5}(-\\d{4}){0,1}$"},"country_code":{"type":"string","default":"US","description":"Country code as 2-letter ISO-3166 format.","example":"US","maxLength":2,"minLength":2}},"required":["address_1","city","postal_code","state"]},"OrganizationWalletCreationRequest":{"properties":{"first_name":{"type":"string","description":"The worker's first name (numbers not allowed)","example":"John","maxLength":40,"minLength":1},"middle_name":{"type":"string","description":"The worker's middle name (numbers not allowed)","example":"William","maxLength":40,"minLength":0},"last_name":{"type":"string","description":"The worker's last name (numbers not allowed)","example":"Larson","maxLength":40,"minLength":1},"address":{"$ref":"#/components/schemas/Address"},"date_of_birth":{"type":"string","description":"Birthdate provided must indicate greater than 14 years of age. Some organizations may not allow accounts if the age is not 18 or greater.","example":"2000-01-01","minLength":1,"pattern":"[0-9]{4}-[0-9]{2}-[0-9]{2}"},"ssn":{"type":"string","description":"The worker's Social Security Number","example":"123456789","minLength":1,"pattern":"[0-9]{9}"},"phone_number":{"type":"string","description":"The worker's phone number","example":"+11235550123"},"email_address":{"type":"string","format":"email","description":"The worker's email address","example":"worker@branchapp.com","maxLength":255,"minLength":1},"type":{"type":"string","description":"The worker's wage type","enum":["HOURLY","SALARY"],"example":"HOURLY"},"pay_rate":{"type":"integer","format":"int32","description":"Rate of pay, in cents, used in conjunction with type. The following should be defined as follows:\n  If type = salary, then should be the annual salary of the employee\n  If type = hourly, then should be the hourly rate the employee earns","example":1500,"minimum":0},"group_name":{"type":"string","description":"An additional layer of categorization within an organization allowing for more granular customized settings","example":"GOLD"},"create_employee":{"type":"boolean","default":false,"description":"If true and the employee does not already exist, will create the employee with the given information.","example":false},"order_card":{"type":"boolean","default":false,"description":"If true, a physical card will be shipped to the user when the wallet is claimed.","example":false},"card_program":{"type":"string","description":"Specifies which card should be ordered and delivered to the user. Available options for an organization can be found by querying the card-controller -> getCardPrograms endpoint.Default is organization's default card program - generally `BRANCH_W2`","example":"BRANCH_W2"},"ein":{"type":"string","description":"9 digit employer identification number","example":"XXXXXXXXX"},"business_name":{"type":"string","description":"A cosmetic descriptor of the employee's workplace","example":"Dunder Mifflin Paper Company"}},"required":["address","date_of_birth","email_address","first_name","last_name","phone_number","ssn"]},"ShiftCreationRequest":{"properties":{"id":{"type":"string","description":"If blank, defaults to UUID","example":"ABC123"},"punch_in":{"type":"string","format":"date-time","description":"Time the shift started","example":"2020-02-18T11:42:48Z"},"punch_out":{"type":"string","format":"date-time","description":"Time the shift ended. This does not need to be provided if `hours` is provided","example":"2020-02-18T19:42:48Z"},"hours":{"type":"number","format":"double","description":"Number of hours worked in the shift. This value cannot be negative. This does not need to be provided if `punch_out` is provided","example":8,"minimum":0},"rate":{"type":"integer","format":"int32","description":"Amount of money, in cents, the employee made per hour/day depending on `shift_type`","example":2000},"shift_type":{"type":"string","description":"Shift type","enum":["Hourly","Daily"],"example":"Hourly"}},"required":["shift_type"]},"DisbursementCreationRequest":{"properties":{"amount":{"type":"integer","format":"int64","description":"Amount, in cents, to be disbursed to the employee.","example":500,"minimum":0},"external_id":{"type":"string","description":"Allows the custom specification of a unique ID that correlates back to your own records.","example":"123456","maxLength":64,"minLength":0},"type":{"type":"string","description":"`TIPS`: Disbursement for tips earned by worker\n\n`TRIP`: Disbursement for trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for delivery made by worker\n\n`DEPOSIT`: Disbursement for generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","enum":["TIPS","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM"],"example":"MILEAGE"},"employee_group":{"type":"string","description":"A grouping for the employee. This could be anything that is used by your organization in order to group employees: store id, employee tier, region code, etc.","example":"Store #1","maxLength":150,"minLength":0},"display_sub_label":{"type":"string","description":"The sub label of the disbursement. This will be displayed to the employee in the application. If left blank, will default to the organization name or a template value configured in organization settings","example":"Pizza Delivery Company","maxLength":150,"minLength":0},"description":{"type":"string","description":"The description of the disbursement. This will be displayed in PayAdmin, and is not visible to the employee","example":"Disbursement for miles driven.","maxLength":256,"minLength":0},"retry":{"type":"boolean","default":false,"description":"If a disbursement with matching `external_id` and `type` exists, and `status` != `COMPLETED`, will retry instead of skipping."},"metadata":{"type":"object","additionalProperties":{"type":"object","description":"Accepts custom JSON. [Format definition](/docs/disbursement-create#disbursement-adjustments)"},"description":"Accepts custom JSON. [Format definition](/docs/disbursement-create#disbursement-adjustments)"},"time_scheduled":{"type":"string","format":"date-time","description":"Date and time at which the specified amount will be disbursed to the employee.","example":"2020-02-21T19:42:48Z"}},"required":["amount","description","external_id","type"]},"DisbursementDto":{"properties":{"employee_id":{"type":"string","description":"The employee's ID","example":"123"},"amount":{"type":"integer","format":"int64","description":"Amount, in cents, to be disbursed to the employee","example":500},"external_id":{"type":"string","description":"Allows the custom specification of a unique ID that correlates back to your own records. Max 64 characters","example":"123456"},"type":{"type":"string","description":"`TIPS`: Disbursement for tips earned by worker\n\n`TRIP`: Disbursement for trip made by worker\n\n`MILEAGE`: Disbursement for miles driven by worker\n\n`PAYCHECK`: Disbursement for income earned by worker\n\n`MISCELLANEOUS`: Disbursement to worker for miscellaneous reasons\n\n`DEVICE`: Disbursement for a worker’s device\n\n`DELIVERY`: Disbursement for delivery made by worker\n\n`DEPOSIT`: Disbursement for generic purposes\n\n`REWARD`: Disbursement for a reward earned\n\n`PER_DIEM`: Disbursement for per diem reimbursement\n\n`BONUS`: Disbursement representing a non-usual payment\n\n","enum":["TIPS","TRIP","MILEAGE","PAYCHECK","MISCELLANEOUS","DEVICE","DELIVERY","DEPOSIT","BONUS","REWARD","PER_DIEM","UNKNOWN"],"example":"MILEAGE"},"employee_group":{"type":"string","description":"A grouping for the employee. This could be anything that is used by your organization in order to group employees: store id, employee tier, region code, etc","example":"Store #1"},"description":{"type":"string","description":"The description of the disbursement. This will be displayed in PayAdmin, and is not visible to the employee","example":"Disbursement for miles driven"},"display_sub_label":{"type":"string","description":"The sub label of the disbursement. This will be displayed to the employee in the application. If left blank, will default to the organization name or a template value configured in organization settings","example":"Pizza Delivery Company"},"status":{"type":"string","description":"`CREATED`: The disbursement was created and Branch is attempting to disburse funds\n\n`ATTEMPTING_PAYBACK`: Branch successfully disbursed funds and is attempting pay back for the disbursement\n\n`PAYBACK_FAILED`: Branch successfully disbursed funds but was unable to complete pay back for the disbursement\n\n`COMPLETED`: Branch successfully disbursed funds\n\n`FAILED`: Funds were unable to be disbursed\n\n`CANCELLED`: Funds were not disbursed and no further action will be attempted for the disbursement\n\n","enum":["CREATED","ATTEMPTING_PAYBACK","PAYBACK_FAILED","COMPLETED","FAILED","SKIPPED","CANCELLED","SCHEDULED","UNKNOWN"],"example":"CREATED"},"status_reason":{"type":"string","description":"A human-readable description of the consistent system-usable `reason_code`","example":"The worker is not found on the active roster."},"reason_code":{"type":"string","description":"`WORKER_NOT_MATCHED`: The worker is not linked to a Branch account.\n\n`WORKER_NOT_FOUND`: The worker is not found on the active roster.\n\n`AMOUNT_ZERO`: The payout was recorded with an amount of $0.00.\n\n`WALLET_SUSPENDED`: The worker's wallet is suspended.\n\n`WALLET_NOT_FOUND`: The worker's wallet was not found.\n\n`WALLET_NOT_ACTIVE`: The worker's wallet is inactive.\n\n`AMOUNT_TOO_LARGE`: The requested amount exceeds the organization's limit.\n\n`AMOUNT_DOES_NOT_COVER_FEES`: The fee to be charged to the worker exceeds or is equal to the disbursement amount.\n\n`DAILY_DISBURSEMENT_LIMIT_MET`: The amount would exceed the organization's daily limit for disbursements.\n\n`WORKERS_DAILY_LIMIT_MET`: The amount would exceed the worker's daily limit for disbursements.\n\n`INVOICING_FAILED`: The payout succeeded, but something went wrong during invoicing. Safe to retry.\n\n`RETRY_PERIOD_ELAPSED`: The disbursement is too old to be retried.\n\n`LIKELY_MATCH_FOUND`: The disbursement was not attempted because another disbursement was identified as a duplicate.\n\n`TRANSFER_FAILED`: An error occurred while issuing the funds to the worker.\n\n`UNEXPECTED_ERROR`: There was an unexpected error. Contact Branch Support.\n\n`PENDING`: Disbursement is Pending. Check status intermittently for completion.\n\n","enum":["UNEXPECTED_ERROR","WORKER_NOT_MATCHED","WORKER_NOT_FOUND","TRANSFER_FAILED","WALLET_SUSPENDED","WALLET_NOT_FOUND","WALLET_NOT_ACTIVE","AMOUNT_ZERO","AMOUNT_TOO_LARGE","AMOUNT_DOES_NOT_COVER_FEES","DAILY_DISBURSEMENT_LIMIT_MET","WORKERS_DAILY_LIMIT_MET","INVOICING_FAILED","RETRY_PERIOD_ELAPSED","LIKELY_MATCH_FOUND","PENDING"],"example":"WORKER_NOT_FOUND"},"metadata":{"$ref":"#/components/schemas/DisbursementMetadataSchema"},"time_created":{"type":"string","format":"date-time","description":"The time the disbursement was created"},"time_modified":{"type":"string","format":"date-time","description":"The time the disbursement was last modified"}}},"RemittanceUpdateRequest":{"properties":{"status":{"type":"string","enum":["COMPLETED"],"pattern":"COMPLETED"}},"required":["status"]},"TransactionDto":{"description":"List of transactions","properties":{"id":{"type":"string","description":"Transaction ID","example":"e5fd500c-aaa-bbb-ccc-414db94eb5c0"},"formatted_type":{"type":"string","description":"Formatted Transaction Type","example":"Example Transaction Type"},"pending":{"type":"boolean","description":"Indicates whether the Transaction is pending or not"},"description":{"type":"string","description":"Transaction Description","example":"Example Description"},"amount":{"type":"integer","format":"int64","description":"The amount, in cents, of the Transaction","example":500},"merchant_name":{"type":"string","description":"Merchant Name","example":"Example Merchant"},"timestamp":{"type":"string","description":"ISO-8601 date-time when the worker initiated the Transaction","example":"2025-01-01T12:00:00Z"}}},"TransactionListDto":{"properties":{"transactions":{"type":"array","description":"List of transactions","items":{"$ref":"#/components/schemas/TransactionDto"}}}},"WalletBalanceDto":{"properties":{"available_balance":{"type":"integer","format":"int64","description":"The available Wallet balance, in cents","example":500},"time_updated":{"type":"string","format":"date-time","description":"ISO-8601 date-time when the available Wallet balance was updated","example":"2025-01-01T12:00:00Z"}}},"TinVerificationDto":{"properties":{"worker_id":{"type":"string","description":"The unique identifier for this worker","example":"123"},"status":{"type":"string","description":"The current status of the worker’s TIN Verification","enum":["MATCH","MISMATCH","MISSING_TIN"]},"time_created":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for when the TIN Verification record was created","example":"2024-06-04T12:08:18.574Z"},"time_modified":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for when the TIN Verification record was last updated","example":"2024-06-04T12:08:18.574Z"}}},"RewardLifetimeSummaryDto":{"properties":{"total_amount":{"type":"integer","format":"int64","description":"The total amount, in cents, of rewards earned","example":100}}},"EwaAvailableBalanceResponse":{"description":"Available EWA balance for the worker","properties":{"available_balance":{"type":"integer","format":"int64","description":"The worker's available EWA balance in cents","example":5000}}},"EwaAccountResponse":{"description":"EWA account for the worker","properties":{"status":{"type":"string","description":"`PENDING_VERIFICATION`: EWA account is missing necessary information and is pending verification\n\n`VERIFICATION_IN_PROGRESS`: EWA account verification is in progress\n\n`ACTIVE`: EWA account has been verified and is active\n\n`FAILED`: EWA account verification has failed\n\n`SUSPENDED`: EWA account is suspended","enum":["PENDING_VERIFICATION","VERIFICATION_IN_PROGRESS","ACTIVE","FAILED","SUSPENDED"]}}},"ApiCursorPageSchemaV2DisbursementDto":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/V2DisbursementDto"}},"prev_cursor":{"type":"string","description":"Cursor formatted as a Base64-encoded JSON object containing the ID of the first element on the page.","example":"eyJ1IjoiMTc4MCJ9"},"next_cursor":{"type":"string","description":"Cursor formatted as a Base64-encoded JSON object containing the ID of the last element on the page.","example":"eyJ1IjoiMjg2MiJ9"},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"has_more":{"type":"boolean","description":"Whether another page exists","example":true}}},"V2WalletPayoutDto":{"properties":{"id":{"type":"string","description":"The ID of the payout.","example":"123"},"amount":{"type":"integer","format":"int64","description":"How much of the disbursement was sent to the worker after any fees.","example":500},"fee":{"type":"integer","format":"int64","description":"The fee charged by Branch for the disbursement.","example":100},"org_paid_fee":{"type":"integer","format":"int64","description":"The portion of the fee charged by Branch for the disbursement covered by the organization.","example":50},"account_number":{"type":"string","description":"The account number of the Branch Wallet.","example":"000000000000"},"routing_number":{"type":"string","description":"The routing number of the Branch Wallet.","example":"123456789"},"time_completed":{"type":"string","format":"date-time","description":"When the money arrived in the worker's account. This is not necessarily when the disbursement was created."}}},"V2CardPayoutDto":{"properties":{"id":{"type":"string","description":"The ID of the payout.","example":"123"},"amount":{"type":"integer","format":"int64","description":"How much of the disbursement was sent to the worker after any fees.","example":500},"fee":{"type":"integer","format":"int64","description":"The fee charged by Branch for the disbursement.","example":100},"org_paid_fee":{"type":"integer","format":"int64","description":"The portion of the fee charged by Branch for the disbursement covered by the organization.","example":50},"last_four":{"type":"string","description":"The last four digits of the card number.","example":"1234"},"network":{"type":"string","description":"The network of the card.","example":"MASTERCARD"},"time_completed":{"type":"string","format":"date-time","description":"When the money arrived in the worker's account. This is not necessarily when the disbursement was created."}}},"PageSlimWorkerTabapayExternalCardDto":{"properties":{"content":{"type":"array","description":"The list of returned elements","items":{"$ref":"#/components/schemas/WorkerTabapayExternalCardDto"}},"page_number":{"type":"integer","format":"int64","default":1,"description":"The current page number","example":1},"size":{"type":"integer","format":"int64","default":20,"description":"The max number of elements returned per page","example":20}}},"V2ReversalDto":{"description":"List of elements on the page","properties":{"amount":{"type":"integer","format":"int64","description":"Amount, in cents, to be reversed against the original disbursement","example":500},"memo":{"type":"string","description":"A description string that carries through to the reversal ledger entry","example":"Memo content"},"request_reason":{"type":"string","description":"The reason that the disbursement should be reversed","enum":["DUPLICATE_PAYMENT","INCORRECT_AMOUNT","PAYMENT_TO_WRONG_ACCOUNT","OTHER"],"example":"DUPLICATE_PAYMENT"},"status":{"type":"string","description":"`PENDING`: The reversal was created, but processing is not yet completed\n\n`COMPLETED`: Branch successfully reversed the disbursement\n\n`FAILED`: Funds were unable to be reversed from the disbursement\n\n","enum":["PENDING","COMPLETED","FAILED"],"example":"COMPLETED"},"reason_code":{"type":"string","description":"`REVERSAL_PENDING`: The reversal is still in progress\n\n`TRANSFER_FAILED`: An error occurred while returning the funds from the worker\n\n`REVERSAL_TIMELIMIT_EXPIRED`: The timelimit allowed to reverse the disbursement has lapsed\n\n`PAYOUT_TYPE_NOT_SUPPORTED`: The original disbursement payout type does not support reversals\n\n`DISBURSEMENT_STATUS_NOT_SUPPORTED`: The original disbursement is not in a final status that can be reversed\n\n`AMOUNT_ZERO`: The reversal was recorded with an amount of $0.00\n\n`AMOUNT_GREATER_THAN_DISBURSEMENT`: The requested reversal amount exceeds the original disbursement amount\n\n`INSUFFICIENT_FUNDS`: The worker account does not have sufficient funds to issue a reversal of the amount requested\n\n`UNEXPECTED_ERROR`: Something unexpected occurred. Contact Branch support if this persists\n\n","enum":["REVERSAL_PENDING","TRANSFER_FAILED","REVERSAL_TIMELIMIT_EXPIRED","PAYOUT_TYPE_NOT_SUPPORTED","DISBURSEMENT_STATUS_NOT_SUPPORTED","AMOUNT_ZERO","AMOUNT_GREATER_THAN_DISBURSEMENT","INSUFFICIENT_FUNDS","UNEXPECTED_ERROR"],"example":"DISBURSEMENT_NOT_FOUND"},"reversal":{"$ref":"#/components/schemas/V2ReversalDetailDto"},"disbursement":{"$ref":"#/components/schemas/V2ReversalDisbursementDetailDto"},"time_created":{"type":"string","format":"date-time","description":"When the disbursement reversal was created"},"time_modified":{"type":"string","format":"date-time","description":"When the disbursement reversal was last modified"}}},"V2SearchReversalSchema":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/V2ReversalDto"}},"prev_cursor":{"type":"string","description":"Cursor formatted as a Base64-encoded JSON object containing the ID of the first element on the page.","example":"eyJ1IjoiMTc4MCJ9"},"next_cursor":{"type":"string","description":"Cursor formatted as a Base64-encoded JSON object containing the ID of the last element on the page.","example":"eyJ1IjoiMjg2MiJ9"},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"has_more":{"type":"boolean","description":"Whether another page exists","example":true}}},"DisbursementFeeSettingsDto":{"properties":{"payout_fee_type":{"type":"string","description":"The type of disbursements that this fee applies to","enum":["INSTANT"]},"base_fee":{"type":"integer","format":"int64","description":"The minimum fee that will be charged for a disbursement in cents","example":100},"fee_percent":{"type":"number","description":"The percent of the disbursement that will be charged as a fee, if greater than the base_fee","example":5}}},"OrganizationDto":{"description":"List of elements on the page","properties":{"id":{"type":"integer","format":"int32","description":"The numerical unique identifier of the organization","example":123456},"org_key":{"type":"string","description":"The string unique identifier of the organization","example":"pizza-delivery-company"},"name":{"type":"string","description":"The display name of the organization","example":"Pizza Delivery Company"}}},"PageSchemaOrganizationDto":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/OrganizationDto"}},"page_number":{"type":"integer","format":"int64","description":"Index of the current page","example":2},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"total_pages":{"type":"integer","format":"int64","description":"Number of total pages","example":5},"total_number_of_elements":{"type":"integer","format":"int64","description":"Number of total elements","example":100},"has_next_page":{"type":"boolean","description":"Whether another page exists","example":true},"has_prev_page":{"type":"boolean","description":"Whether a previous page exists","example":true},"next_page":{"type":"string","description":"URL to GET the next page","example":"/elements?page=3"},"prev_page":{"type":"string","description":"URL to GET the previous page","example":"/elements?page=1"}}},"OrganizationWalletDto":{"properties":{"employee_id":{"type":"string","description":"The employee's ID","example":"123"},"account_number":{"type":"string","description":"The wallet's bank account number","example":"000000000000"},"routing_number":{"type":"string","description":"The wallet's bank routing number","example":"123456789"},"has_activated_card":{"type":"boolean","description":"Whether the wallet's associated physical card has been activated"},"status":{"type":"string","description":"##### Basic Statuses:\n\n`NOT_CREATED`: A wallet has not yet been created.\n\n`CREATED`: A wallet has been created.\n\n`CLOSED`: A wallet has been closed.\n\n`PENDING`: We are attempting to create the wallet. It is not yet available for disbursing funds.\n\n`UNCLAIMED`: A wallet has been created and is able to receive funds through the API, but the employee has not signed up with Branch yet.\n\n`ACTIVE`: A wallet has been created for an employee and they are in control of it.\n\n##### v1.01 Statuses:\n\n`REVIEW`: The user has been flagged for manual review.\n\n`FAILED`: A failure occurred during wallet creation.\n\n","enum":["NOT_CREATED","PENDING","REVIEW","CREATED","UNCLAIMED","ACTIVE","FAILED","SUSPENDED","CLOSED","PENDING_CLOSURE"],"example":"ACTIVE"},"reason_code":{"type":"string","description":"##### Basic Reason Codes:\n\n`ADDITIONAL_DOCS_REQ`: Branch was not able to confirm identity with the information provided. The user will have to provide additional documentation, like a driver's license, in order to get a wallet on Branch.\n\n`FRAUD_CHECK_REQ`: Branch is performing checks to ensure that the user is not linked in any way to fraudulent activity. Once finished, this user's wallet will be activated. Until then, the wallet that was created for the user will not be able to be funded in any way.\n\n`CONFIRMED_FRAUD`: Branch determined this user to behave in fraudulent activities. As a result, the user will not be allowed to have a wallet on the platform. The wallet created for them will remain closed.\n\n`DENIED`: For one reason or another, the user has been denied access to the platform.\n\n`ERROR`: A system error occurred, please try again.\n\n\n##### v1.01 Reason Codes:\n\n`KYC_SSN_INVALID`: KYC verification failed due to invalid social security number\n\n`KYC_PII_SSN_MISMATCH`: KYC verification failed due to invalid personal information (name, birthdate)\n\n`KYC_DECEASED`: KYC verification failed due to person reported deceased\n\n`KYC_PO_BOX_NOT_ALLOWED`: KYC verification failed due to PO Box address\n\n`KYC_ERROR`: Unexpected error occurred during KYC step\n\n`ACCOUNT_SUSPENDED`: Wallet account was suspended due to failed KYC fraud checks\n\n`ACCOUNT_WITH_EMAIL_EXISTS`: Another Branch account already uses the same email\n\n`EMPLOYEE_NOT_FOUND`: Employee was not found\n\n`EMPLOYEE_UNDER_AGE`: Employee was not of the minimum age to create an account\n\n`EMPLOYEE_ALREADY_LINKED`: Employee was already linked to another user account\n\n","enum":["FRAUD_CHECK_REQ","ADDITIONAL_DOCS_REQ","CONFIRMED_FRAUD","USER_REQUESTED","TERMS_OF_SERVICE_VIOLATION","DENIED","KYC_SSN_INVALID","KYC_PII_SSN_MISMATCH","KYC_DECEASED","KYC_PO_BOX_NOT_ALLOWED","KYC_ERROR","ACCOUNT_SUSPENDED","ACCOUNT_WITH_EMAIL_EXISTS","EMPLOYEE_NOT_FOUND","EMPLOYEE_UNDER_AGE","EMPLOYEE_ALREADY_LINKED","ERROR"],"example":"ADDITIONAL_DOCS_REQ"},"reason":{"type":"string","description":"A short message explaining the `reason_code` field. This may or may not provide additional\ncontext for the `reason_code`.\n","example":"Branch was not able to confirm identity with the information provided."},"onboarding_link":{"type":"string","description":"If the wallet was initiated by the organization, will be populated with a link\nwith which the employee can utilize to streamline onboarding.\n"},"kyc_additional_documentation_link":{"type":"string","description":"A link to additional documentation for KYC"},"ein":{"type":"string","description":"9 digit Employer Identification Number. Format: XXXXXXXXX","example":"123456789"},"business_name":{"type":"string","description":"Business name for the user.","example":"Dunder Mifflin Paper Company"},"time_last_initialization_attempted":{"type":"string","format":"date-time","description":"The last time wallet initialization was attempted"},"time_created":{"type":"string","format":"date-time","description":"The time the wallet was created"}}},"PageSchemaOrganizationWalletDto":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/OrganizationWalletDto"}},"page_number":{"type":"integer","format":"int64","description":"Index of the current page","example":2},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"total_pages":{"type":"integer","format":"int64","description":"Number of total pages","example":5},"total_number_of_elements":{"type":"integer","format":"int64","description":"Number of total elements","example":100},"has_next_page":{"type":"boolean","description":"Whether another page exists","example":true},"has_prev_page":{"type":"boolean","description":"Whether a previous page exists","example":true},"next_page":{"type":"string","description":"URL to GET the next page","example":"/elements?page=3"},"prev_page":{"type":"string","description":"URL to GET the previous page","example":"/elements?page=1"}}},"OrganizationWalletStatusDto":{"description":"List of elements on the page","properties":{"employee_id":{"type":"string","description":"The employee's ID","example":"A-1234"},"wallet_status":{"type":"string","description":"##### Basic Statuses:\n\n`NOT_CREATED`: A wallet has not yet been created.\n\n`CREATED`: A wallet has been created.\n\n`CLOSED`: A wallet has been closed.\n\n`PENDING`: We are attempting to create the wallet. It is not yet available for disbursing funds.\n\n`UNCLAIMED`: A wallet has been created and is able to receive funds through the API, but the employee has not signed up with Branch yet.\n\n`ACTIVE`: A wallet has been created for an employee and they are in control of it.\n\n##### v1.01 Statuses:\n\n`REVIEW`: The user has been flagged for manual review.\n\n`FAILED`: A failure occurred during wallet creation.\n\n","enum":["NOT_CREATED","PENDING","REVIEW","CREATED","UNCLAIMED","ACTIVE","FAILED","SUSPENDED","CLOSED","PENDING_CLOSURE"],"example":"ACTIVE"}}},"PageSchemaOrganizationWalletStatusDto":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/OrganizationWalletStatusDto"}},"page_number":{"type":"integer","format":"int64","description":"Index of the current page","example":2},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"total_pages":{"type":"integer","format":"int64","description":"Number of total pages","example":5},"total_number_of_elements":{"type":"integer","format":"int64","description":"Number of total elements","example":100},"has_next_page":{"type":"boolean","description":"Whether another page exists","example":true},"has_prev_page":{"type":"boolean","description":"Whether a previous page exists","example":true},"next_page":{"type":"string","description":"URL to GET the next page","example":"/elements?page=3"},"prev_page":{"type":"string","description":"URL to GET the previous page","example":"/elements?page=1"}}},"PageSchemaRemittanceDto":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/RemittanceDto"}},"page_number":{"type":"integer","format":"int64","description":"Index of the current page","example":2},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"total_pages":{"type":"integer","format":"int64","description":"Number of total pages","example":5},"total_number_of_elements":{"type":"integer","format":"int64","description":"Number of total elements","example":100},"has_next_page":{"type":"boolean","description":"Whether another page exists","example":true},"has_prev_page":{"type":"boolean","description":"Whether a previous page exists","example":true},"next_page":{"type":"string","description":"URL to GET the next page","example":"/elements?page=3"},"prev_page":{"type":"string","description":"URL to GET the previous page","example":"/elements?page=1"}}},"RemittanceDto":{"description":"List of elements on the page","properties":{"id":{"type":"integer","format":"int32","description":"ID of the remittance","example":123},"pay_date":{"type":"string","format":"date","description":"ISO-8601 date for the pay date, provided by the organization, for the remittance and associated requested deductions"},"remittance_date":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for when the remittance was created"},"status":{"type":"string","description":"`STARTED`: Remittance is active; remittance has been created and has unsettled requested deductions\n\n`PROCESSING`: Remittance is actively processing reported deductions made; no further actions are necessary\n\n`COMPLETED`: Remittance requested deductions are all settled and payment has been made; no further actions are necessary\n\n`CANCELED`: Remittance was created but is now invalid; no further actions are necessary\n\n`AWAITING_PAYMENT`: Remittance requested deductions are all settled and remittance has yet to be paid","enum":["STARTED","PROCESSING","COMPLETED","CANCELED","AWAITING_PAYMENT","UNKNOWN"]},"requested_amount":{"type":"integer","format":"int32","description":"Total amount, in cents, that was requested for deductions for all employees","example":2000}}},"PageSchemaRemittanceRequestedDeductionDto":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/RemittanceRequestedDeductionDto"}},"page_number":{"type":"integer","format":"int64","description":"Index of the current page","example":2},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"total_pages":{"type":"integer","format":"int64","description":"Number of total pages","example":5},"total_number_of_elements":{"type":"integer","format":"int64","description":"Number of total elements","example":100},"has_next_page":{"type":"boolean","description":"Whether another page exists","example":true},"has_prev_page":{"type":"boolean","description":"Whether a previous page exists","example":true},"next_page":{"type":"string","description":"URL to GET the next page","example":"/elements?page=3"},"prev_page":{"type":"string","description":"URL to GET the previous page","example":"/elements?page=1"}}},"RemittanceRequestedDeductionDto":{"description":"List of elements on the page","properties":{"employee_id":{"type":"string","description":"Employee ID","example":"123"},"amount":{"type":"integer","format":"int32","description":"Amount, in cents, that should be deducted for the employee","example":500}}},"PageSchemaDisbursementDto":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/DisbursementDto"}},"page_number":{"type":"integer","format":"int64","description":"Index of the current page","example":2},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"total_pages":{"type":"integer","format":"int64","description":"Number of total pages","example":5},"total_number_of_elements":{"type":"integer","format":"int64","description":"Number of total elements","example":100},"has_next_page":{"type":"boolean","description":"Whether another page exists","example":true},"has_prev_page":{"type":"boolean","description":"Whether a previous page exists","example":true},"next_page":{"type":"string","description":"URL to GET the next page","example":"/elements?page=3"},"prev_page":{"type":"string","description":"URL to GET the previous page","example":"/elements?page=1"}}},"PageSchemaEmployeeDto":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/EmployeeDto"}},"page_number":{"type":"integer","format":"int64","description":"Index of the current page","example":2},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"total_pages":{"type":"integer","format":"int64","description":"Number of total pages","example":5},"total_number_of_elements":{"type":"integer","format":"int64","description":"Number of total elements","example":100},"has_next_page":{"type":"boolean","description":"Whether another page exists","example":true},"has_prev_page":{"type":"boolean","description":"Whether a previous page exists","example":true},"next_page":{"type":"string","description":"URL to GET the next page","example":"/elements?page=3"},"prev_page":{"type":"string","description":"URL to GET the previous page","example":"/elements?page=1"}}},"CardDto":{"properties":{"state":{"type":"string","description":"The current state of the activated card","enum":["ACTIVE","SUSPENDED"]},"card_type":{"type":"string","description":"The type of the activated card","enum":["PHYSICAL","VIRTUAL"]},"time_created":{"type":"string","format":"date-time","description":"When the card was created"}}},"EmployeeAdvanceDto":{"description":"List of elements on the page","properties":{"employee_id":{"type":"string","description":"The worker's ID","example":"123"},"amount":{"type":"integer","format":"int32","description":"The amount, in cents, of the advance that was taken","example":500},"date":{"type":"string","format":"date-time","description":"ISO-8601 date-time with offset from UTC for when the advance was taken"},"due_date":{"type":"string","format":"date","description":"ISO-8601 date for when the advance is due to be paid back"},"outstanding_amount":{"type":"integer","format":"int32","description":"The amount, in cents, of the advance that has yet to be paid back","example":400},"status":{"type":"string","description":"`ALL`: Search all advances regardless of status\n\n`PAYOUT_NEW`: Payout request is stored, no action taken yet\n\n`PAYOUT_PENDING`: Payout is in progress\n\n`PAYOUT_CANCEL`: Payout has been cancelled\n\n`PAYOUT_TIMEOUT`: Payout was attempted but timed out before completion\n\n`PAYOUT_FAIL`: Payout was attempted and failed\n\n`OUTSTANDING`: Payout has not been paid back and there are no unsettled requested deductions on an active remittance\n\n`PAYBACK_IN_PROGRESS`: Payback is in progress\n\n`PAYBACK_DEFAULTED`: Payback was attempted multiple times and was unsuccessful\n\n`PAYBACK_FAIL`: Payback was attempted but was unsuccessful\n\n`PAID`: Payout and corresponding payback are successfully completed\n\n`DEDUCTION_REQUESTED`: An unsettled requested deduction exists on an active remittance\n\n`DEDUCTION_DEFAULTED`: Maximum number of deduction attempts reached for the advance\n\n`DEDUCTION_COMPLETED`: The deduction was completed successfully\n\n`NON_PAYMENT`: Terminal state indicating user insolvency","enum":["ALL","PAID","OUTSTANDING","PAYBACK_IN_PROGRESS","PAYBACK_FAIL","PAYOUT_NEW","PAYOUT_TIMEOUT","PAYOUT_FAIL","PAYOUT_PENDING","PAYOUT_CANCEL","DEDUCTION_REQUESTED","DEDUCTION_COMPLETED","PAYBACK_DEFAULTED","DEDUCTION_DEFAULTED","NON_PAYMENT"]},"id":{"type":"string","description":"The Advance ID","example":"123"}}},"PageSchemaEmployeeAdvanceDto":{"properties":{"content":{"type":"array","description":"List of elements on the page","items":{"$ref":"#/components/schemas/EmployeeAdvanceDto"}},"page_number":{"type":"integer","format":"int64","description":"Index of the current page","example":2},"size":{"type":"integer","format":"int64","description":"Number of elements on the page","example":20},"total_pages":{"type":"integer","format":"int64","description":"Number of total pages","example":5},"total_number_of_elements":{"type":"integer","format":"int64","description":"Number of total elements","example":100},"has_next_page":{"type":"boolean","description":"Whether another page exists","example":true},"has_prev_page":{"type":"boolean","description":"Whether a previous page exists","example":true},"next_page":{"type":"string","description":"URL to GET the next page","example":"/elements?page=3"},"prev_page":{"type":"string","description":"URL to GET the previous page","example":"/elements?page=1"}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","name":"apikey","in":"header"}}}}