openapi: 3.2.0 info: title: CAPITAL Business API version: v1.0 servers: - url: https://sandbox.finmid.com description: Sandbox - url: https://api.finmid.com description: Live security: - apiKeyScheme: [] tags: - name: Business paths: /api/v1/capital/businesses: post: tags: - Business operationId: create-business summary: Create Business description: In order to access pre-approved Offers for Businesses, Platforms must first share non-PI data. This data is used to generate Offers, confirm receiving bank accounts with Businesses, and support the 2FA process used to accept Offers. requestBody: content: application/json: schema: type: object required: - id - currency - legal_address properties: id: $ref: '#/paths/~1api~1v1~1capital~1payment-batches~1{batch_id}/get/parameters/0/schema' currency: description: Three-letter currency code (ISO 4217). Supported currencies `EUR`, `DKK`, `SEK` and `POL`. Must match the Business's registered currency. type: string example: EUR bank_account: type: object description: Entity for sharing business bank account details. properties: account_number_ending: description: Last N digits of the Business’s bank account number (typically the last four). type: string example: '9675' legal_representative: type: object properties: phone_ending: description: Last N digits of the business’s contact phone (usually last four). type: string example: '1234' legal_address: type: object description: Entity for business address details. required: - country properties: country: description: Country where the Business operates. $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}~1credits/get/responses/200/content/application~1json/schema/properties/data/items/properties/country/allOf/0' partnership_started_date: description: Date when the Business started its partnership with the Platform. type: string format: date example: '2020-01-01' founding_date: description: Date when the Business was established. type: string format: date example: '2020-01-01' metadata: type: object description: 'Contains a set of flexible, custom key-value pairs. Used for sharing extra data. Notable key: `mcc` — the Business''s Merchant Category Code(s) (ISO 18245, 4 digits each). Accepted formats: a comma-separated string (`"5411,5812"`) or an array of strings (`["5411", "5812"]`). Always send codes as strings to preserve leading zeros (e.g. `"0742"`). If at least one provided code is not eligible for financing, the request is rejected with `mcc_not_eligible`. The value is stored and returned as a comma-separated string. ' additionalProperties: true example: mcc: 5411,5812 key: value examples: create_business: value: id: business-id currency: EUR bank_account: account_number_ending: '1234' legal_representative: phone_ending: '4321' legal_address: country: DEU partnership_started_date: '2023-01-01' founding_date: '2023-01-01' metadata: mcc: 5411,5812 mcc_translation: Grocery stores employee_of_the_month: John Doe required: true responses: '201': description: Business created. content: application/json: schema: description: Business response object type: object required: - id - currency - bank_account - legal_address properties: id: description: Identifier of the business. type: string example: business-id legal_name: description: Legal name of the business. type: string example: Business GmbH business_registration_number: description: Business registration number. type: string example: DE123456789 tax_number: description: Tax number. type: string example: DE987654321 bank_account: description: Entity for sharing business bank account details. type: object properties: account_number: description: Full IBAN or local BBAN of the Business’s bank account. type: string example: DE53500105174515729675 bic: description: BIC (Bank Identifier Code) of the Business’s bank account. type: string example: INGDDEFFXXX account_holder_name: description: Name of the bank account holder. The Business’s legal name will be used for payout if this value is missing. type: string example: John Doe account_number_ending: description: Last N digits of the Business’s bank account number (typically the last four). type: string example: '9675' currency: $ref: '#/paths/~1api~1v1~1capital~1businesses/post/requestBody/content/application~1json/schema/properties/currency' legal_representative: type: object properties: first_name: description: First name of the business’s legal representative. type: string example: John last_name: description: Last name of the business’s legal representative. type: string example: Doe phone: description: Phone number of the business’s legal representative. type: string example: '+4917612345678' email: description: Email address of the business’s legal representative. type: string example: john@doe.mail phone_ending: description: Last N digits of the business’s contact phone (usually last four). type: string example: '1234' legal_address: type: object description: Entity for business address details. required: - country properties: address_line_1: description: First line of the Business address. type: string example: Musterstraße 12 address_line_2: description: Second line of the Business address for any required additions to the first line. type: string example: c/o Business GmbH postal_code: description: Postal code of the Business address. type: string example: '12345' city: description: City where the Business is located. type: string example: Musterstadt state: description: State where the Business is located. type: string example: Musterstadt country: $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}~1credits/get/responses/200/content/application~1json/schema/properties/data/items/properties/country/allOf/0' partnership_started_date: description: Date when the partnership started (ISO 8601 date). type: string format: date example: '2020-01-01' founding_date: description: Date when the business was founded (ISO 8601 date). type: string format: date example: '2020-01-01' metadata: type: object description: Contains a set of flexible custom key-value pairs. Used for sharing extra data. additionalProperties: true example: key: value examples: business_created: value: id: business-id legal_name: null business_registration_number: null tax_number: null bank_account: account_number: null bic: null account_holder_name: null account_number_ending: '1234' currency: EUR legal_representative: first_name: null last_name: null phone: null email: null phone_ending: '4321' legal_address: address_line1: null address_line2: null postal_code: null city: null state: null country: DEU partnership_started_date: '2023-01-01' founding_date: '2023-01-01' metadata: mcc: 5411,5812 mcc_translation: Grocery stores employee_of_the_month: John Doe '400': description: Can't process request due to validation reasons, or at least one of the Business's merchant category codes (MCC) is not eligible for financing. content: application/json: schema: allOf: - $ref: '#/paths/~1api~1v1~1transaction/post/responses/400/content/application~1json/schema/allOf/0' - type: object properties: code: type: string enum: - validation_error - mcc_not_eligible description: example: Some fields of the request don't match requirements. examples: validation_error: value: code: validation_error description: Some fields of the request don't match requirements. mcc_not_eligible: value: code: mcc_not_eligible description: Financing is not available for businesses in these merchant categories (MCC '9999,8888'). '401': description: Missing or invalid API key. Could not authenticate API request. '409': description: Business exists already. content: application/json: schema: allOf: - $ref: '#/paths/~1api~1v1~1transaction/post/responses/400/content/application~1json/schema/allOf/0' - type: object properties: code: type: string enum: - business_conflict description: example: Business with id 'business-id' already exists examples: business_conflict: value: code: business_conflict description: Business with id 'business-id' already exists '500': description: An unexpected server error occurred. You should try again later or contact finmid support. content: application/json: schema: allOf: - $ref: '#/paths/~1api~1v1~1transaction/post/responses/400/content/application~1json/schema/allOf/0' - properties: code: type: string enum: - server_error description: example: Our server was hit by a meteorite 💥. examples: server_error: value: code: server_error description: Internal processing error /api/v1/capital/businesses/{business_id}: get: tags: - Business operationId: get-business summary: Get Business description: This endpoint allows Platforms to detect what data has been shared up to the current time for any specific Business. parameters: - name: business_id in: path required: true description: Identifier of the Business. schema: $ref: '#/paths/~1api~1v1~1capital~1payment-batches~1{batch_id}/get/parameters/0/schema' example: business-id responses: '200': description: Business. content: application/json: schema: $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/201/content/application~1json/schema' examples: business: value: id: business-id legal_name: Business GmbH business_registration_number: DE123456789 tax_number: DE987654321 bank_account: account_number: DE53500105174515729675 bic: INGDDEFFXXX account_holder_name: John Doe account_number_ending: '9675' currency: EUR legal_representative: first_name: John last_name: Doe phone: '+4917612345678' email: john@doe.mail phone_ending: '5678' legal_address: address_line1: Musterstraße 12 address_line2: c/o Business GmbH postal_code: '12345' city: Musterstadt state: null country: DEU partnership_started_date: '2023-01-01' founding_date: '2023-01-01' metadata: employee_of_the_month: John Doe '401': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/401' '404': description: Business not found. content: application/json: schema: allOf: - $ref: '#/paths/~1api~1v1~1transaction/post/responses/400/content/application~1json/schema/allOf/0' - type: object properties: code: type: string enum: - business_not_found description: example: Business with id 'business-id' not found examples: business_not_found: value: code: business_not_found description: Business with id 'business-id' not found '500': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/500' /api/v1/capital/businesses/{business_id}/kyb-data: post: tags: - Business operationId: add-business-kyb-data summary: Submit Business's KYB data description: When a Business has accepted their Offer, the Platform is authorized to share their PI data with finmid. This data is necessary for finmid's KYB checks, which are required before the payout of the Funding to the Business. parameters: - $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}/get/parameters/0' requestBody: content: application/json: schema: type: object required: - legal_name - bank_account - currency - legal_representative - legal_address properties: legal_name: description: Name of the Business. type: string minLength: 1 maxLength: 300 example: Business GmbH business_registration_number: description: Registration number of the Business from the commercial register.

