{
  "info": {
    "_postman_id": "58f2e17a-fba4-597d-9e35-15d8480609e9",
    "name": "Monato · Fincore",
    "description": "Fincore API 1.2.0. Generated from `products/fincore/fincore-openapi.yaml`.\n\nSelect the Monato Sandbox environment and fill in your credentials, then send any request.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "x-api-key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{fincoreApiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "// Creates and caches a Fincore bearer token before each request that needs one.",
          "// Uses POST /v1/clients/{clientId}/auth/credential-tokens (createCredentialToken).",
          "const path = pm.request.url.getPath();",
          "if (!path.includes('/credential-tokens') && !path.endsWith('/credentials')) {",
          "  const exp = Number(pm.collectionVariables.get('fincoreTokenExpiresAt') || 0);",
          "  if (!pm.collectionVariables.get('fincoreToken') || Date.now() > exp - 60000) {",
          "    pm.sendRequest({",
          "      url: pm.variables.replaceIn('{{fincoreBaseUrl}}/v1/clients/{{clientId}}/auth/credential-tokens'),",
          "      method: 'POST',",
          "      header: { 'x-api-key': pm.variables.get('fincoreApiKey'), 'Content-Type': 'application/json' },",
          "      body: { mode: 'raw', raw: JSON.stringify({ client_id: pm.variables.get('clientId'), client_secret: pm.variables.get('clientSecret') }) }",
          "    }, (err, res) => {",
          "      if (err || res.code >= 300) { console.warn('Fincore token request failed', err || res.text()); return; }",
          "      const j = res.json();",
          "      pm.collectionVariables.set('fincoreToken', j.token);",
          "      // expires_at is Mexico City time (UTC-6) without an offset, per the Fincore authentication guide.",
          "      let expiresAt = String(j.expires_at || '').replace(' ', 'T');",
          "      if (expiresAt && !/(Z|[+-]\\d\\d:?\\d\\d)$/i.test(expiresAt)) expiresAt += '-06:00';",
          "      const parsed = Date.parse(expiresAt);",
          "      pm.collectionVariables.set('fincoreTokenExpiresAt', String(isNaN(parsed) ? 0 : parsed));",
          "    });",
          "  }",
          "}"
        ]
      }
    }
  ],
  "item": [
    {
      "name": "Authentication",
      "description": "API key and bearer-token flows.",
      "item": [
        {
          "name": "Retrieve client credentials",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/credentials",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "credentials"
              ]
            },
            "description": "Returns the active credentials associated with a client. Use the `client_secret` returned here to create a bearer token with `POST /v1/clients/{clientId}/auth/credential-tokens`."
          },
          "response": [
            {
              "name": "200 Active client credentials",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/credentials",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "credentials"
                  ]
                }
              },
              "code": 200,
              "status": "A list of client credentials.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"e981c6d8-4d49-45f2-a7ee-f956dca15500\",\n      \"client_id\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n      \"client_secret\": \"client_secret_value\",\n      \"environment\": \"production\",\n      \"status\": \"ACTIVE\",\n      \"created_at\": \"2025-03-05T10:27:36.888241-06:00\",\n      \"updated_at\": \"2025-03-05T10:27:36.888241-06:00\",\n      \"deleted_at\": null,\n      \"api_key\": \"api_key_value\"\n    }\n  ]\n}"
            },
            {
              "name": "400 Invalid credentials lookup request. Possible causes: malformed `clientId` path parameter or invalid request metadata.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/credentials",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "credentials"
                  ]
                }
              },
              "code": 400,
              "status": "Invalid credentials lookup request. Possible causes: malformed `clientId` path parameter or invalid request metadata.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Authentication failed. Possible causes: missing `x-api-key`, invalid API key, or API key not valid for the requested environment.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/credentials",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "credentials"
                  ]
                }
              },
              "code": 401,
              "status": "Authentication failed. Possible causes: missing `x-api-key`, invalid API key, or API key not valid for the requested environment.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Client credentials were not found for the supplied `clientId`, or no active credential exists for the client.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/credentials",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "credentials"
                  ]
                }
              },
              "code": 404,
              "status": "Client credentials were not found for the supplied `clientId`, or no active credential exists for the client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/credentials",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "credentials"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create authentication token",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/auth/credential-tokens",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "auth",
                "credential-tokens"
              ]
            },
            "description": "Exchanges a `client_secret` for a JWT bearer token. Use the returned `token` in the `Authorization: Bearer <token>` header for authenticated Fincore endpoints. Tokens expire; create a new token after receiving `401 Unauthorized`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"client_id\": \"{{clientId}}\",\n  \"client_secret\": \"{{clientSecret}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 Successfully created credential token.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/auth/credential-tokens",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "auth",
                    "credential-tokens"
                  ]
                }
              },
              "code": 200,
              "status": "Successfully created credential token.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"1307f4e3-3960-4b98-9a14-0b6839245cc9\",\n  \"client_id\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"client_credential_id\": \"e981c6d8-4d49-45f2-a7ee-f956dca15500\",\n  \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnRfaWQiOiJjMmQxZDFlMy0zMzQwLTQxNzAtOTgwZS1lOTI2OWJiYmM1NTEiLCJleHAiOjE3NDEyODE0MTl9.ziSqMClLqwUVfyM15bqUF_7-PINY0ZiWkH01s8pO3gA\",\n  \"status\": \"ACTIVE\",\n  \"expires_at\": \"2025-03-06 11:16:59.491631\",\n  \"created_at\": \"2025-03-05 11:16:59.488685-06:00\",\n  \"updated_at\": \"2025-03-05 11:16:59.488685-06:00\",\n  \"deleted_at\": null\n}"
            },
            {
              "name": "400 Token creation request is invalid. Possible causes: malformed `clientId`, missing `client_id`, missing `client_secret`, or `client_id` not matching the path client. It also fails when the credential is inactive, deleted, or not valid for the target environment.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/auth/credential-tokens",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "auth",
                    "credential-tokens"
                  ]
                }
              },
              "code": 400,
              "status": "Token creation request is invalid. Possible causes: malformed `clientId`, missing `client_id`, missing `client_secret`, or `client_id` not matching the path client. It also fails when the credential is inactive, deleted, or not valid for the target environment.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Authentication failed. Possible causes: missing `x-api-key`, invalid API key, invalid client secret, or credentials that do not belong to the requested client.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/auth/credential-tokens",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "auth",
                    "credential-tokens"
                  ]
                }
              },
              "code": 401,
              "status": "Authentication failed. Possible causes: missing `x-api-key`, invalid API key, invalid client secret, or credentials that do not belong to the requested client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/auth/credential-tokens",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "auth",
                    "credential-tokens"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Catalogs",
      "description": "SPEI participant catalogs.",
      "item": [
        {
          "name": "Retrieve catalog of SPEI participants",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/banks",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "banks"
              ]
            },
            "description": "Returns a paginated list of bank and institutions that are part of the SPEI Network.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/banks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "banks"
                  ]
                }
              },
              "code": 200,
              "status": "A list of institutions",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"total_banks\": 1,\n  \"page\": 1,\n  \"page_size\": 50,\n  \"banks\": [\n    {\n      \"id\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n      \"name\": \"FINCO_PAY\",\n      \"token\": \"734\",\n      \"BIM\": \"734\",\n      \"code\": \"90734\",\n      \"bank_status\": \"ACTIVE\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Bearer token is missing, expired, invalid, or not valid for the requested environment.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/banks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "banks"
                  ]
                }
              },
              "code": 401,
              "status": "Bearer token is missing, expired, invalid, or not valid for the requested environment.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/banks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "banks"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Accounts",
      "description": "Centralizing accounts, private accounts, and account lifecycle.",
      "item": [
        {
          "name": "Retrieve accounts for a client",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "accounts"
              ]
            },
            "description": "Returns a paginated list of accounts for the client. The Centralizing Account is identified by `accountType = CENTRALIZING_ACCOUNT`; private accounts are identified by `accountType = PRIVATE_ACCOUNT`.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Successful response with account details",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts"
                  ]
                }
              },
              "code": 200,
              "status": "Successful response with account details",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"currentPage\": 1,\n  \"perPage\": 50,\n  \"totalItem\": 1,\n  \"data\": [\n    {\n      \"id\": \"24a726ac-180d-48df-82bc-711f2788a46f\",\n      \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n      \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n      \"clientBankAdapterId\": \"5b3a1b67-ab59-4cc1-8fc6-1d558b32b237\",\n      \"accountId\": \"00000000-0000-0000-0000-000000000000\",\n      \"instrumentId\": \"709448c3-7cbf-454d-a87e-feb23801269a\",\n      \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n      \"ownerType\": \"CLIENT\",\n      \"accountNumber\": \"000001000004\",\n      \"clabeNumber\": \"734180000001000004\",\n      \"availableBalance\": \"0.00\",\n      \"accountType\": \"PRIVATE_ACCOUNT\",\n      \"accountStatus\": \"ACTIVE\",\n      \"audit\": {\n        \"createdAt\": \"2025-03-05 11:00:56.264527-06:00\",\n        \"updatedAt\": \"2025-03-05 11:00:56.264527-06:00\",\n        \"deletedAt\": \"None\",\n        \"blockedAt\": \"None\",\n        \"activatedAt\": null,\n        \"suspendedAt\": null\n      },\n      \"bankAdapter\": \"SIES\"\n    }\n  ]\n}"
            },
            {
              "name": "400 Account lookup request is invalid. Possible causes: malformed `clientId` path parameter or unsupported pagination/filter values.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts"
                  ]
                }
              },
              "code": 400,
              "status": "Account lookup request is invalid. Possible causes: malformed `clientId` path parameter or unsupported pagination/filter values.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Bearer token is missing, expired, invalid, or does not belong to the requested client.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts"
                  ]
                }
              },
              "code": 401,
              "status": "Bearer token is missing, expired, invalid, or does not belong to the requested client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create a private account",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/private_accounts",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "private_accounts"
              ]
            },
            "description": "Creates a private CLABE for the client. Private accounts receive money by default. Set `sender_receiver_type = true` at creation time only when the private account must also send Money Out; this setting cannot be changed later.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"bank_id\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"owner_id\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"client_bank_adapter_id\": \"5b3a1b67-ab59-4cc1-8fc6-1d558b32b237\",\n  \"client_id\": \"{{clientId}}\",\n  \"account_id\": \"24a726ac-180d-48df-82bc-711f2788a46f\",\n  \"sender_receiver_type\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Private account created successfully.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "private_accounts"
                  ]
                }
              },
              "code": 200,
              "status": "Private account created successfully.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"750ab428-b401-4b58-8a95-502bcb7b1bf8\",\n  \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"clientBankAdapterId\": \"5b3a1b67-ab59-4cc1-8fc6-1d558b32b237\",\n  \"accountId\": \"24a726ac-180d-48df-82bc-711f2788a46f\",\n  \"instrumentId\": \"ab502fce-1162-42f3-99d6-972989a06049\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerType\": \"CLIENT\",\n  \"accountNumber\": \"000001233635\",\n  \"clabeNumber\": \"734180000001233635\",\n  \"availableBalance\": \"0.00\",\n  \"accountType\": \"PRIVATE_ACCOUNT\",\n  \"accountStatus\": \"ACTIVE\",\n  \"audit\": {\n    \"createdAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"updatedAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"deletedAt\": null,\n    \"blockedAt\": null,\n    \"activatedAt\": null,\n    \"suspendedAt\": null\n  },\n  \"bankAdapter\": \"SIES\"\n}"
            },
            {
              "name": "400 Private account request is invalid. Possible causes: missing required account fields, malformed UUIDs, invalid `sender_receiver_type`, or inconsistent client/account identifiers. It also fails when the account conflicts with an existing record.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "private_accounts"
                  ]
                }
              },
              "code": 400,
              "status": "Private account request is invalid. Possible causes: missing required account fields, malformed UUIDs, invalid `sender_receiver_type`, or inconsistent client/account identifiers. It also fails when the account conflicts with an existing record.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Bearer token is missing, expired, invalid, or does not belong to the requested client.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "private_accounts"
                  ]
                }
              },
              "code": 401,
              "status": "Bearer token is missing, expired, invalid, or does not belong to the requested client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "403 Authenticated caller cannot create a private account for the supplied client, owner, bank, or adapter.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "private_accounts"
                  ]
                }
              },
              "code": 403,
              "status": "Authenticated caller cannot create a private account for the supplied client, owner, bank, or adapter.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "private_accounts"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Block an account",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/block",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "accounts",
                ":id",
                "block"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                  "description": "Account UUID."
                }
              ]
            },
            "description": "Blocks an active account. Blocked accounts can be reactivated.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Account blocked.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/block",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "block"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Account blocked.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"750ab428-b401-4b58-8a95-502bcb7b1bf8\",\n  \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"clientBankAdapterId\": \"5b3a1b67-ab59-4cc1-8fc6-1d558b32b237\",\n  \"accountId\": \"24a726ac-180d-48df-82bc-711f2788a46f\",\n  \"instrumentId\": \"ab502fce-1162-42f3-99d6-972989a06049\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerType\": \"CLIENT\",\n  \"accountNumber\": \"000001233635\",\n  \"clabeNumber\": \"734180000001233635\",\n  \"availableBalance\": \"0.00\",\n  \"accountType\": \"PRIVATE_ACCOUNT\",\n  \"accountStatus\": \"ACTIVE\",\n  \"audit\": {\n    \"createdAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"updatedAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"deletedAt\": null,\n    \"blockedAt\": null,\n    \"activatedAt\": null,\n    \"suspendedAt\": null\n  },\n  \"bankAdapter\": \"SIES\"\n}"
            },
            {
              "name": "400 Block request is invalid. Possible causes: malformed `clientId` or account `id`, account cannot transition to `BLOCKED`, or account type does not support blocking.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/block",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "block"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Block request is invalid. Possible causes: malformed `clientId` or account `id`, account cannot transition to `BLOCKED`, or account type does not support blocking.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/block",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "block"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "403 Account does not belong to the authenticated client or caller is not allowed to change the account state.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/block",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "block"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 403,
              "status": "Account does not belong to the authenticated client or caller is not allowed to change the account state.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Account was not found for the supplied client.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/block",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "block"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Account was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Activate a blocked or suspended account",
          "request": {
            "method": "PATCH",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/activate",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "accounts",
                ":id",
                "activate"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                  "description": "Account UUID."
                }
              ]
            },
            "description": "Reactivates an account that is currently `BLOCKED` or `SUSPENDED`.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Account activated.",
              "originalRequest": {
                "method": "PATCH",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/activate",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "activate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Account activated.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"750ab428-b401-4b58-8a95-502bcb7b1bf8\",\n  \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"clientBankAdapterId\": \"5b3a1b67-ab59-4cc1-8fc6-1d558b32b237\",\n  \"accountId\": \"24a726ac-180d-48df-82bc-711f2788a46f\",\n  \"instrumentId\": \"ab502fce-1162-42f3-99d6-972989a06049\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerType\": \"CLIENT\",\n  \"accountNumber\": \"000001233635\",\n  \"clabeNumber\": \"734180000001233635\",\n  \"availableBalance\": \"0.00\",\n  \"accountType\": \"PRIVATE_ACCOUNT\",\n  \"accountStatus\": \"ACTIVE\",\n  \"audit\": {\n    \"createdAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"updatedAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"deletedAt\": null,\n    \"blockedAt\": null,\n    \"activatedAt\": null,\n    \"suspendedAt\": null\n  },\n  \"bankAdapter\": \"SIES\"\n}"
            },
            {
              "name": "400 Activation request is invalid. Possible causes: malformed `clientId` or account `id`, account cannot transition to `ACTIVE`, or account type does not support activation.",
              "originalRequest": {
                "method": "PATCH",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/activate",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "activate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Activation request is invalid. Possible causes: malformed `clientId` or account `id`, account cannot transition to `ACTIVE`, or account type does not support activation.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "PATCH",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/activate",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "activate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "403 Account does not belong to the authenticated client or caller is not allowed to change the account state.",
              "originalRequest": {
                "method": "PATCH",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/activate",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "activate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 403,
              "status": "Account does not belong to the authenticated client or caller is not allowed to change the account state.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Account was not found for the supplied client.",
              "originalRequest": {
                "method": "PATCH",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/activate",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "activate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Account was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Cancel a private account",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/cancel",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "accounts",
                ":id",
                "cancel"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                  "description": "Account UUID."
                }
              ]
            },
            "description": "Permanently cancels a private account. The account must belong to the client, must be a `PRIVATE_ACCOUNT`, and its balance must be zero.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Account cancelled.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/cancel",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Account cancelled.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"750ab428-b401-4b58-8a95-502bcb7b1bf8\",\n  \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"clientBankAdapterId\": \"5b3a1b67-ab59-4cc1-8fc6-1d558b32b237\",\n  \"accountId\": \"24a726ac-180d-48df-82bc-711f2788a46f\",\n  \"instrumentId\": \"ab502fce-1162-42f3-99d6-972989a06049\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerType\": \"CLIENT\",\n  \"accountNumber\": \"000001233635\",\n  \"clabeNumber\": \"734180000001233635\",\n  \"availableBalance\": \"0.00\",\n  \"accountType\": \"PRIVATE_ACCOUNT\",\n  \"accountStatus\": \"ACTIVE\",\n  \"audit\": {\n    \"createdAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"updatedAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"deletedAt\": null,\n    \"blockedAt\": null,\n    \"activatedAt\": null,\n    \"suspendedAt\": null\n  },\n  \"bankAdapter\": \"SIES\"\n}"
            },
            {
              "name": "400 Balance must be zero",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/cancel",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Invalid cancellation request. Common causes: account already cancelled, account is not a Private Account, or balance is not zero.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid account balance, account balance must be equal to 0\",\n        \"http_code\": \"400\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/cancel",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "403 Account does not belong to the authenticated client or caller is not allowed to cancel it.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/cancel",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 403,
              "status": "Account does not belong to the authenticated client or caller is not allowed to cancel it.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Account was not found for the supplied client.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/accounts/:id/cancel",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "accounts",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "750ab428-b401-4b58-8a95-502bcb7b1bf8",
                      "description": "Account UUID."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Account was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Instruments",
      "description": "Bank-account and debit-card payment instruments.",
      "item": [
        {
          "name": "Add an instrument to the trusted whitelist",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId/whitelist",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "instruments",
                ":instrumentId",
                "whitelist"
              ],
              "variable": [
                {
                  "key": "instrumentId",
                  "value": "",
                  "description": "UUID of the instrument to add to the whitelist."
                }
              ]
            },
            "description": "Marks a destination instrument as trusted so that high-value Money Out transactions to it skip the manual operator review. The instrument must belong to the client and meet the age and transaction-history requirements. This operation is not idempotent: adding an instrument that is already whitelisted returns a conflict.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Instrument added to the whitelist.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId/whitelist",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId",
                    "whitelist"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "UUID of the instrument to add to the whitelist."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Instrument added to the whitelist.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"8f14e45f-ceea-467a-9f0a-1b2c3d4e5f60\",\n  \"instrumentId\": \"d3fdb481-2058-46c8-807d-4eaf866ae1ec\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"instrumentWhitelistStatus\": \"ACTIVE\",\n  \"audit\": {\n    \"createdAt\": \"2026-09-21T13:03:36.194761-06:00\",\n    \"updatedAt\": \"2026-09-21T13:03:36.194761-06:00\"\n  }\n}"
            },
            {
              "name": "400 The supplied `clientId` or `instrumentId` is not a valid UUID, or a whitelist rule was not met: the instrument is already whitelisted, the client reached the maximum of 10 active whitelisted instruments, the instrument was created less than 72 hours ago, or it does not have at least 3 liquidated transactions as destination. Rule failures are returned as `FAILED_PRECONDITION` with error code `20-E4120`.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId/whitelist",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId",
                    "whitelist"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "UUID of the instrument to add to the whitelist."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "The supplied `clientId` or `instrumentId` is not a valid UUID, or a whitelist rule was not met: the instrument is already whitelisted, the client reached the maximum of 10 active whitelisted instruments, the instrument was created less than 72 hours ago, or it does not have at least 3 liquidated transactions as destination. Rule failures are returned as `FAILED_PRECONDITION` with error code `20-E4120`.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 The bearer token is missing, expired, invalid, or not valid for the environment.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId/whitelist",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId",
                    "whitelist"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "UUID of the instrument to add to the whitelist."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "The bearer token is missing, expired, invalid, or not valid for the environment.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 No active instrument was found for the supplied client.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId/whitelist",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId",
                    "whitelist"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "UUID of the instrument to add to the whitelist."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "No active instrument was found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId/whitelist",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId",
                    "whitelist"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "UUID of the instrument to add to the whitelist."
                    }
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Retrieve a single instrument",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "instruments",
                ":instrumentId"
              ],
              "variable": [
                {
                  "key": "instrumentId",
                  "value": "",
                  "description": "Instrument identifier (UUID)."
                }
              ]
            },
            "description": "Retrieves an instrument for the specified client. The instrument must belong to the client or to one of its customers; otherwise an error is returned.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Instrument details.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "Instrument identifier (UUID)."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Instrument details.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"dd7f8d89-94dd-43ca-871b-720fde378b52\",\n  \"bankId\": \"d3435bd9-998d-4e8a-9067-6b71d5fd3ac7\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"alias\": \"Instrumento base\",\n  \"type\": \"RECEIVER\",\n  \"audit\": {\n    \"createdAt\": \"2025-05-19 19:03:51.084659-06:00\",\n    \"updatedAt\": \"2025-05-19 19:03:51.084668-06:00\",\n    \"deletedAt\": null,\n    \"blockedAt\": null\n  },\n  \"rfc\": \"XAXX010101000\",\n  \"customerId\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\",\n  \"instrumentDetail\": {\n    \"cardNumber\": \"5579072268574100\",\n    \"expirationDate\": null,\n    \"holderName\": \"John Smith\"\n  }\n}"
            },
            {
              "name": "400 Instrument lookup request is invalid. Possible causes: malformed `clientId` or `instrumentId`.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "Instrument identifier (UUID)."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Instrument lookup request is invalid. Possible causes: malformed `clientId` or `instrumentId`.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "Instrument identifier (UUID)."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Instrument was not found or does not belong to the client.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "Instrument identifier (UUID)."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Instrument was not found or does not belong to the client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments/:instrumentId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments",
                    ":instrumentId"
                  ],
                  "variable": [
                    {
                      "key": "instrumentId",
                      "value": "",
                      "description": "Instrument identifier (UUID)."
                    }
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "List instruments for a client",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "instruments"
              ],
              "query": [
                {
                  "key": "customer_id",
                  "value": "",
                  "description": "Optional customer UUID. When provided, filters instruments for this customer only.",
                  "disabled": true
                },
                {
                  "key": "page",
                  "value": "",
                  "description": "Page number (1-based).",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "",
                  "description": "Number of items per page.",
                  "disabled": true
                },
                {
                  "key": "instrument_number",
                  "value": "",
                  "description": "Optional CLABE or debit-card number filter.",
                  "disabled": true
                },
                {
                  "key": "bank_id",
                  "value": "",
                  "description": "Optional destination bank UUID filter.",
                  "disabled": true
                },
                {
                  "key": "instrument_name",
                  "value": "",
                  "description": "Optional holder-name filter.",
                  "disabled": true
                }
              ]
            },
            "description": "Returns a paginated list of instruments belonging to the specified client and its customers.\n- Without `customer_id`, it returns instruments for the client and all associated customers.\n- With `customer_id`, it returns only instruments for that customer.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 List of instruments for the client (and optionally a specific customer).",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ],
                  "query": [
                    {
                      "key": "customer_id",
                      "value": "",
                      "description": "Optional customer UUID. When provided, filters instruments for this customer only.",
                      "disabled": true
                    },
                    {
                      "key": "page",
                      "value": "",
                      "description": "Page number (1-based).",
                      "disabled": true
                    },
                    {
                      "key": "per_page",
                      "value": "",
                      "description": "Number of items per page.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_number",
                      "value": "",
                      "description": "Optional CLABE or debit-card number filter.",
                      "disabled": true
                    },
                    {
                      "key": "bank_id",
                      "value": "",
                      "description": "Optional destination bank UUID filter.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_name",
                      "value": "",
                      "description": "Optional holder-name filter.",
                      "disabled": true
                    }
                  ]
                }
              },
              "code": 200,
              "status": "List of instruments for the client (and optionally a specific customer).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"dd7f8d89-94dd-43ca-871b-720fde378b52\",\n      \"bankId\": \"d3435bd9-998d-4e8a-9067-6b71d5fd3ac7\",\n      \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n      \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n      \"alias\": \"Instrumento base\",\n      \"type\": \"RECEIVER\",\n      \"audit\": {\n        \"createdAt\": \"2025-05-19 19:03:51.084659-06:00\",\n        \"updatedAt\": \"2025-05-19 19:03:51.084668-06:00\",\n        \"deletedAt\": null,\n        \"blockedAt\": null\n      },\n      \"rfc\": \"XAXX010101000\",\n      \"customerId\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\",\n      \"instrumentDetail\": {\n        \"cardNumber\": \"5579072268574100\",\n        \"expirationDate\": null,\n        \"holderName\": \"John Smith\"\n      }\n    }\n  ],\n  \"currentPage\": 1,\n  \"perPage\": 50,\n  \"totalItems\": 17\n}"
            },
            {
              "name": "400 Instrument list request is invalid. Possible causes: malformed `clientId`, malformed filter UUIDs, invalid pagination values, or unsupported instrument filter values.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ],
                  "query": [
                    {
                      "key": "customer_id",
                      "value": "",
                      "description": "Optional customer UUID. When provided, filters instruments for this customer only.",
                      "disabled": true
                    },
                    {
                      "key": "page",
                      "value": "",
                      "description": "Page number (1-based).",
                      "disabled": true
                    },
                    {
                      "key": "per_page",
                      "value": "",
                      "description": "Number of items per page.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_number",
                      "value": "",
                      "description": "Optional CLABE or debit-card number filter.",
                      "disabled": true
                    },
                    {
                      "key": "bank_id",
                      "value": "",
                      "description": "Optional destination bank UUID filter.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_name",
                      "value": "",
                      "description": "Optional holder-name filter.",
                      "disabled": true
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Instrument list request is invalid. Possible causes: malformed `clientId`, malformed filter UUIDs, invalid pagination values, or unsupported instrument filter values.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ],
                  "query": [
                    {
                      "key": "customer_id",
                      "value": "",
                      "description": "Optional customer UUID. When provided, filters instruments for this customer only.",
                      "disabled": true
                    },
                    {
                      "key": "page",
                      "value": "",
                      "description": "Page number (1-based).",
                      "disabled": true
                    },
                    {
                      "key": "per_page",
                      "value": "",
                      "description": "Number of items per page.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_number",
                      "value": "",
                      "description": "Optional CLABE or debit-card number filter.",
                      "disabled": true
                    },
                    {
                      "key": "bank_id",
                      "value": "",
                      "description": "Optional destination bank UUID filter.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_name",
                      "value": "",
                      "description": "Optional holder-name filter.",
                      "disabled": true
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Client or filtered customer was not found.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ],
                  "query": [
                    {
                      "key": "customer_id",
                      "value": "",
                      "description": "Optional customer UUID. When provided, filters instruments for this customer only.",
                      "disabled": true
                    },
                    {
                      "key": "page",
                      "value": "",
                      "description": "Page number (1-based).",
                      "disabled": true
                    },
                    {
                      "key": "per_page",
                      "value": "",
                      "description": "Number of items per page.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_number",
                      "value": "",
                      "description": "Optional CLABE or debit-card number filter.",
                      "disabled": true
                    },
                    {
                      "key": "bank_id",
                      "value": "",
                      "description": "Optional destination bank UUID filter.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_name",
                      "value": "",
                      "description": "Optional holder-name filter.",
                      "disabled": true
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Client or filtered customer was not found.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ],
                  "query": [
                    {
                      "key": "customer_id",
                      "value": "",
                      "description": "Optional customer UUID. When provided, filters instruments for this customer only.",
                      "disabled": true
                    },
                    {
                      "key": "page",
                      "value": "",
                      "description": "Page number (1-based).",
                      "disabled": true
                    },
                    {
                      "key": "per_page",
                      "value": "",
                      "description": "Number of items per page.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_number",
                      "value": "",
                      "description": "Optional CLABE or debit-card number filter.",
                      "disabled": true
                    },
                    {
                      "key": "bank_id",
                      "value": "",
                      "description": "Optional destination bank UUID filter.",
                      "disabled": true
                    },
                    {
                      "key": "instrument_name",
                      "value": "",
                      "description": "Optional holder-name filter.",
                      "disabled": true
                    }
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Register an instrument for a client · Add debit card",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "instruments"
              ]
            },
            "description": "Registers an instrument owned by the specified client or by one of its customers.\nThe request body must include exactly one payment method: `debit_card` or `virtual_clabe`.\nUse `type = RECEIVER` for recipients. Use `type = SENDER_RECEIVER` only for\ninstruments that can both send and receive.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"source_bank_id\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"client_id\": \"{{clientId}}\",\n  \"customer_id\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\",\n  \"type\": \"RECEIVER\",\n  \"rfc\": \"XAXX010101000\",\n  \"alias\": \"Tarjeta ABC123\",\n  \"debit_card\": {\n    \"destination_bank_id\": \"3054ff18-32a0-478d-b9fe-b5261f9a6e1f\",\n    \"card_number\": \"5579072268574100\",\n    \"holder_name\": \"Pedro Navajas Dos\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Created debit card instrument",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 200,
              "status": "Instrument created",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"dd7f8d89-94dd-43ca-871b-720fde378b52\",\n  \"bankId\": \"d3435bd9-998d-4e8a-9067-6b71d5fd3ac7\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"alias\": \"Tarjeta con expiracion\",\n  \"type\": \"RECEIVER\",\n  \"instrumentDetail\": {\n    \"cardNumber\": \"5579072268574100\",\n    \"expirationDate\": \"None\",\n    \"holderName\": \"Pedro Navajas Dos\"\n  },\n  \"audit\": {\n    \"createdAt\": \"2025-05-19 19:03:51.084659-06:00\",\n    \"updatedAt\": \"2025-05-19 19:03:51.084659-06:00\",\n    \"deletedAt\": \"None\",\n    \"blockedAt\": \"None\"\n  },\n  \"rfc\": \"XAXX010101000\",\n  \"customerId\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\"\n}"
            },
            {
              "name": "200 Created CLABE instrument",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 200,
              "status": "Instrument created",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"2e7e36f8-d3ba-48a0-872e-f093379d6a4f\",\n  \"bankId\": \"3054ff18-32a0-478d-b9fe-b5261f9a6e1f\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"alias\": \"CLABE XYZ123\",\n  \"type\": \"RECEIVER\",\n  \"instrumentDetail\": {\n    \"accountNumber\": \"006487113111\",\n    \"clabeNumber\": \"002118006487113111\",\n    \"holderName\": \"Pedro Navajas Perez\"\n  },\n  \"audit\": {\n    \"createdAt\": \"2025-08-11 13:52:21.702839-06:00\",\n    \"updatedAt\": \"2025-08-11 13:52:21.702839-06:00\",\n    \"deletedAt\": \"None\",\n    \"blockedAt\": \"None\"\n  },\n  \"rfc\": \"XAXX010101000\"\n}"
            },
            {
              "name": "400 Instrument registration request is invalid. Possible causes: missing required fields, malformed UUIDs, invalid instrument type, invalid CLABE, invalid debit-card number, unsupported BIN, invalid holder name, or sending both `virtual_clabe` and `debit_card`. It also fails when the instrument conflicts with an existing beneficiary.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 400,
              "status": "Instrument registration request is invalid. Possible causes: missing required fields, malformed UUIDs, invalid instrument type, invalid CLABE, invalid debit-card number, unsupported BIN, invalid holder name, or sending both `virtual_clabe` and `debit_card`. It also fails when the instrument conflicts with an existing beneficiary.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Client, customer, source bank, or destination bank was not found.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 404,
              "status": "Client, customer, source bank, or destination bank was not found.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Register an instrument for a client · Add CLABE",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "instruments"
              ]
            },
            "description": "Registers an instrument owned by the specified client or by one of its customers.\nThe request body must include exactly one payment method: `debit_card` or `virtual_clabe`.\nUse `type = RECEIVER` for recipients. Use `type = SENDER_RECEIVER` only for\ninstruments that can both send and receive.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"source_bank_id\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"client_id\": \"{{clientId}}\",\n  \"type\": \"RECEIVER\",\n  \"rfc\": \"XAXX010101000\",\n  \"alias\": \"CLABE XYZ123\",\n  \"virtual_clabe\": {\n    \"destination_bank_id\": \"3054ff18-32a0-478d-b9fe-b5261f9a6e1f\",\n    \"account_number\": \"006487113111\",\n    \"clabe_number\": \"002118006487113111\",\n    \"holder_name\": \"Pedro Navajas Perez\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Created debit card instrument",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 200,
              "status": "Instrument created",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"dd7f8d89-94dd-43ca-871b-720fde378b52\",\n  \"bankId\": \"d3435bd9-998d-4e8a-9067-6b71d5fd3ac7\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"alias\": \"Tarjeta con expiracion\",\n  \"type\": \"RECEIVER\",\n  \"instrumentDetail\": {\n    \"cardNumber\": \"5579072268574100\",\n    \"expirationDate\": \"None\",\n    \"holderName\": \"Pedro Navajas Dos\"\n  },\n  \"audit\": {\n    \"createdAt\": \"2025-05-19 19:03:51.084659-06:00\",\n    \"updatedAt\": \"2025-05-19 19:03:51.084659-06:00\",\n    \"deletedAt\": \"None\",\n    \"blockedAt\": \"None\"\n  },\n  \"rfc\": \"XAXX010101000\",\n  \"customerId\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\"\n}"
            },
            {
              "name": "200 Created CLABE instrument",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 200,
              "status": "Instrument created",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"2e7e36f8-d3ba-48a0-872e-f093379d6a4f\",\n  \"bankId\": \"3054ff18-32a0-478d-b9fe-b5261f9a6e1f\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"alias\": \"CLABE XYZ123\",\n  \"type\": \"RECEIVER\",\n  \"instrumentDetail\": {\n    \"accountNumber\": \"006487113111\",\n    \"clabeNumber\": \"002118006487113111\",\n    \"holderName\": \"Pedro Navajas Perez\"\n  },\n  \"audit\": {\n    \"createdAt\": \"2025-08-11 13:52:21.702839-06:00\",\n    \"updatedAt\": \"2025-08-11 13:52:21.702839-06:00\",\n    \"deletedAt\": \"None\",\n    \"blockedAt\": \"None\"\n  },\n  \"rfc\": \"XAXX010101000\"\n}"
            },
            {
              "name": "400 Instrument registration request is invalid. Possible causes: missing required fields, malformed UUIDs, invalid instrument type, invalid CLABE, invalid debit-card number, unsupported BIN, invalid holder name, or sending both `virtual_clabe` and `debit_card`. It also fails when the instrument conflicts with an existing beneficiary.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 400,
              "status": "Instrument registration request is invalid. Possible causes: missing required fields, malformed UUIDs, invalid instrument type, invalid CLABE, invalid debit-card number, unsupported BIN, invalid holder name, or sending both `virtual_clabe` and `debit_card`. It also fails when the instrument conflicts with an existing beneficiary.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Client, customer, source bank, or destination bank was not found.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 404,
              "status": "Client, customer, source bank, or destination bank was not found.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/instruments",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "instruments"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Transactions",
      "description": "Money Out, refunds, internal transfers, and Penny Validation.",
      "item": [
        {
          "name": "Create a money out transaction",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "66c0b04f-97d6-592d-8396-199819064afa",
                "description": "Optional deterministic UUID v5 used for safe retries. See [Idempotency](/products/fincore/guides/idempotency.md) for key generation, TTL, and conflict behavior.",
                "disabled": true
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/transactions/money_out",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "transactions",
                "money_out"
              ]
            },
            "description": "Initiate an outbound transfer. If the destination instrument belongs to a Finco Pay (Monato) account, the system automatically routes the transaction as an internal book-to-book transfer; no SPEI, near-real-time settlement. Routing is handled transparently; no changes to the request body are required.\nMoney Out can also be used for Penny Validation when the transfer amount is `0.01` MXN and the validation flow is enabled for the client. In that case, the transaction can include CEP validation metadata in `metadata.dataCep`; see the Penny Validation guide for the flow-specific contract.\nThis endpoint supports Idempotency via the `Idempotency-Key` header (TTL: 24h). Reuse the same key with the exact same body for safe retries. See the Idempotency guide for details.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"client_id\": \"{{clientId}}\",\n  \"source_instrument_id\": \"709448c3-7cbf-454d-a87e-feb23801269a\",\n  \"destination_instrument_id\": \"d3fdb481-2058-46c8-807d-4eaf866ae1ec\",\n  \"transaction_request\": {\n    \"external_reference\": \"1234567\",\n    \"description\": \"Supplier payment\",\n    \"amount\": \"1.95\",\n    \"currency\": \"MXN\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Successfully created transaction",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/money_out",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "money_out"
                  ]
                }
              },
              "code": 200,
              "status": "Successfully created transaction",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"16811ee8-1ef9-4dd4-8d84-9c2df89cf302\",\n  \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"externalReference\": \"1234567\",\n  \"trackingId\": \"20250306FINCHVLIKQ5SKUM\",\n  \"description\": \"Supplier payment\",\n  \"amount\": \"1.95\",\n  \"currency\": \"MXN\",\n  \"category\": \"DEBIT_TRANS\",\n  \"subCategory\": \"SPEI_DEBIT\",\n  \"transactionStatus\": \"INITIALIZED\",\n  \"audit\": {\n    \"createdAt\": \"2025-03-06 11:57:55.408000-06:00\",\n    \"updatedAt\": \"2025-03-06 11:57:55.408000-06:00\",\n    \"deletedAt\": \"None\",\n    \"blockedAt\": \"None\"\n  }\n}"
            },
            {
              "name": "400 Insufficient funds",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/money_out",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "money_out"
                  ]
                }
              },
              "code": 400,
              "status": "Money Out validation failed. Possible causes: insufficient funds, inactive source or destination instrument, invalid amount, unsupported currency, invalid external reference, invalid description, or missing required transaction fields. It also covers client or rail state that prevents the transfer.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "400 Invalid description",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/money_out",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "money_out"
                  ]
                }
              },
              "code": 400,
              "status": "Money Out validation failed. Possible causes: insufficient funds, inactive source or destination instrument, invalid amount, unsupported currency, invalid external reference, invalid description, or missing required transaction fields. It also covers client or rail state that prevents the transfer.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 3,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"DATA_ERROR\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Transaction description must have less than 40 characters length.\",\n        \"http_code\": \"400\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/money_out",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "money_out"
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Source instrument, destination instrument, client, bank, or related account was not found.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/money_out",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "money_out"
                  ]
                }
              },
              "code": 404,
              "status": "Source instrument, destination instrument, client, bank, or related account was not found.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "409 Same key with different payload",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/money_out",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "money_out"
                  ]
                }
              },
              "code": 409,
              "status": "Idempotency conflict. Possible causes: same `Idempotency-Key` reused with a different payload, or the original request is still in progress.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Idempotency key does not match the request payload\",\n        \"http_code\": \"409\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "409 Duplicate request in flight",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/money_out",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "money_out"
                  ]
                }
              },
              "code": 409,
              "status": "Idempotency conflict. Possible causes: same `Idempotency-Key` reused with a different payload, or the original request is still in progress.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Operation money_out in progress\",\n        \"http_code\": \"409\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/money_out",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "money_out"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Start Penny Validation",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "66c0b04f-97d6-592d-8396-199819064afa",
                "description": "Optional deterministic UUID v5 used for safe retries. See [Idempotency](/products/fincore/guides/idempotency.md) for key generation, TTL, and conflict behavior.",
                "disabled": true
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/transactions/penny_validation",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "transactions",
                "penny_validation"
              ]
            },
            "description": "Sends a $0.01 MXN validation transfer to the destination instrument and starts the CEP lookup process. Register a `CEP` webhook before using this endpoint so you receive status updates. `INITIALIZED` in the API response should be treated like `PENDING`; webhook statuses are `PENDING`, `DELAYED`, `COMPLETED`, or `FAILED`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"client_id\": \"{{clientId}}\",\n  \"source_instrument_id\": \"709448c3-7cbf-454d-a87e-feb23801269a\",\n  \"destination_instrument_id\": \"d3fdb481-2058-46c8-807d-4eaf866ae1ec\",\n  \"description\": \"Account validation\",\n  \"external_reference\": \"1234567\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Penny Validation transaction created.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/penny_validation",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "penny_validation"
                  ]
                }
              },
              "code": 200,
              "status": "Penny Validation transaction created.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"1eb4b5ac-09ac-4a64-b853-6939728621d2\",\n  \"trackingId\": \"20250815FINCHPV123456\",\n  \"transactionStatus\": \"INITIALIZED\",\n  \"amount\": \"0.01\",\n  \"currency\": \"MXN\",\n  \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"externalReference\": \"1234567\",\n  \"description\": \"Account validation\",\n  \"category\": \"DEBIT_TRANS\",\n  \"subCategory\": \"SPEI_DEBIT\",\n  \"metadata\": {\n    \"dataCep\": {\n      \"status\": \"PENDING\",\n      \"cepUrl\": \"https://www.banxico.org.mx/cep/...\",\n      \"validationId\": \"f4ebe9af-50ac-42e5-97c7-3164d2693d6e\"\n    }\n  }\n}"
            },
            {
              "name": "400 Penny Validation request is invalid. Possible causes: missing source or destination instrument, invalid description, invalid external reference, unsupported currency/amount rule, or malformed UUIDs. It also covers client or rail state that prevents validation.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/penny_validation",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "penny_validation"
                  ]
                }
              },
              "code": 400,
              "status": "Penny Validation request is invalid. Possible causes: missing source or destination instrument, invalid description, invalid external reference, unsupported currency/amount rule, or malformed UUIDs. It also covers client or rail state that prevents validation.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/penny_validation",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "penny_validation"
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Source instrument, destination instrument, client, bank, or related account was not found.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/penny_validation",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "penny_validation"
                  ]
                }
              },
              "code": 404,
              "status": "Source instrument, destination instrument, client, bank, or related account was not found.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "409 Idempotency conflict. Possible causes: same `Idempotency-Key` reused with a different payload, or the original request is still in progress.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/penny_validation",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "penny_validation"
                  ]
                }
              },
              "code": 409,
              "status": "Idempotency conflict. Possible causes: same `Idempotency-Key` reused with a different payload, or the original request is still in progress.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/transactions/penny_validation",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "transactions",
                    "penny_validation"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Retrieve a transaction",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "transactions",
                ":transactionId"
              ],
              "variable": [
                {
                  "key": "transactionId",
                  "value": "",
                  "description": "Transaction UUID, as delivered in webhooks or stored by your system."
                }
              ]
            },
            "description": "Returns a single transaction owned by the client. Use it to check the current status of a Money Out, a Money In, or a Penny Validation outside the webhook flow. For Penny Validation, `metadata.dataCep` carries the CEP data; see the CEP statuses guide for how that status evolves.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 The requested transaction.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID, as delivered in webhooks or stored by your system."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "The requested transaction.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"16811ee8-1ef9-4dd4-8d84-9c2df89cf302\",\n  \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"externalReference\": \"1234567\",\n  \"trackingId\": \"20250306FINCHVLIKQ5SKUM\",\n  \"description\": \"Supplier payment\",\n  \"amount\": \"5000.00\",\n  \"currency\": \"MXN\",\n  \"category\": \"DEBIT_TRANS\",\n  \"subCategory\": \"SPEI_DEBIT\",\n  \"transactionStatus\": \"INITIALIZED\",\n  \"audit\": {\n    \"createdAt\": \"2025-03-06 11:57:55.408000-06:00\",\n    \"updatedAt\": \"2025-03-06 11:57:55.408000-06:00\",\n    \"deletedAt\": null,\n    \"blockedAt\": null\n  },\n  \"sourceInstrument\": {\n    \"id\": \"709448c3-7cbf-454d-a87e-feb23801269a\",\n    \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n    \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n    \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n    \"instrumentAlias\": \"Centralizing account\",\n    \"instrumentStatus\": \"ACTIVE\",\n    \"instrumentType\": \"RECEIVER\",\n    \"instrumentDetail\": {\n      \"cardNumber\": \"5579072268574100\",\n      \"expirationDate\": null,\n      \"holderName\": \"John Smith\"\n    },\n    \"rfc\": \"XAXX010101000\",\n    \"customerId\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\"\n  },\n  \"destinationInstrument\": {\n    \"id\": \"709448c3-7cbf-454d-a87e-feb23801269a\",\n    \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n    \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n    \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n    \"instrumentAlias\": \"Centralizing account\",\n    \"instrumentStatus\": \"ACTIVE\",\n    \"instrumentType\": \"RECEIVER\",\n    \"instrumentDetail\": {\n      \"cardNumber\": \"5579072268574100\",\n      \"expirationDate\": null,\n      \"holderName\": \"John Smith\"\n    },\n    \"rfc\": \"XAXX010101000\",\n    \"customerId\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\"\n  },\n  \"originalTransactionId\": \"a1392ef1-23f5-4e15-90cd-5d3d8d24d839\",\n  \"refundTransactionId\": \"957459ce-d4e3-40b5-b759-373e844ba1e8\",\n  \"metadata\": {\n    \"dataCep\": {\n      \"cepUrl\": \"https://www.banxico.org.mx/cep/...\",\n      \"validationId\": \"f4ebe9af-50ac-42e5-97c7-3164d2693d6e\",\n      \"beneficiaryName\": \"John Smith\",\n      \"beneficiaryRfc\": \"XAXX010101000\",\n      \"status\": \"PENDING\",\n      \"createdAt\": \"2025-08-15T22:42:39.327Z\",\n      \"processedAt\": null\n    },\n    \"dataReturn\": {\n      \"trackingId\": \"20250510FINCHFL2SFGP9KT\",\n      \"originalTrackingId\": \"20250509FINCHARNJK5NHQG\",\n      \"reason\": \"CANCELLED_ACCOUNT\",\n      \"reasonDescription\": \"Cuenta cancelada\"\n    }\n  },\n  \"clientReference\": \"INV-4567\",\n  \"jsonReference\": \"\",\n  \"transactionDate\": \"2026-09-23 14:24:58\"\n}"
            },
            {
              "name": "400 The supplied `clientId` or `transactionId` is not a valid UUID.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID, as delivered in webhooks or stored by your system."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "The supplied `clientId` or `transactionId` is not a valid UUID.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 The bearer token is missing, expired, invalid, or not valid for the environment.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID, as delivered in webhooks or stored by your system."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "The bearer token is missing, expired, invalid, or not valid for the environment.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 The transaction was not found for the supplied client.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID, as delivered in webhooks or stored by your system."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "The transaction was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID, as delivered in webhooks or stored by your system."
                    }
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Refund a transaction",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId/refund",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "transactions",
                ":transactionId",
                "refund"
              ],
              "variable": [
                {
                  "key": "transactionId",
                  "value": "",
                  "description": "Transaction UUID to be refunded."
                }
              ]
            },
            "description": "Creates a refund for a transaction. Partial refunds are not allowed. The `amount` must equal the original transaction amount received.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": \"5.00\",\n  \"description\": \"Invalid Amount\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Refund successfully created",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId/refund",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId",
                    "refund"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID to be refunded."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Refund successfully created",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"957459ce-d4e3-40b5-b759-373e844ba1e8\",\n  \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"externalReference\": \"2505091\",\n  \"trackingId\": \"20250510FINCHFL2SFGP9KT\",\n  \"description\": \"Refund due to incorrect amount\",\n  \"amount\": \"100.00\",\n  \"currency\": \"MXN\",\n  \"category\": \"DEBIT_TRANS\",\n  \"subCategory\": \"SPEI_DEBIT\",\n  \"transactionStatus\": \"INITIALIZED\",\n  \"audit\": {\n    \"createdAt\": \"2025-05-09 18:02:31.979746-06:00\",\n    \"updatedAt\": \"2025-05-09 18:02:31.979746-06:00\",\n    \"deletedAt\": null,\n    \"blockedAt\": null\n  }\n}"
            },
            {
              "name": "400 Refund request is invalid. Possible causes: malformed `clientId` or `transactionId`, missing amount, invalid amount format, amount not equal to the original transaction amount, or invalid description. It also fails when the transaction cannot be refunded in its current state, was already refunded, or a refund is already in progress.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId/refund",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId",
                    "refund"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID to be refunded."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Refund request is invalid. Possible causes: malformed `clientId` or `transactionId`, missing amount, invalid amount format, amount not equal to the original transaction amount, or invalid description. It also fails when the transaction cannot be refunded in its current state, was already refunded, or a refund is already in progress.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId/refund",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId",
                    "refund"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID to be refunded."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Transaction was not found for the supplied client.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId/refund",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId",
                    "refund"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID to be refunded."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Transaction was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/transactions/:transactionId/refund",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "transactions",
                    ":transactionId",
                    "refund"
                  ],
                  "variable": [
                    {
                      "key": "transactionId",
                      "value": "",
                      "description": "Transaction UUID to be refunded."
                    }
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Webhooks",
      "description": "Client webhook configuration and incoming event payloads.",
      "item": [
        {
          "name": "List client webhooks",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "webhooks"
              ]
            },
            "description": "Returns a paginated list of webhooks configured for the specified client.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 List of client webhooks",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks"
                  ]
                }
              },
              "code": 200,
              "status": "List of client webhooks",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"currentPage\": 0,\n  \"perPage\": 50,\n  \"totalItem\": 2,\n  \"data\": [\n    {\n      \"id\": \"29806117-2b15-4682-87f0-350e6695fe91\",\n      \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n      \"url\": \"https://example.com/webhook\",\n      \"token\": \"secretToken0123\",\n      \"webhookType\": \"MONEY_IN\",\n      \"webhookStatus\": \"ACTIVE\",\n      \"createdAt\": \"2025-04-03 13:40:54.056794-06:00\",\n      \"updatedAt\": \"2025-04-03 13:40:54.056794-06:00\",\n      \"deletedAt\": null,\n      \"blockedAt\": null,\n      \"deletedBy\": null,\n      \"blockedBy\": null\n    }\n  ]\n}"
            },
            {
              "name": "400 Webhook list request is invalid. Possible causes: malformed `clientId` or invalid pagination/filter values.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks"
                  ]
                }
              },
              "code": 400,
              "status": "Webhook list request is invalid. Possible causes: malformed `clientId` or invalid pagination/filter values.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks"
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Register a webhook for a client",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "webhooks"
              ]
            },
            "description": "Endpoint to register a new URL where the specified client will receive webhooks. Requires `Authorization: Bearer <token>` headers.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"client_id\": \"{{clientId}}\",\n  \"url\": \"https://example.com/webhook\",\n  \"token\": \"secretToken0123\",\n  \"webhook_type\": \"MONEY_IN\",\n  \"auth_type\": \"AUTH\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Webhook successfully created",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks"
                  ]
                }
              },
              "code": 200,
              "status": "Webhook successfully created",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"29806117-2b15-4682-87f0-350e6695fe91\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"url\": \"https://example.com/webhook\",\n  \"token\": \"secretToken0123\",\n  \"webhookType\": \"MONEY_IN\",\n  \"webhookStatus\": \"ACTIVE\",\n  \"createdAt\": \"2025-04-03 13:40:54.056794-06:00\",\n  \"updatedAt\": \"2025-04-03 13:40:54.056794-06:00\",\n  \"deletedAt\": null,\n  \"blockedAt\": null,\n  \"deletedBy\": null,\n  \"blockedBy\": null\n}"
            },
            {
              "name": "400 Webhook creation request is invalid. Possible causes: malformed `client_id`, invalid URL, missing token, unsupported `webhook_type`, unsupported `auth_type`, or URL that does not meet delivery requirements. It also fails when a matching webhook configuration already exists.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks"
                  ]
                }
              },
              "code": 400,
              "status": "Webhook creation request is invalid. Possible causes: malformed `client_id`, invalid URL, missing token, unsupported `webhook_type`, unsupported `auth_type`, or URL that does not meet delivery requirements. It also fails when a matching webhook configuration already exists.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks"
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Retrieve a client webhook",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "webhooks",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "Webhook UUID."
                }
              ]
            },
            "description": "Returns details for a specific webhook owned by the client.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Webhook found",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Webhook found",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"29806117-2b15-4682-87f0-350e6695fe91\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"url\": \"https://example.com/webhook\",\n  \"token\": \"secretToken0123\",\n  \"webhookType\": \"MONEY_IN\",\n  \"webhookStatus\": \"ACTIVE\",\n  \"createdAt\": \"2025-04-03 13:40:54.056794-06:00\",\n  \"updatedAt\": \"2025-04-03 13:40:54.056794-06:00\",\n  \"deletedAt\": null,\n  \"blockedAt\": null,\n  \"deletedBy\": null,\n  \"blockedBy\": null\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Webhook was not found for the supplied client.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Webhook was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Update a client webhook",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "webhooks",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "Webhook UUID."
                }
              ]
            },
            "description": "Updates one or more fields of a webhook owned by the client. All fields in the request body are optional, but at least one must be provided.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://example.com/new-webhook\",\n  \"webhook_status\": \"ACTIVE\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Webhook successfully updated",
              "originalRequest": {
                "method": "PATCH",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Webhook successfully updated",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"29806117-2b15-4682-87f0-350e6695fe91\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"url\": \"https://example.com/webhook\",\n  \"token\": \"secretToken0123\",\n  \"webhookType\": \"MONEY_IN\",\n  \"webhookStatus\": \"ACTIVE\",\n  \"createdAt\": \"2025-04-03 13:40:54.056794-06:00\",\n  \"updatedAt\": \"2025-04-03 13:40:54.056794-06:00\",\n  \"deletedAt\": null,\n  \"blockedAt\": null,\n  \"deletedBy\": null,\n  \"blockedBy\": null\n}"
            },
            {
              "name": "400 Webhook update request is invalid. Possible causes: malformed `clientId` or webhook `id`, empty update body, invalid URL, unsupported `webhook_type`, unsupported `auth_type`, or unsupported `webhook_status`.",
              "originalRequest": {
                "method": "PATCH",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Webhook update request is invalid. Possible causes: malformed `clientId` or webhook `id`, empty update body, invalid URL, unsupported `webhook_type`, unsupported `auth_type`, or unsupported `webhook_status`.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "PATCH",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Webhook was not found for the supplied client.",
              "originalRequest": {
                "method": "PATCH",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Webhook was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Delete a client webhook",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "webhooks",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "Webhook UUID."
                }
              ]
            },
            "description": "Deletes (or soft-deletes) a webhook owned by the client.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Webhook successfully deleted",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Webhook successfully deleted",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"29806117-2b15-4682-87f0-350e6695fe91\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"url\": \"https://example.com/webhook\",\n  \"token\": \"secretToken0123\",\n  \"webhookType\": \"MONEY_IN\",\n  \"webhookStatus\": \"ACTIVE\",\n  \"createdAt\": \"2025-04-03 13:40:54.056794-06:00\",\n  \"updatedAt\": \"2025-04-03 13:40:54.056794-06:00\",\n  \"deletedAt\": null,\n  \"blockedAt\": null,\n  \"deletedBy\": null,\n  \"blockedBy\": null\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Webhook was not found for the supplied client.",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/webhooks/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Webhook UUID."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Webhook was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Business Units",
      "description": "Customer sub-accounts that operate as independent legal entities.",
      "item": [
        {
          "name": "Create a private account for a Business Unit",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:ownerId/private_accounts",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "customers",
                ":ownerId",
                "private_accounts"
              ],
              "variable": [
                {
                  "key": "ownerId",
                  "value": "",
                  "description": "Customer UUID that will own the private account."
                }
              ]
            },
            "description": "Creates a private CLABE owned by a Customer/Business Unit. Use this when each sub-account must appear as an independent legal entity on payment receipts. `ownerId` is the Customer ID.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"client_id\": \"{{clientId}}\",\n  \"client_bank_adapter_id\": \"5b3a1b67-ab59-4cc1-8fc6-1d558b32b237\",\n  \"bank_id\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"owner_id\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Business Unit private account created.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:ownerId/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":ownerId",
                    "private_accounts"
                  ],
                  "variable": [
                    {
                      "key": "ownerId",
                      "value": "",
                      "description": "Customer UUID that will own the private account."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Business Unit private account created.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"750ab428-b401-4b58-8a95-502bcb7b1bf8\",\n  \"bankId\": \"9d84b03a-28d1-4898-a69c-38824239e2b1\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"clientBankAdapterId\": \"5b3a1b67-ab59-4cc1-8fc6-1d558b32b237\",\n  \"accountId\": \"24a726ac-180d-48df-82bc-711f2788a46f\",\n  \"instrumentId\": \"ab502fce-1162-42f3-99d6-972989a06049\",\n  \"ownerId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"ownerType\": \"CLIENT\",\n  \"accountNumber\": \"000001233635\",\n  \"clabeNumber\": \"734180000001233635\",\n  \"availableBalance\": \"0.00\",\n  \"accountType\": \"PRIVATE_ACCOUNT\",\n  \"accountStatus\": \"ACTIVE\",\n  \"audit\": {\n    \"createdAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"updatedAt\": \"2025-04-12 11:00:56.264527-06:00\",\n    \"deletedAt\": null,\n    \"blockedAt\": null,\n    \"activatedAt\": null,\n    \"suspendedAt\": null\n  },\n  \"bankAdapter\": \"SIES\"\n}"
            },
            {
              "name": "400 Business Unit private account request is invalid. Possible causes: missing required fields, malformed UUIDs, or inconsistent `client_id`, `owner_id`, bank, and adapter identifiers. It also fails when the account conflicts with an existing record or the Business Unit state prevents creation.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:ownerId/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":ownerId",
                    "private_accounts"
                  ],
                  "variable": [
                    {
                      "key": "ownerId",
                      "value": "",
                      "description": "Customer UUID that will own the private account."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Business Unit private account request is invalid. Possible causes: missing required fields, malformed UUIDs, or inconsistent `client_id`, `owner_id`, bank, and adapter identifiers. It also fails when the account conflicts with an existing record or the Business Unit state prevents creation.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Bearer token is missing, expired, invalid, or does not belong to the requested client.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:ownerId/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":ownerId",
                    "private_accounts"
                  ],
                  "variable": [
                    {
                      "key": "ownerId",
                      "value": "",
                      "description": "Customer UUID that will own the private account."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Bearer token is missing, expired, invalid, or does not belong to the requested client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "403 Authenticated caller cannot create a private account for the supplied Business Unit or client.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:ownerId/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":ownerId",
                    "private_accounts"
                  ],
                  "variable": [
                    {
                      "key": "ownerId",
                      "value": "",
                      "description": "Customer UUID that will own the private account."
                    }
                  ]
                }
              },
              "code": 403,
              "status": "Authenticated caller cannot create a private account for the supplied Business Unit or client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Client, Business Unit, bank, adapter, or related account was not found.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:ownerId/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":ownerId",
                    "private_accounts"
                  ],
                  "variable": [
                    {
                      "key": "ownerId",
                      "value": "",
                      "description": "Customer UUID that will own the private account."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Client, Business Unit, bank, adapter, or related account was not found.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:ownerId/private_accounts",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":ownerId",
                    "private_accounts"
                  ],
                  "variable": [
                    {
                      "key": "ownerId",
                      "value": "",
                      "description": "Customer UUID that will own the private account."
                    }
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "List Business Units",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "customers"
              ],
              "query": [
                {
                  "key": "customer_status",
                  "value": "ACTIVE",
                  "description": "Filter Business Units by lifecycle status.",
                  "disabled": true
                },
                {
                  "key": "customer_alias",
                  "value": "",
                  "description": "Filter Business Units by alias. Matching behavior is backend-defined.",
                  "disabled": true
                },
                {
                  "key": "name",
                  "value": "",
                  "description": "Filter Business Units by legal or display name.",
                  "disabled": true
                },
                {
                  "key": "customer_validation_status",
                  "value": "VALIDATED",
                  "description": "Filter Business Units by validation status.",
                  "disabled": true
                },
                {
                  "key": "page",
                  "value": "",
                  "description": "Page number to return. The first page is `1`.",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "",
                  "description": "Number of Business Units returned per page.",
                  "disabled": true
                }
              ]
            },
            "description": "Returns the Customers/Business Units associated with a client. In production, use only customers where `customerValidationStatus = VALIDATED`.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Business Units list.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers"
                  ],
                  "query": [
                    {
                      "key": "customer_status",
                      "value": "ACTIVE",
                      "description": "Filter Business Units by lifecycle status.",
                      "disabled": true
                    },
                    {
                      "key": "customer_alias",
                      "value": "",
                      "description": "Filter Business Units by alias. Matching behavior is backend-defined.",
                      "disabled": true
                    },
                    {
                      "key": "name",
                      "value": "",
                      "description": "Filter Business Units by legal or display name.",
                      "disabled": true
                    },
                    {
                      "key": "customer_validation_status",
                      "value": "VALIDATED",
                      "description": "Filter Business Units by validation status.",
                      "disabled": true
                    },
                    {
                      "key": "page",
                      "value": "",
                      "description": "Page number to return. The first page is `1`.",
                      "disabled": true
                    },
                    {
                      "key": "per_page",
                      "value": "",
                      "description": "Number of Business Units returned per page.",
                      "disabled": true
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Business Units list.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"currentPage\": 1,\n  \"perPage\": 50,\n  \"totalItems\": 3,\n  \"data\": [\n    {\n      \"id\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\",\n      \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n      \"name\": \"Business Unit ABC\",\n      \"rfc\": \"XAXX010101000\",\n      \"legalRepresentativeName\": \"Jane Doe\",\n      \"legalRepresentativeRfc\": \"XAXX010101000\",\n      \"legalRepresentativePhone\": \"5555555555\",\n      \"legalRepresentativeEmail\": \"legal@example.com\",\n      \"website\": \"https://example.com\",\n      \"domain\": \"example.com\",\n      \"customerAlias\": \"BU ABC\",\n      \"customerStatus\": \"ACTIVE\",\n      \"customerValidationStatus\": \"VALIDATED\",\n      \"audit\": {\n        \"createdAt\": \"2025-03-05 11:00:56.264527-06:00\",\n        \"updatedAt\": \"2025-03-05 11:00:56.264527-06:00\",\n        \"deletedAt\": \"None\",\n        \"blockedAt\": \"None\",\n        \"activatedAt\": null,\n        \"suspendedAt\": null\n      }\n    }\n  ]\n}"
            },
            {
              "name": "400 Business Unit list request is invalid. Possible causes: malformed `clientId`, invalid status filter, or invalid pagination values.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers"
                  ],
                  "query": [
                    {
                      "key": "customer_status",
                      "value": "ACTIVE",
                      "description": "Filter Business Units by lifecycle status.",
                      "disabled": true
                    },
                    {
                      "key": "customer_alias",
                      "value": "",
                      "description": "Filter Business Units by alias. Matching behavior is backend-defined.",
                      "disabled": true
                    },
                    {
                      "key": "name",
                      "value": "",
                      "description": "Filter Business Units by legal or display name.",
                      "disabled": true
                    },
                    {
                      "key": "customer_validation_status",
                      "value": "VALIDATED",
                      "description": "Filter Business Units by validation status.",
                      "disabled": true
                    },
                    {
                      "key": "page",
                      "value": "",
                      "description": "Page number to return. The first page is `1`.",
                      "disabled": true
                    },
                    {
                      "key": "per_page",
                      "value": "",
                      "description": "Number of Business Units returned per page.",
                      "disabled": true
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Business Unit list request is invalid. Possible causes: malformed `clientId`, invalid status filter, or invalid pagination values.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers"
                  ],
                  "query": [
                    {
                      "key": "customer_status",
                      "value": "ACTIVE",
                      "description": "Filter Business Units by lifecycle status.",
                      "disabled": true
                    },
                    {
                      "key": "customer_alias",
                      "value": "",
                      "description": "Filter Business Units by alias. Matching behavior is backend-defined.",
                      "disabled": true
                    },
                    {
                      "key": "name",
                      "value": "",
                      "description": "Filter Business Units by legal or display name.",
                      "disabled": true
                    },
                    {
                      "key": "customer_validation_status",
                      "value": "VALIDATED",
                      "description": "Filter Business Units by validation status.",
                      "disabled": true
                    },
                    {
                      "key": "page",
                      "value": "",
                      "description": "Page number to return. The first page is `1`.",
                      "disabled": true
                    },
                    {
                      "key": "per_page",
                      "value": "",
                      "description": "Number of Business Units returned per page.",
                      "disabled": true
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers"
                  ],
                  "query": [
                    {
                      "key": "customer_status",
                      "value": "ACTIVE",
                      "description": "Filter Business Units by lifecycle status.",
                      "disabled": true
                    },
                    {
                      "key": "customer_alias",
                      "value": "",
                      "description": "Filter Business Units by alias. Matching behavior is backend-defined.",
                      "disabled": true
                    },
                    {
                      "key": "name",
                      "value": "",
                      "description": "Filter Business Units by legal or display name.",
                      "disabled": true
                    },
                    {
                      "key": "customer_validation_status",
                      "value": "VALIDATED",
                      "description": "Filter Business Units by validation status.",
                      "disabled": true
                    },
                    {
                      "key": "page",
                      "value": "",
                      "description": "Page number to return. The first page is `1`.",
                      "disabled": true
                    },
                    {
                      "key": "per_page",
                      "value": "",
                      "description": "Number of Business Units returned per page.",
                      "disabled": true
                    }
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create a Business Unit",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "customers"
              ]
            },
            "description": "Creates a Customer/Business Unit that can own instruments and private accounts. Business Units are useful when sub-accounts need their own RFC and legal identity on payment receipts.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"client_id\": \"{{clientId}}\",\n  \"name\": \"Business Unit ABC\",\n  \"rfc\": \"XAXX010101000\",\n  \"legal_representative_name\": \"Jane Doe\",\n  \"legal_representative_rfc\": \"XAXX010101000\",\n  \"legal_representative_phone\": \"5555555555\",\n  \"legal_representative_email\": \"legal@example.com\",\n  \"customer_alias\": \"BU ABC\",\n  \"customer_status\": \"ACTIVE\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Business Unit created.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers"
                  ]
                }
              },
              "code": 200,
              "status": "Business Unit created.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"name\": \"Business Unit ABC\",\n  \"rfc\": \"XAXX010101000\",\n  \"legalRepresentativeName\": \"Jane Doe\",\n  \"legalRepresentativeRfc\": \"XAXX010101000\",\n  \"legalRepresentativePhone\": \"5555555555\",\n  \"legalRepresentativeEmail\": \"legal@example.com\",\n  \"website\": \"https://example.com\",\n  \"domain\": \"example.com\",\n  \"customerAlias\": \"BU ABC\",\n  \"customerStatus\": \"ACTIVE\",\n  \"customerValidationStatus\": \"VALIDATED\",\n  \"audit\": {\n    \"createdAt\": \"2025-03-05 11:00:56.264527-06:00\",\n    \"updatedAt\": \"2025-03-05 11:00:56.264527-06:00\",\n    \"deletedAt\": \"None\",\n    \"blockedAt\": \"None\",\n    \"activatedAt\": null,\n    \"suspendedAt\": null\n  }\n}"
            },
            {
              "name": "400 Business Unit creation request is invalid. Possible causes: missing legal representative fields, invalid RFC, invalid email, malformed `client_id`, or unsupported customer status. It also fails when the Business Unit conflicts with an existing record for this client.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers"
                  ]
                }
              },
              "code": 400,
              "status": "Business Unit creation request is invalid. Possible causes: missing legal representative fields, invalid RFC, invalid email, malformed `client_id`, or unsupported customer status. It also fails when the Business Unit conflicts with an existing record for this client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers"
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Retrieve a Business Unit",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "customers",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "Customer UUID."
                }
              ]
            },
            "description": "Returns a single Customer/Business Unit by ID.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Business Unit details.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Customer UUID."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Business Unit details.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"name\": \"Business Unit ABC\",\n  \"rfc\": \"XAXX010101000\",\n  \"legalRepresentativeName\": \"Jane Doe\",\n  \"legalRepresentativeRfc\": \"XAXX010101000\",\n  \"legalRepresentativePhone\": \"5555555555\",\n  \"legalRepresentativeEmail\": \"legal@example.com\",\n  \"website\": \"https://example.com\",\n  \"domain\": \"example.com\",\n  \"customerAlias\": \"BU ABC\",\n  \"customerStatus\": \"ACTIVE\",\n  \"customerValidationStatus\": \"VALIDATED\",\n  \"audit\": {\n    \"createdAt\": \"2025-03-05 11:00:56.264527-06:00\",\n    \"updatedAt\": \"2025-03-05 11:00:56.264527-06:00\",\n    \"deletedAt\": \"None\",\n    \"blockedAt\": \"None\",\n    \"activatedAt\": null,\n    \"suspendedAt\": null\n  }\n}"
            },
            {
              "name": "400 Business Unit lookup request is invalid. Possible causes: malformed `clientId` or Business Unit `id`.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Customer UUID."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Business Unit lookup request is invalid. Possible causes: malformed `clientId` or Business Unit `id`.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Customer UUID."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Business Unit was not found for the supplied client.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Customer UUID."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Business Unit was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Customer UUID."
                    }
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Mark a Business Unit as validated",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id/validate",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "clients",
                "{{clientId}}",
                "customers",
                ":id",
                "validate"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "Customer UUID."
                }
              ]
            },
            "description": "Updates the Business Unit validation status. Use only validated Business Units for production payment flows.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Business Unit validation status updated.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id/validate",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":id",
                    "validate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Customer UUID."
                    }
                  ]
                }
              },
              "code": 200,
              "status": "Business Unit validation status updated.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"id\": \"bb1e8fde-e68e-48e9-a483-d32153c752c2\",\n  \"clientId\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"name\": \"Business Unit ABC\",\n  \"rfc\": \"XAXX010101000\",\n  \"legalRepresentativeName\": \"Jane Doe\",\n  \"legalRepresentativeRfc\": \"XAXX010101000\",\n  \"legalRepresentativePhone\": \"5555555555\",\n  \"legalRepresentativeEmail\": \"legal@example.com\",\n  \"website\": \"https://example.com\",\n  \"domain\": \"example.com\",\n  \"customerAlias\": \"BU ABC\",\n  \"customerStatus\": \"ACTIVE\",\n  \"customerValidationStatus\": \"VALIDATED\",\n  \"audit\": {\n    \"createdAt\": \"2025-03-05 11:00:56.264527-06:00\",\n    \"updatedAt\": \"2025-03-05 11:00:56.264527-06:00\",\n    \"deletedAt\": \"None\",\n    \"blockedAt\": \"None\",\n    \"activatedAt\": null,\n    \"suspendedAt\": null\n  }\n}"
            },
            {
              "name": "400 Business Unit validation request is invalid. Possible causes: malformed `clientId` or Business Unit `id`, or unsupported validation state transition.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id/validate",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":id",
                    "validate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Customer UUID."
                    }
                  ]
                }
              },
              "code": 400,
              "status": "Business Unit validation request is invalid. Possible causes: malformed `clientId` or Business Unit `id`, or unsupported validation state transition.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id/validate",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":id",
                    "validate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Customer UUID."
                    }
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Business Unit was not found for the supplied client.",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/clients/{{clientId}}/customers/:id/validate",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "clients",
                    "{{clientId}}",
                    "customers",
                    ":id",
                    "validate"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Customer UUID."
                    }
                  ]
                }
              },
              "code": 404,
              "status": "Business Unit was not found for the supplied client.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Reports",
      "description": "Transaction and account statement file downloads.",
      "item": [
        {
          "name": "Download a report file · Daily account statement",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "reports",
                "clients",
                "{{clientId}}",
                "report",
                "download"
              ]
            },
            "description": "Returns a download URL for a generated report file (transactions or account statement). If no matching file is found, response fields are returned empty.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"clabe_number\": \"123456789012345678\",\n  \"report_type\": \"DAILY_ACCOUNT_STATEMENT\",\n  \"operation_date\": \"2025-08-25\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Report file found. Returns file name and download URL. Fields are empty if no matching file exists.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 200,
              "status": "Report file found. Returns file name and download URL. Fields are empty if no matching file exists.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"file_name\": \"daily_account_statement_123456789012345678_20260224.csv\",\n  \"download_url\": \"https://...\"\n}"
            },
            {
              "name": "400 Validation error. Possible messages include `Invalid UUID format for client_id`, `Invalid report_type: <value>`, `clabe_number is required for account statement reports`, `Invalid clabe number`, or invalid `operation_date` format.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 400,
              "status": "Validation error. Possible messages include `Invalid UUID format for client_id`, `Invalid report_type: <value>`, `clabe_number is required for account statement reports`, `Invalid clabe number`, or invalid `operation_date` format.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Client, generated report, account statement, or requested report resource was not found.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 404,
              "status": "Client, generated report, account statement, or requested report resource was not found.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Download a report file · Daily transactions report",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
              "host": [
                "{{fincoreBaseUrl}}"
              ],
              "path": [
                "v1",
                "reports",
                "clients",
                "{{clientId}}",
                "report",
                "download"
              ]
            },
            "description": "Returns a download URL for a generated report file (transactions or account statement). If no matching file is found, response fields are returned empty.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"report_type\": \"DAILY\",\n  \"operation_date\": \"2025-08-25\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{fincoreToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "200 Report file found. Returns file name and download URL. Fields are empty if no matching file exists.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 200,
              "status": "Report file found. Returns file name and download URL. Fields are empty if no matching file exists.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"file_name\": \"daily_account_statement_123456789012345678_20260224.csv\",\n  \"download_url\": \"https://...\"\n}"
            },
            {
              "name": "400 Validation error. Possible messages include `Invalid UUID format for client_id`, `Invalid report_type: <value>`, `clabe_number is required for account statement reports`, `Invalid clabe number`, or invalid `operation_date` format.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 400,
              "status": "Validation error. Possible messages include `Invalid UUID format for client_id`, `Invalid report_type: <value>`, `clabe_number is required for account statement reports`, `Invalid clabe number`, or invalid `operation_date` format.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "401 Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 401,
              "status": "Missing, expired, invalid, or environment-mismatched API key or bearer token. See [Authentication](/products/fincore/guides/authentication.md).",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 16,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"UNAUTHORIZED\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"Invalid Credentials\",\n        \"http_code\": \"401\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "404 Client, generated report, account statement, or requested report resource was not found.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 404,
              "status": "Client, generated report, account statement, or requested report resource was not found.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            },
            {
              "name": "500 Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "{{fincoreBaseUrl}}/v1/reports/clients/{{clientId}}/report/download",
                  "host": [
                    "{{fincoreBaseUrl}}"
                  ],
                  "path": [
                    "v1",
                    "reports",
                    "clients",
                    "{{clientId}}",
                    "report",
                    "download"
                  ]
                }
              },
              "code": 500,
              "status": "Unexpected server error. See [Error catalog](/products/fincore/guides/error-catalog.md) before retrying non-idempotent operations.",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "_postman_previewlanguage": "json",
              "body": "{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}"
            }
          ]
        }
      ]
    }
  ],
  "variable": [
    {
      "key": "fincoreToken",
      "value": ""
    },
    {
      "key": "fincoreTokenExpiresAt",
      "value": "0"
    }
  ]
}
