openapi: 3.2.0 info: version: 1.0.0 title: Accrue Merchant Counterparties API x-links: - name: View Alternative Version url: /api-fs/ description: View API documentation with alternative enum-based WebhookIncluded schema description: Counterparties define bank accounts where funds are settled for captured payments. Settlement details live on `externalBankAccount`. There can be multiple counterparties. servers: - description: Production API url: https://merchant-api.accruesavings.com - description: Sandbox API url: https://merchant-api-sandbox.accruesavings.com tags: - name: Counterparties description: Counterparties define bank accounts where funds are settled for captured payments. Settlement details live on `externalBankAccount`. There can be multiple counterparties. paths: /api/v1/counterparties: post: operationId: createCounterparty tags: - Counterparties summary: Create Counterparty description: Create a new counterparty. Counterparties define bank accounts where funds will be settled. parameters: - schema: type: string format: uuid description: The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - CreateCounterparty attributes: type: object properties: label: type: string description: Optional label for the counterparty. example: Primary Business Account accountNumber: type: string description: The bank account number for settlements. example: '1234567890' routingNumber: type: string pattern: ^[0-9]{9}$ description: 'The nine-digit ABA routing number of the bank account for settlements. Validated on create: it must be nine digits, begin with a routing symbol issued to a US bank, and satisfy the ABA checksum. A value that fails any of these is rejected with `400 InvalidRoutingNumber`.' example: '021000021' accountType: type: string enum: - Checking - Savings description: The type of bank account. example: Checking required: - accountNumber - routingNumber - accountType required: - type - attributes required: - data responses: '201': description: Counterparty created successfully content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateCounterpartyResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyValidationErrorResponse' '409': description: Conflict content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyAlreadyExistsResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: "curl --request POST \\\n --url https://merchant-api.accruesavings.com/api/v1/counterparties \\\n --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \\\n --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000'" - lang: Node source: "const request = require('request');\n\nconst options = {\n method: 'POST',\n url: 'https://merchant-api.accruesavings.com/api/v1/counterparties',\n headers: {\n 'Client-ID': '123e4567-e89b-12d3-a456-426614174000',\n Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n }\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n" - lang: Python source: "import http.client\n\nconn = http.client.HTTPSConnection(\"merchant-api.accruesavings.com\")\n\nheaders = {\n 'Client-ID': \"123e4567-e89b-12d3-a456-426614174000\",\n 'Authorization': \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\"\n }\n\nconn.request(\"POST\", \"/api/v1/counterparties\", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))" - lang: Ruby source: 'require ''uri'' require ''net/http'' require ''openssl'' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = ''123e4567-e89b-12d3-a456-426614174000'' request["Authorization"] = ''Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'' response = http.request(request) puts response.read_body' - lang: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://merchant-api.accruesavings.com/api/v1/counterparties\")\n .post(null)\n .addHeader(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n .addHeader(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: 'var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request);' - lang: Php source: "setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties');\n$request->setMethod(HTTP_METH_POST);\n\n$request->setHeaders([\n 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000',\n 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n]);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}" /api/v1/counterparties/: get: operationId: listCounterparties tags: - Counterparties summary: List Counterparties description: List all counterparties. parameters: - schema: type: string format: uuid description: The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListCounterpartiesResponse' '401': description: Unauthorized content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnauthorizedForCounterpartiesResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: "curl --request GET \\\n --url https://merchant-api.accruesavings.com/api/v1/counterparties/ \\\n --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \\\n --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000'" - lang: Node source: "const request = require('request');\n\nconst options = {\n method: 'GET',\n url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/',\n headers: {\n 'Client-ID': '123e4567-e89b-12d3-a456-426614174000',\n Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n }\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n" - lang: Python source: "import http.client\n\nconn = http.client.HTTPSConnection(\"merchant-api.accruesavings.com\")\n\nheaders = {\n 'Client-ID': \"123e4567-e89b-12d3-a456-426614174000\",\n 'Authorization': \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\"\n }\n\nconn.request(\"GET\", \"/api/v1/counterparties/\", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))" - lang: Ruby source: 'require ''uri'' require ''net/http'' require ''openssl'' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = ''123e4567-e89b-12d3-a456-426614174000'' request["Authorization"] = ''Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'' response = http.request(request) puts response.read_body' - lang: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://merchant-api.accruesavings.com/api/v1/counterparties/\")\n .get()\n .addHeader(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n .addHeader(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: 'var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request);' - lang: Php source: "setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/');\n$request->setMethod(HTTP_METH_GET);\n\n$request->setHeaders([\n 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000',\n 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n]);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}" /api/v1/counterparties/:counterpartyId: get: operationId: getCounterparty tags: - Counterparties summary: Get Counterparty description: Get a specific counterparty by ID. parameters: - schema: type: string format: uuid description: ID of the counterparty to fetch. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: string format: uuid description: The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/GetCounterpartyResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: "curl --request GET \\\n --url https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId \\\n --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \\\n --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000'" - lang: Node source: "const request = require('request');\n\nconst options = {\n method: 'GET',\n url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId',\n headers: {\n 'Client-ID': '123e4567-e89b-12d3-a456-426614174000',\n Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n }\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n" - lang: Python source: "import http.client\n\nconn = http.client.HTTPSConnection(\"merchant-api.accruesavings.com\")\n\nheaders = {\n 'Client-ID': \"123e4567-e89b-12d3-a456-426614174000\",\n 'Authorization': \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\"\n }\n\nconn.request(\"GET\", \"/api/v1/counterparties/:counterpartyId\", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))" - lang: Ruby source: 'require ''uri'' require ''net/http'' require ''openssl'' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = ''123e4567-e89b-12d3-a456-426614174000'' request["Authorization"] = ''Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'' response = http.request(request) puts response.read_body' - lang: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId\")\n .get()\n .addHeader(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n .addHeader(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: 'var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request);' - lang: Php source: "setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId');\n$request->setMethod(HTTP_METH_GET);\n\n$request->setHeaders([\n 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000',\n 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n]);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}" patch: operationId: updateCounterparty tags: - Counterparties summary: Update Counterparty description: Update a counterparty. Use this endpoint to update editable fields. Some fields, like account number and routing number, can't be edited. parameters: - schema: type: string format: uuid description: ID of the counterparty to update. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: string format: uuid description: The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - UpdateCounterparty attributes: type: object properties: label: type: string description: Optional label for the counterparty. example: Updated Business Account required: - type - attributes required: - data responses: '200': description: Counterparty updated successfully content: application/vnd.api+json: schema: $ref: '#/components/schemas/UpdateCounterpartyResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyValidationErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: "curl --request PATCH \\\n --url https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId \\\n --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \\\n --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000'" - lang: Node source: "const request = require('request');\n\nconst options = {\n method: 'PATCH',\n url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId',\n headers: {\n 'Client-ID': '123e4567-e89b-12d3-a456-426614174000',\n Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n }\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n" - lang: Python source: "import http.client\n\nconn = http.client.HTTPSConnection(\"merchant-api.accruesavings.com\")\n\nheaders = {\n 'Client-ID': \"123e4567-e89b-12d3-a456-426614174000\",\n 'Authorization': \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\"\n }\n\nconn.request(\"PATCH\", \"/api/v1/counterparties/:counterpartyId\", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))" - lang: Ruby source: 'require ''uri'' require ''net/http'' require ''openssl'' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Patch.new(url) request["Client-ID"] = ''123e4567-e89b-12d3-a456-426614174000'' request["Authorization"] = ''Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'' response = http.request(request) puts response.read_body' - lang: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId\")\n .patch(null)\n .addHeader(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n .addHeader(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId\"\n\n\treq, _ := http.NewRequest(\"PATCH\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: 'var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId"); var request = new RestRequest(Method.PATCH); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request);' - lang: Php source: "setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId');\n$request->setMethod(HttpRequest::HTTP_METH_PATCH);\n\n$request->setHeaders([\n 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000',\n 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n]);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}" delete: operationId: deleteCounterparty tags: - Counterparties summary: Delete Counterparty description: Soft-delete a counterparty. The counterparty will be marked as deleted but not permanently removed from the system. Deleting moves no money, so a counterparty that still holds a balance cannot be deleted — pay the remaining balance out first. parameters: - schema: type: string format: uuid description: ID of the counterparty to delete. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: string format: uuid description: The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '204': description: Counterparty deleted successfully (no content) '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '409': description: Conflict. The counterparty still holds a balance. content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyHasBalanceResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: "curl --request DELETE \\\n --url https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId \\\n --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \\\n --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000'" - lang: Node source: "const request = require('request');\n\nconst options = {\n method: 'DELETE',\n url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId',\n headers: {\n 'Client-ID': '123e4567-e89b-12d3-a456-426614174000',\n Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n }\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n" - lang: Python source: "import http.client\n\nconn = http.client.HTTPSConnection(\"merchant-api.accruesavings.com\")\n\nheaders = {\n 'Client-ID': \"123e4567-e89b-12d3-a456-426614174000\",\n 'Authorization': \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\"\n }\n\nconn.request(\"DELETE\", \"/api/v1/counterparties/:counterpartyId\", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))" - lang: Ruby source: 'require ''uri'' require ''net/http'' require ''openssl'' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Delete.new(url) request["Client-ID"] = ''123e4567-e89b-12d3-a456-426614174000'' request["Authorization"] = ''Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'' response = http.request(request) puts response.read_body' - lang: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId\")\n .delete(null)\n .addHeader(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n .addHeader(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: 'var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId"); var request = new RestRequest(Method.DELETE); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request);' - lang: Php source: "setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId');\n$request->setMethod(HTTP_METH_DELETE);\n\n$request->setHeaders([\n 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000',\n 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n]);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}" /api/v1/counterparties/:counterpartyId/payouts: post: operationId: createCounterpartyPayout tags: - Counterparties summary: Create Counterparty Payout description: Initiate a payout from the counterparty's available balance to their bank account. parameters: - schema: type: string format: uuid description: ID of the counterparty from which to payout. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: string format: uuid description: The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header requestBody: required: true content: application/vnd.api+json: schema: type: object properties: data: type: object properties: type: type: string enum: - CreateCounterpartyPayout attributes: type: object properties: amount: type: integer minimum: 1 maximum: 2147483647 description: Amount to payout in cents. Capped at 2147483647 ($21,474,836.47) per payout; a larger available balance must be paid out across multiple payouts. format: int32 example: 5000 idempotencyKey: type: string minLength: 1 maxLength: 255 description: Idempotency key to prevent duplicate payouts example: payout_12345 required: - amount - idempotencyKey required: - type - attributes required: - data responses: '201': description: Payout initiated successfully content: application/vnd.api+json: schema: $ref: '#/components/schemas/PayoutFromCounterpartyResponse' '400': description: Bad Request content: application/vnd.api+json: schema: $ref: '#/components/schemas/CreateCounterpartyPayoutErrorResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: "curl --request POST \\\n --url https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts \\\n --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \\\n --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000'" - lang: Node source: "const request = require('request');\n\nconst options = {\n method: 'POST',\n url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts',\n headers: {\n 'Client-ID': '123e4567-e89b-12d3-a456-426614174000',\n Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n }\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n" - lang: Python source: "import http.client\n\nconn = http.client.HTTPSConnection(\"merchant-api.accruesavings.com\")\n\nheaders = {\n 'Client-ID': \"123e4567-e89b-12d3-a456-426614174000\",\n 'Authorization': \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\"\n }\n\nconn.request(\"POST\", \"/api/v1/counterparties/:counterpartyId/payouts\", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))" - lang: Ruby source: 'require ''uri'' require ''net/http'' require ''openssl'' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Client-ID"] = ''123e4567-e89b-12d3-a456-426614174000'' request["Authorization"] = ''Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'' response = http.request(request) puts response.read_body' - lang: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts\")\n .post(null)\n .addHeader(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n .addHeader(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: 'var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts"); var request = new RestRequest(Method.POST); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request);' - lang: Php source: "setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts');\n$request->setMethod(HTTP_METH_POST);\n\n$request->setHeaders([\n 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000',\n 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n]);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}" get: operationId: listCounterpartyPayouts tags: - Counterparties summary: List Counterparty Payouts description: List the payouts of a specific counterparty, newest first. `meta.total` counts the payouts matching the filters, so page through the list with `page[offset]` until you have read `meta.total` records. Both bounds of every filter range are inclusive. parameters: - schema: type: string format: uuid description: ID of the counterparty to fetch payouts for. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: counterpartyId in: path - schema: type: number minimum: 1 maximum: 50 default: 10 description: Maximum number of objects that will be returned. Can not be greater than 50. required: false name: page[limit] in: query - schema: type: number minimum: 0 default: 0 description: Offset from the beginning of the list of objects. Can not be negative. required: false name: page[offset] in: query - schema: type: string enum: - Approved - Cancelled - Completed - Denied - Failed - NeedsApproval - Pending - Processing - Returned - Reversed - Sent description: Filter payouts by status. example: Sent required: false name: filter[status] in: query - schema: type: integer minimum: 0 description: Only payouts of at least this amount, in cents. example: 1000 required: false name: filter[minAmount] in: query - schema: type: integer minimum: 0 description: Only payouts of at most this amount, in cents. example: 500000 required: false name: filter[maxAmount] in: query - schema: type: string format: date-time description: Only payouts created at or after this ISO 8601 datetime. example: '2024-01-01T00:00:00.000Z' required: false name: filter[createdAfter] in: query - schema: type: string format: date-time description: Only payouts created at or before this ISO 8601 datetime. example: '2024-12-31T23:59:59.999Z' required: false name: filter[createdBefore] in: query - schema: type: string format: date description: Only payouts with an effective date on or after this date (YYYY-MM-DD). example: '2024-01-01' required: false name: filter[effectiveDateFrom] in: query - schema: type: string format: date description: Only payouts with an effective date on or before this date (YYYY-MM-DD). example: '2024-12-31' required: false name: filter[effectiveDateTo] in: query - schema: type: string format: uuid description: The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions. example: 123e4567-e89b-12d3-a456-426614174000 required: true name: Client-ID in: header - schema: type: string format: uuid description: Secure secret to access privileged endpoints. example: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef required: true name: Authorization in: header responses: '200': description: OK content: application/vnd.api+json: schema: $ref: '#/components/schemas/ListCounterpartyPayoutsResponse' '404': description: Not Found content: application/vnd.api+json: schema: $ref: '#/components/schemas/CounterpartyNotFoundResponse' '500': description: Internal Server Error content: application/vnd.api+json: schema: $ref: '#/components/schemas/UnexpectedCounterpartyErrorResponse' x-codeSamples: - lang: Shell source: "curl --request GET \\\n --url 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31' \\\n --header 'Authorization: Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef' \\\n --header 'Client-ID: 123e4567-e89b-12d3-a456-426614174000'" - lang: Node source: "const request = require('request');\n\nconst options = {\n method: 'GET',\n url: 'https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts',\n qs: {\n 'page[limit]': 'SOME_NUMBER_VALUE',\n 'page[offset]': 'SOME_NUMBER_VALUE',\n 'filter[status]': 'Sent',\n 'filter[minAmount]': '1000',\n 'filter[maxAmount]': '500000',\n 'filter[createdAfter]': '2024-01-01T00:00:00.000Z',\n 'filter[createdBefore]': '2024-12-31T23:59:59.999Z',\n 'filter[effectiveDateFrom]': '2024-01-01',\n 'filter[effectiveDateTo]': '2024-12-31'\n },\n headers: {\n 'Client-ID': '123e4567-e89b-12d3-a456-426614174000',\n Authorization: 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n }\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n" - lang: Python source: "import http.client\n\nconn = http.client.HTTPSConnection(\"merchant-api.accruesavings.com\")\n\nheaders = {\n 'Client-ID': \"123e4567-e89b-12d3-a456-426614174000\",\n 'Authorization': \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\"\n }\n\nconn.request(\"GET\", \"/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31\", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))" - lang: Ruby source: 'require ''uri'' require ''net/http'' require ''openssl'' url = URI("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Client-ID"] = ''123e4567-e89b-12d3-a456-426614174000'' request["Authorization"] = ''Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'' response = http.request(request) puts response.read_body' - lang: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31\")\n .get()\n .addHeader(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n .addHeader(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io/ioutil\"\n)\n\nfunc main() {\n\n\turl := \"https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Client-ID\", \"123e4567-e89b-12d3-a456-426614174000\")\n\treq.Header.Add(\"Authorization\", \"Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := ioutil.ReadAll(res.Body)\n\n\tfmt.Println(res)\n\tfmt.Println(string(body))\n\n}" - lang: Csharp source: 'var client = new RestClient("https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts?page%5Blimit%5D=SOME_NUMBER_VALUE&page%5Boffset%5D=SOME_NUMBER_VALUE&filter%5Bstatus%5D=Sent&filter%5BminAmount%5D=1000&filter%5BmaxAmount%5D=500000&filter%5BcreatedAfter%5D=2024-01-01T00%3A00%3A00.000Z&filter%5BcreatedBefore%5D=2024-12-31T23%3A59%3A59.999Z&filter%5BeffectiveDateFrom%5D=2024-01-01&filter%5BeffectiveDateTo%5D=2024-12-31"); var request = new RestRequest(Method.GET); request.AddHeader("Client-ID", "123e4567-e89b-12d3-a456-426614174000"); request.AddHeader("Authorization", "Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef"); IRestResponse response = client.Execute(request);' - lang: Php source: "setUrl('https://merchant-api.accruesavings.com/api/v1/counterparties/:counterpartyId/payouts');\n$request->setMethod(HTTP_METH_GET);\n\n$request->setQueryData([\n 'page[limit]' => 'SOME_NUMBER_VALUE',\n 'page[offset]' => 'SOME_NUMBER_VALUE',\n 'filter[status]' => 'Sent',\n 'filter[minAmount]' => '1000',\n 'filter[maxAmount]' => '500000',\n 'filter[createdAfter]' => '2024-01-01T00:00:00.000Z',\n 'filter[createdBefore]' => '2024-12-31T23:59:59.999Z',\n 'filter[effectiveDateFrom]' => '2024-01-01',\n 'filter[effectiveDateTo]' => '2024-12-31'\n]);\n\n$request->setHeaders([\n 'Client-ID' => '123e4567-e89b-12d3-a456-426614174000',\n 'Authorization' => 'Bearer 633b336e4f57f095a405f6685e208cc7dd16de3e82494662f2acfeec3af1cdef'\n]);\n\ntry {\n $response = $request->send();\n\n echo $response->getBody();\n} catch (HttpException $ex) {\n echo $ex;\n}" components: schemas: UnexpectedCounterpartyErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 500 code: type: string enum: - UnexpectedError description: A unique, camel-cased Accrue-specific code detailing the error. example: UnexpectedError title: type: string description: Generic title for the error. example: CounterpartyException detail: type: string description: A human-readable explanation providing more insights about the error. examples: - An unexpected error occurred. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta CounterpartyExternalBankAccount: type: object properties: accountNumber: type: string description: The payee's bank account number for settlement. example: '1234567890' routingNumber: type: string description: The payee's ABA routing number for settlement. example: '021000021' accountType: type: string enum: - Checking - Savings description: The type of the payee's settlement bank account. example: Checking required: - accountNumber - routingNumber - accountType description: The payee's own bank account for settlement. CounterpartyValidationErrorResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - BadRequest description: A unique, camel-cased Accrue-specific code detailing the error. example: BadRequest title: type: string description: Generic title for the error. example: ValidationError detail: type: string description: A human-readable explanation providing more insights about the error. examples: - Validation failed for data.attributes.routingNumber meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties required: - id - status - code - title - detail - meta CounterpartyInternalBankAccount: type: object properties: accountNumber: type: string description: Account number of the Accrue bank account associated with this counterparty. example: '9876543210' routingNumber: type: string description: Routing number of the Accrue bank account associated with this counterparty. example: '021000021' accountType: type: string enum: - Checking - Savings description: Account type of the Accrue bank account associated with this counterparty. example: Checking required: - accountNumber - routingNumber - accountType description: The Accrue bank account associated with this counterparty. Present only when a dedicated Accrue deposit account has been provisioned. Use these details to send funds to this counterparty over bank rails. CreateCounterpartyResponse: type: object properties: data: $ref: '#/components/schemas/Counterparty' required: - data UnauthorizedForCounterpartiesResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 401 code: type: string enum: - Unauthorized description: A unique, camel-cased Accrue-specific code detailing the error. example: Unauthorized title: type: string description: Generic title for the error. example: ClientNotAuthenticatedException detail: type: string description: A human-readable explanation providing more insights about the error. examples: - 'unauthorized: no authenticated client for this request' meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties/ required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties/ required: - id - status - code - title - detail - meta ListCounterpartiesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Counterparty' required: - data InsufficientBalanceResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 400 code: type: string enum: - InsufficientBalance description: A unique, camel-cased Accrue-specific code detailing the error. example: InsufficientBalance title: type: string description: Generic title for the error. example: CounterpartyInsufficientBalanceException detail: type: string description: A human-readable explanation providing more insights about the error. examples: - Insufficient balance for payout. Please check the counterparty balance and try again. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000/payouts required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000/payouts required: - id - status - code - title - detail - meta ListCounterpartyPayoutsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CounterpartyPayout' meta: type: object properties: total: type: number example: 1 limit: type: number example: 10 offset: type: number example: 0 required: - total - limit - offset required: - data - meta UpdateCounterpartyResponse: type: object properties: data: $ref: '#/components/schemas/Counterparty' required: - data CreateCounterpartyPayoutErrorResponse: anyOf: - $ref: '#/components/schemas/InsufficientBalanceResponse' - $ref: '#/components/schemas/CounterpartyValidationErrorResponse' GetCounterpartyResponse: type: object properties: data: $ref: '#/components/schemas/Counterparty' required: - data CounterpartyHasBalanceResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 409 code: type: string enum: - CounterpartyHasBalance description: A unique, camel-cased Accrue-specific code detailing the error. example: CounterpartyHasBalance title: type: string description: Generic title for the error. example: CounterpartyHasBalanceException detail: type: string description: A human-readable explanation providing more insights about the error. examples: - Counterparty {counterpartyId} still holds a balance and cannot be deleted. Pay out the remaining balance first. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta CounterpartyNotFoundResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 404 code: type: string enum: - CounterpartyNotFound description: A unique, camel-cased Accrue-specific code detailing the error. example: CounterpartyNotFound title: type: string description: Generic title for the error. example: CounterpartyNotFoundException detail: type: string description: A human-readable explanation providing more insights about the error. examples: - Counterparty with ID '{counterpartyId}' not found. meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties/123e4567-e89b-12d3-a456-426614174000 required: - id - status - code - title - detail - meta Counterparty: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - Counterparty attributes: type: object properties: updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true label: type: string description: Optional label for the counterparty. accountNumber: type: string description: Deprecated. Use `externalBankAccount.accountNumber` instead. Still returned for compatibility. example: '1234567890' deprecated: true routingNumber: type: string description: Deprecated. Use `externalBankAccount.routingNumber` instead. Still returned for compatibility. example: '021000021' deprecated: true accountType: type: string enum: - Checking - Savings description: Deprecated. Use `externalBankAccount.accountType` instead. Still returned for compatibility. deprecated: true externalBankAccount: $ref: '#/components/schemas/CounterpartyExternalBankAccount' internalBankAccount: $ref: '#/components/schemas/CounterpartyInternalBankAccount' balance: type: object properties: pending: type: integer description: The balance associated with the counterparty not yet settled, in cents. Can exceed the int32 range — read it into a 64-bit integer. format: int64 example: 1000 available: type: integer description: Settled balance associated with the counterparty, in cents. Can exceed the int32 range — read it into a 64-bit integer. A single payout is capped below this (see the payout `amount` field), so a balance above that cap is paid out across multiple payouts. format: int64 example: 1000 required: - pending - available required: - updatedAt - createdAt required: - id - type - attributes description: A counterparty represents a payee. `externalBankAccount` is the payee's own bank account for settlement. Top-level `accountNumber` / `routingNumber` / `accountType` still echo those values but are deprecated. `internalBankAccount` is the Accrue account you can fund over bank rails when one has been provisioned. x-tags: - Model CounterpartyPayout: type: object properties: id: type: string format: uuid description: Unique identifier for the object. readOnly: true type: type: string enum: - CounterpartyPayout attributes: type: object properties: amount: type: integer description: Amount in cents format: int32 example: 5000 status: type: string enum: - Approved - Cancelled - Completed - Denied - Failed - NeedsApproval - Pending - Processing - Returned - Reversed - Sent description: Current status of the payout example: Sent description: type: - string - 'null' description: Description of the payout example: Payout to vendor effectiveDate: type: string description: Effective date of the payout (ISO 8601 date string) example: '2024-01-15' counterpartyId: type: string format: uuid description: Counterparty ID (from our system) example: 123e4567-e89b-12d3-a456-426614174000 updatedAt: type: string format: date-time readOnly: true createdAt: type: string format: date-time readOnly: true required: - amount - status - description - effectiveDate - counterpartyId - updatedAt - createdAt required: - id - type - attributes description: A payout represents a transfer of funds from a counterparty's available balance to their bank account. x-tags: - Model PayoutFromCounterpartyResponse: type: object properties: data: $ref: '#/components/schemas/CounterpartyPayout' required: - data CounterpartyAlreadyExistsResponse: type: object properties: id: type: string format: uuid description: A unique UUID for this particular occurrence of the problem. example: 123e4567-e89b-12d3-a456-426614174000 status: type: integer description: The HTTP status code applicable to this error. example: 409 code: type: string enum: - CounterpartyAlreadyExists description: A unique, camel-cased Accrue-specific code detailing the error. example: CounterpartyAlreadyExists title: type: string description: Generic title for the error. example: CounterpartyAlreadyExistsException detail: type: string description: A human-readable explanation providing more insights about the error. examples: - Counterparty already exists for this client meta: type: object properties: environment: type: string enum: - production - sandbox example: sandbox timestamp: type: string format: date-time example: '2025-06-23T12:00:00.000Z' path: type: string example: /api/v1/counterparties required: - environment - timestamp - path example: environment: sandbox timestamp: '2025-06-23T12:00:00.000Z' path: /api/v1/counterparties required: - id - status - code - title - detail - meta x-tagGroups: - name: Overview tags: - Introduction - API Design - name: Users tags: - Users - LinkedAccounts - Identity Verification - name: Wallets tags: - Wallets - name: Gifts tags: - Gifts - name: Payments tags: - PaymentIntents - Payments - ExternalTransactions - Simulations - name: Banking & KYC tags: - Banking - Counterparties - CounterpartyTransfers - name: Sweepstakes tags: - Sweepstakes - name: Rewards tags: - Rewards - name: Widgets tags: - Widgets - name: Webhooks tags: - Webhooks - WebhookEvents - Webhook Topics