⚠️ Note that one of either `business_registration_number` or `tax_number` **must** be provided. type: string minLength: 1 maxLength: 300 example: DE123456789 tax_number: description: Identification number assigned to the Business by the local tax authority.

⚠️ Note that one of either `business_registration_number` or `tax_number` **must** be provided. type: string minLength: 1 maxLength: 300 example: DE987654321 bank_account: description: Entity for sharing business bank account details. type: object required: - account_number properties: account_number: description: Full IBAN or local BBAN of the Business’s bank account. type: string minLength: 1 pattern: ^([A-Z]{2}\d{2}[A-Z\d]+)|(\d{4}(-)?\d{6,10})$ example: DE53500105174515729675 bic: description: BIC (Bank Identifier Code) of the Business’s bank account. type: string minLength: 1 pattern: ^[A-Z0-9]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$ example: INGDDEFFXXX account_holder_name: description: Name of the bank account holder. The Business’s legal name will be used for payout if this value is missing. type: string minLength: 1 maxLength: 300 example: John Doe currency: $ref: '#/paths/~1api~1v1~1capital~1businesses/post/requestBody/content/application~1json/schema/properties/currency' legal_representative: type: object required: - first_name - last_name - phone - email properties: first_name: description: First name of the business’s legal representative. type: string minLength: 1 maxLength: 300 example: John last_name: description: Last name of the business’s legal representative. type: string minLength: 1 maxLength: 300 example: Doe phone: description: Phone number of the business’s legal representative. Must start with `+` followed by at least 6 digits. type: string minLength: 1 pattern: ^\+\d{6,}$ example: '+4917612345678' email: description: Email address of the business’s legal representative. type: string minLength: 1 format: email example: john@doe.mail date_of_birth: description: Date of birth of the legal representative (ISO 8601 date). type: - string - 'null' format: date example: '1990-05-15' nationality: description: Nationality of the legal representative (ISO 3166-1 alpha-3 country code). type: - string - 'null' example: DEU documents: description: List of identity documents of the legal representative. type: array items: type: object required: - type - id properties: type: type: string description: 'Type of identity document. - `PASSPORT`: Passport - `NATIONAL_ID`: National identity card - `FISCAL_CODE`: Fiscal code (e.g. Italian Codice Fiscale) ' enum: - PASSPORT - NATIONAL_ID - FISCAL_CODE example: PASSPORT id: description: The document identifier (e.g. passport number). type: string minLength: 1 example: C01X00T47 default: [] legal_address: description: Entity for business address details. type: object required: - address_line_1 - postal_code - city - country properties: address_line_1: description: First line of the Business address. type: string minLength: 1 maxLength: 300 example: Musterstraße 12 address_line_2: description: Second line of the Business address for any required additions to the first line. type: string minLength: 1 maxLength: 300 example: c/o Business GmbH postal_code: description: Postal code of the Business address. Alphanumeric characters, spaces and hyphens only. type: string minLength: 1 maxLength: 20 pattern: ^[0-9a-zA-Z -]{1,20}$ example: '12345' city: description: City where the Business is located. type: string minLength: 1 maxLength: 300 example: Musterstadt state: description: State where the Business is located. type: string minLength: 1 maxLength: 300 example: Musterstadt country: description: Country where the Business operates. Must match the Business's registered country. $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}~1credits/get/responses/200/content/application~1json/schema/properties/data/items/properties/country/allOf/0' legal_representatives: description: Additional legal representatives of the business. Each entry follows the same structure as `legal_representative`. type: array items: $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}~1kyb-data/post/requestBody/content/application~1json/schema/properties/legal_representative' default: [] legal_structure: type: string description: 'Legal structure of the business. - `LIMITED_LIABILITY_COMPANY`: Limited liability company (e.g. GmbH, S.r.l., Ltd) - `SOLE_PROPRIETOR`: Sole proprietorship - `GENERAL_PARTNERSHIP`: General partnership (e.g. OE, SNC, OHG) - `LIMITED_PARTNERSHIP`: Limited partnership (e.g. EE, KG, S.a.S.) - `PRIVATE_CAPITAL_COMPANY`: Private capital company (e.g. IKE) - `CIVIL_LAW_PARTNERSHIP`: Civil law partnership (e.g. GbR) - `PUBLIC_LIMITED_COMPANY`: Public limited company / joint-stock company (e.g. AE, S.p.A., AG, S.A., PLC) - `JOINT_VENTURE`: Joint venture ' enum: - LIMITED_LIABILITY_COMPANY - SOLE_PROPRIETOR - GENERAL_PARTNERSHIP - LIMITED_PARTNERSHIP - PRIVATE_CAPITAL_COMPANY - CIVIL_LAW_PARTNERSHIP - PUBLIC_LIMITED_COMPANY - JOINT_VENTURE example: LIMITED_LIABILITY_COMPANY metadata: type: object description: "Contains a set of flexible custom key-value pairs. Used for sharing extra data.\n\nExample:\n```json\n{\n \"nace_code\": \"7010\", // NACE code at least 2 digits\n \"ubos\": [ // list of UBOs\n {\n \"full_name\": \"John Doe\"\n },\n {\n \"full_name\": \"Jane Doe\"\n }\n ],\n \"legal_entity_type\": \"LIMITED_LIABILITY_COMPANY\", // LIMITED_LIABILITY_COMPANY or SOLE_PROPRIETOR\n \"payout_schedule\": \"MONTHLY\", // MONTHLY, DAILY, etc..\n \"mcc\": \"5411,5812\", // MCC code(s), 4 digits each - a comma-separated string or an array of strings ([\"5411\", \"5812\"]). Always send codes as strings to preserve leading zeros (e.g. \"0742\"). Stored and returned as a comma-separated string\n \"mcc_translation\": \"Grocery stores\", // MCC human readable translation - a single free-text value\n \"platform_status\": \"ACTIVE\", // ACTIVE / CLOSED / PENDING / FROZEN\n \"lei_code\": \"529900T8BM49AURSDO55\" // LEI code (Legal Entity Identifier) - 20 alphanumeric characters\n}\n```\n" additionalProperties: true example: ubos: - full_name: John Doe - full_name: Jane Doe payout_schedule: daily nace_code: '7010' legal_entity_type: LIMITED_LIABILITY_COMPANY mcc: 5411,5812 mcc_translation: Grocery stores lei_code: 529900T8BM49AURSDO55 examples: kyb_data: value: legal_name: Business GmbH business_registration_number: DE123456789 tax_number: DE987654321 bank_account: account_number: DE53500105174515729675 bic: INGDDEFFXXX account_holder_name: John Doe currency: EUR legal_representative: first_name: John last_name: Doe phone: '+4917612345678' email: john@doe.mail date_of_birth: '1990-05-15' nationality: DEU documents: - type: PASSPORT id: C01X00T47 legal_address: address_line1: Musterstraße 12 address_line2: c/o Business GmbH postal_code: '12345' city: Musterstadt state: null country: DEU legal_representatives: - first_name: Jane last_name: Doe phone: '+4917698765432' email: jane@doe.mail date_of_birth: '1985-11-20' nationality: DEU documents: - type: NATIONAL_ID id: T220001293 legal_structure: LIMITED_LIABILITY_COMPANY metadata: ubos: - full_name: John Doe - full_name: Jane Doe payout_schedule: DAILY nace_code: '7010' legal_entity_type: LIMITED_LIABILITY_COMPANY mcc: 5411,5812 mcc_translation: Grocery stores platform_status: ACTIVE lei_code: 529900T8BM49AURSDO55 required: true responses: '200': description: Business kyb data added. content: application/json: schema: $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/201/content/application~1json/schema' examples: business: value: id: business-id legal_name: Business GmbH business_registration_number: DE123456789 tax_number: DE987654321 bank_account: account_number: DE53500105174515729675 bic: INGDDEFFXXX account_holder_name: John Doe account_number_ending: '9675' currency: EUR legal_representative: first_name: John last_name: Doe phone: '+4917612345678' email: john@doe.mail phone_ending: '5678' legal_address: address_line1: Musterstraße 12 address_line2: c/o Business GmbH postal_code: '12345' city: Musterstadt state: null country: DEU partnership_started_date: '2023-01-01' founding_date: '2023-01-01' metadata: ubos: - full_name: John Doe - full_name: Jane Doe payout_schedule: DAILY nace_code: '7010' legal_entity_type: LIMITED_LIABILITY_COMPANY mcc: 5411,5812 mcc_translation: Grocery stores platform_status: ACTIVE '400': $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}~1non-pi/put/responses/400' '401': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/401' '404': $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}/get/responses/404' '500': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/500' /api/v1/capital/businesses/{business_id}/kyb-document-uploads: post: tags: - Business operationId: create-kyb-business-document-upload summary: Upload KYB Document for a Business description: 'Create a document upload to provide Know Your Business (KYB) files for a business. This is a two-step flow: 1. **Create Upload** (this endpoint): Provide file metadata and receive a temporary `upload_url`. 2. **PUT File**: Upload the raw binary file contents to the returned `upload_url` with the `Content-Type` header matching `file_type`. A maximum of 25 documents per business can be uploaded. Uploading a file the business already holds — same `file_name` and `file_size` — is answered with `409 document_already_exists` and the id of the document it is stored under. The file is kept as uploaded the first time and does not count against the limit again, so a repeated upload is safe to ignore. **Example:** ```bash curl -X PUT \ -H "Content-Type: $file_type" \ --upload-file ./path/to/$file_name \ "$upload_url" ```' parameters: - $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}/get/parameters/0' requestBody: required: true content: application/json: schema: type: object required: - file_name - file_size - file_type properties: file_name: type: string description: File name including extension. Must not exceed 255 characters. maxLength: 255 example: commercial_register_extract.pdf file_size: type: integer format: int64 description: File size in bytes (minimum 1 KB, maximum 10 MB). Must match the actual file size uploaded to the `upload_url`. minimum: 1024 maximum: 10485760 example: 204800 file_type: type: string description: MIME type of the file. Must match the actual file type uploaded to the `upload_url`. enum: - application/pdf - image/jpeg - image/png example: application/pdf examples: pdf_upload: summary: Upload a PDF document value: file_name: commercial_register_extract.pdf file_size: 204800 file_type: application/pdf jpeg_upload: summary: Upload a picture of a document value: file_name: ubo_id_card.jpg file_size: 1048576 file_type: image/jpeg responses: '201': description: Upload created successfully content: application/json: schema: type: object required: - document_id - upload_url - upload_expiry properties: document_id: type: string format: uuid description: ID of the document to upload (can be used to reference the uploaded document). example: 3ec9a5ca-59d2-4412-a3bf-91466dc2d927 upload_url: type: string format: uri description: Temporary URL to upload the file via HTTP PUT. Set the `Content-Type` header to the MIME type provided in `file_type`. Expires after 15 minutes (see `upload_expiry`). A new upload can be created if the URL expires before the file is transferred. example: https://sfu-6134bce3217446eca2e90b966988d175-u.s3.eu-central-1.amazonaws.com/1fa41125-6bc5-470b-88d3-523b868259d9/sample.pdf?X-Amz-Signature=abc123... upload_expiry: type: string format: date-time description: Expiration time of the upload URL (ISO 8601 datetime). The file must be uploaded before this time. example: '2024-01-15T12:30:00.000Z' examples: success: value: document_id: f47ac10b-58cc-4372-a567-0e02b2c3d479 upload_url: https://sfu-6134bce3217446eca2e90b966988d175-u.s3.eu-central-1.amazonaws.com/1fa41125-6bc5-470b-88d3-523b868259d9/sample.pdf?X-Amz-Signature=abc123... upload_expiry: '2026-01-15T12:30:00.000Z' '400': description: Validation error content: application/json: schema: allOf: - $ref: '#/paths/~1api~1v1~1transaction/post/responses/400/content/application~1json/schema/allOf/0' examples: invalid_file_size: summary: File size is not within acceptable boundary value: code: validation_error description: Invalid file size. invalid_file_type: summary: File type is not supported value: code: validation_error description: Invalid file type. max_documents_reached: summary: Maximum number of documents reached for this business value: code: validation_error description: Maximum document limit reached. '401': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/401' '404': $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}/get/responses/404' '409': description: Conflict content: application/json: schema: allOf: - $ref: '#/paths/~1api~1v1~1transaction/post/responses/400/content/application~1json/schema/allOf/0' examples: document_already_exists: summary: The same file was already uploaded for this business value: code: document_already_exists description: The same file was already uploaded as document 'f47ac10b-58cc-4372-a567-0e02b2c3d479'. '500': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/500' /api/v1/capital/businesses/{business_id}/non-pi: put: tags: - Business operationId: update-business-non-pi summary: Update Business non-PI Data description: 'Update non-personally identifiable data for an existing Business. This endpoint can be used only for Businesses non-PI data updates. After KYB data is shared for a business this API will return an error. > 📘 > > Please note that this API is replacing all non-PI data for a Business. It is **not** a `PATCH` operation.' parameters: - $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}/get/parameters/0' requestBody: content: application/json: schema: type: object properties: bank_account: $ref: '#/paths/~1api~1v1~1capital~1businesses/post/requestBody/content/application~1json/schema/properties/bank_account' legal_representative: $ref: '#/paths/~1api~1v1~1capital~1businesses/post/requestBody/content/application~1json/schema/properties/legal_representative' metadata: type: object description: 'Contains a set of flexible, custom key-value pairs. Used for sharing extra data. Notable key: `mcc` — accepts a comma-separated string (`"5411,5812"`) or an array of strings; stored and returned as a comma-separated string. See Create Business for details. ' additionalProperties: true example: key: value partnership_started_date: description: Date when the Business started its partnership with the Platform. type: string format: date example: '2020-01-01' founding_date: description: Date when the Business was established. type: string format: date example: '2020-01-01' examples: update_business_non_pi: value: bank_account: account_number_ending: '4422' legal_representative: phone_ending: '5511' metadata: mcc: 5411,5812 mcc_translation: Grocery stores partnership_started_date: '2025-04-01' founding_date: '2025-04-01' required: true responses: '200': description: Business updated successfully. content: application/json: schema: $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/201/content/application~1json/schema' examples: business_updated: value: id: business-id legal_name: null business_registration_number: null tax_number: null bank_account: account_number: null bic: null account_holder_name: null account_number_ending: '4422' currency: EUR legal_representative: first_name: null last_name: null phone: null email: null phone_ending: '5511' legal_address: address_line1: null address_line2: null postal_code: null city: null state: null country: DEU partnership_started_date: '2025-04-01' founding_date: '2025-04-01' metadata: mcc: 5411,5812 mcc_translation: Grocery stores '400': description: Can't process request due to validation reasons. content: application/json: schema: allOf: - $ref: '#/paths/~1api~1v1~1transaction/post/responses/400/content/application~1json/schema/allOf/0' - type: object properties: code: type: string enum: - validation_error description: example: Some fields of the request don't match requirements. examples: validation_error: value: code: validation_error description: Some fields of the request don't match requirements. '401': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/401' '404': $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}/get/responses/404' '500': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/500' /api/v1/capital/businesses/{business_id}/performance-data: post: tags: - Business operationId: submit-business-performance-data summary: Submit Business performance data description: 'In order to generate Offers, finmid requires that Platforms share non-PI data on key Business performance indicators (e.g., goods sold, number of transactions, ratings, refund count, etc.). This data is used to confirm the Business''s eligibility for an Offer and to determine the terms of the Offer. **Guidelines:** - Multiple data points across multiple months may be submitted in a single API call. - All data points within a single API call must be associated with the same Business ID. - An API request must include at least one performance indicator per reported date; a request with an empty indicator object will be considered invalid. - Only completed reporting periods can be submitted. finmid aggregates the data at the resolution agreed during your integration setup, so a data point is accepted once the period it belongs to has ended: with monthly aggregation, any `report_date` inside the current month is rejected until the month is over, including a `YYYY-MM-DD` date; with daily aggregation, the current day is rejected until it is over. - If a single data point covers a period that has not ended yet, the whole request is rejected with `validation_error`.' parameters: - $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}/get/parameters/0' requestBody: content: application/json: schema: type: array items: type: object required: - report_date - indicators properties: report_date: type: string pattern: ^[0-9]{4}-[0-9]{2}(-[0-9]{2})?$ description: 'ISO 8601 date format. Either YYYY-MM (e.g., "2023-01") or YYYY-MM-DD (e.g., "2023-01-31"). The reporting period must have ended. finmid aggregates the data at the resolution agreed during your integration setup: with monthly aggregation a date inside the current month is rejected until the month is over, and with daily aggregation the current day is rejected until it is over. If a single data point covers a period that has not ended yet, the whole request is rejected with `validation_error`. ' example: 2023-01 indicators: description: 'Set of indicators to be reported. At least one indicator must be sent in this object. | Indicator | Format | Description | Required | | --- | --- | --- | --- | | `sales_amount` | float, up to 2 decimal numbers | Amount of aggregated sales in the currency of the business. | No | | `transactions_count` | integer | Total number of transactions performed. | No | | `refund_count` | integer | The number of refunds the business had | No | | `rating_value` | float | The average rating for the reported period | No | | `ratings_count` | integer | Number of ratings submitted from the customers | No | | `end_balance` | float | End of month account balance | No | | `incoming_amount` | float | Volume of incoming transactions | No | | `outgoing_amount` | float | Volume of outgoing transactions | No | | `incoming_transaction_count` | integer | Number of incoming transactions | No | | `outgoing_transaction_count` | integer | Number of outgoing transactions | No | ' type: object additionalProperties: true example: sales_amount: 3421.88 transactions_count: 148 refund_count: 13 rating_value: 3.45 ratings_count: 500 examples: performance_data_year_month: value: - reportDate: 2023-01 indicators: sales_amount: 3421.88 transactions_count: 148 refund_count: 13 rating_value: 3.45 ratings_count: 500 end_balance: 4135.54 incoming_amount: 89722.52 outgoing_amount: 92895.25 incoming_transaction_count: 52 outgoing_transaction_count: 46 - reportDate: 2023-02 indicators: sales_amount: 11.12 performance_data_year_month_day: value: - reportDate: '2023-03-31' indicators: sales_amount: 11.12 required: true responses: '204': description: Performance data accepted. '400': description: Can't process request due to validation reasons. content: application/json: schema: allOf: - $ref: '#/paths/~1api~1v1~1transaction/post/responses/400/content/application~1json/schema/allOf/0' - type: object properties: code: type: string enum: - validation_error examples: validation_error: summary: The request does not match the expected format value: code: validation_error description: Some fields of the request don't match requirements. report_date_not_elapsed: summary: A data point covers a reporting period that has not ended yet value: code: validation_error description: 'reportDate must be before 2023-04, got: 2023-04' '401': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/401' '404': $ref: '#/paths/~1api~1v1~1capital~1businesses~1{business_id}/get/responses/404' '500': $ref: '#/paths/~1api~1v1~1capital~1businesses/post/responses/500' components: securitySchemes: apiKeyScheme: type: apiKey in: header name: X-API-KEY x-provenance: method: searched source: https://docs.finmid.com/reference harvested: '2026-10-14' tool: harvest-readme-openapi.py note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored. assembled_from: - https://docs.finmid.com/reference/accept-funding-application.md - https://docs.finmid.com/reference/add-business-kyb-data.md - https://docs.finmid.com/reference/add-sales-statements.md - https://docs.finmid.com/reference/cancel-funding-application.md - https://docs.finmid.com/reference/complete-payment.md - https://docs.finmid.com/reference/create-business.md - https://docs.finmid.com/reference/create-csp-document-upload.md - https://docs.finmid.com/reference/create-kyb-business-document-upload.md - https://docs.finmid.com/reference/create-signature-link.md - https://docs.finmid.com/reference/delete-csp-document.md - https://docs.finmid.com/reference/execute-payment-transaction.md - https://docs.finmid.com/reference/fail-payment.md - https://docs.finmid.com/reference/finalize-csp-document-submission.md - https://docs.finmid.com/reference/get-active-offer-group.md - https://docs.finmid.com/reference/get-business.md - https://docs.finmid.com/reference/get-capital-max.md - https://docs.finmid.com/reference/get-current-offer-state.md - https://docs.finmid.com/reference/get-document-url.md - https://docs.finmid.com/reference/get-funding-applications.md - https://docs.finmid.com/reference/get-fundings-for-business.md - https://docs.finmid.com/reference/get-latest-onboarding.md - https://docs.finmid.com/reference/get-payment-batch.md - https://docs.finmid.com/reference/get-payments-for-credit.md - https://docs.finmid.com/reference/get-sales-statements.md - https://docs.finmid.com/reference/list-csp-documents.md - https://docs.finmid.com/reference/list-funding-documents.md - https://docs.finmid.com/reference/payout-credit.md - https://docs.finmid.com/reference/receive-incoming-webhook.md - https://docs.finmid.com/reference/receive-payout-outcome.md - https://docs.finmid.com/reference/reject-credit.md - https://docs.finmid.com/reference/reject-funding-application.md - https://docs.finmid.com/reference/report-funds-collection.md - https://docs.finmid.com/reference/report-payment.md - https://docs.finmid.com/reference/report-platform-check.md - https://docs.finmid.com/reference/schedule-payment.md - https://docs.finmid.com/reference/simulate-accept-offers.md - https://docs.finmid.com/reference/simulate-batch-payment.md - https://docs.finmid.com/reference/simulate-capital-max-review.md - https://docs.finmid.com/reference/simulate-create-funding.md - https://docs.finmid.com/reference/simulate-create-offers.md - https://docs.finmid.com/reference/simulate-expire-offers.md - https://docs.finmid.com/reference/submit-business-performance-data.md - https://docs.finmid.com/reference/update-business-non-pi.md merge: pages: 43 deduped: 199 conflicts_kept_first: 0