> ## Documentation Index
> Fetch the complete documentation index at: https://docs.capcells.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Decide across a menu

> Decide one purchase under several Configurations on one reading: one Decision per Configuration, answered together.

This call decides one application under several Configurations at once — one purchase that may be sold under more than one product. The application is read once: every declared value is validated once, and every Source is read once under the one consent, so a menu that two policy versions both read a bureau for spends one consulta. Each Configuration is then decided under the policy version you adopted for it.

You receive one Decision per Configuration, in the order you named them, all under your one `reference` — approved on one, `not_offered` on another. Each Decision is whole: its own identifier, trace, outcome and terms, readable on its own.

<Info>
  This route reads four outcomes. A Decision here may be `not_offered` without your stating anything.
</Info>

## Path parameters

<ParamField path="tenant_id" type="string" required>
  The Tenancy deciding. Another Tenancy's path answers `403`.
</ParamField>

## Body

<ParamField body="reference" type="string" required>
  Your own name for the application, unique within the Tenancy. Submitting again with the same Configurations in the same order and the same application answers the recorded Decisions; another menu, or a single application, under it is refused `409`.
</ParamField>

<ParamField body="client_id" type="string" required>
  A Client your Tenancy has registered.
</ParamField>

<ParamField body="configurations" type="array" required>
  The Configurations the purchase may be sold under, each named once — one to eight. A Configuration with no adopted policy refuses the whole menu, and nothing is recorded.

  <Expandable title="configuration">
    <ParamField body="configuration_id" type="string" required>
      The Configuration.
    </ParamField>

    <ParamField body="configuration_version" type="integer" required>
      Its version, counting from 1.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="principal" type="object" required>
  What is requested, as `minor_units` and `currency`. It must lie inside every named Configuration version's bounds.
</ParamField>

<ParamField body="submitted_on" type="string" required>
  The day the application is submitted, as `YYYY-MM-DD`. As on [a single application](/api-reference/credit-decisions/decide).
</ParamField>

<ParamField body="attributes" type="object" required>
  One entry per declared attribute any of the adopted versions reads, keyed by name, each with `state`, `number` and `as_of` as on a single application.
</ParamField>

<ParamField body="identity" type="object">
  What a Source needs to address the lookup, as on a single application. Read once for the whole menu.
</ParamField>

<ParamField body="consent" type="object">
  The borrower's authorisation, as on a single application. One consent authorises the one reading the menu takes.
</ParamField>

<ParamField body="context" type="object">
  Your key-value object, recorded beside every Decision of the menu.
</ParamField>

<ParamField body="facility" type="object">
  Grant a Facility from every approval in the menu, in the same act, with `opens_on` and `expires_on` as on a single application.
</ParamField>

## Response

<ResponseField name="reference" type="string" required>
  The reference you submitted under.
</ResponseField>

<ResponseField name="decisions" type="array" required>
  One [Decision](/api-reference/credit-decisions/read) per Configuration, in the order you named them. Each carries `menu_position`, its place in the menu from 1, and — where you stated `facility` — what was granted from it.
</ResponseField>

## Refusals

| Status | When |
| - | - |
| `400` | The body names a field this call does not read, or states one twice |
| `403` | The key authenticates for another Tenancy, or its scope is read-only |
| `404` | A named Configuration has no adopted policy version — `no_adoption` |
| `409` | The reference already names a different application |
| `422` | Any refusal a single application meets before it is decided, for any Configuration; or the menu is empty, names more than eight, or names one twice |
| `424` | A Source under the `retry` posture did not answer — nothing is recorded |
| `429` | Your daily bound for a Source is spent |

<RequestExample>
  ```bash Decide across a menu theme={null}
  BODY='{
    "reference": "purchase-0001",
    "client_id": "client-alonso",
    "configurations": [
      {"configuration_id": "short-term", "configuration_version": 1},
      {"configuration_id": "long-term",  "configuration_version": 1}
    ],
    "principal": {"minor_units": 1000000, "currency": "MXN"},
    "submitted_on": "2026-10-15",
    "attributes": {
      "age_years":                 {"state": "present", "number": 35,      "as_of": "2026-10-15"},
      "monthly_income_minor":      {"state": "present", "number": 1500000, "as_of": "2026-10-15"},
      "monthly_obligations_minor": {"state": "present", "number": 200000,  "as_of": "2026-10-15"},
      "employment_months":         {"state": "present", "number": 48,      "as_of": "2026-10-15"},
      "tenure_months":             {"state": "present", "number": 24,      "as_of": "2026-10-15"},
      "prior_loans_repaid":        {"state": "present", "number": 0,       "as_of": "2026-10-15"},
      "prior_loans_defaulted":     {"state": "present", "number": 0,       "as_of": "2026-10-15"}
    }
  }'

  curl -X POST https://api.capcells.com/v1/tenants/capyplazo/credit-decision-menus \
    -H "Authorization: $(capcells_sign "$CAPCELLS_API_KEY" POST /v1/tenants/capyplazo/credit-decision-menus "$BODY")" \
    -H "Content-Type: application/json" \
    -d "$BODY"
  ```
</RequestExample>

<ResponseExample>
  ```json 201 Approved on one, not offered on the other, abridged theme={null}
  {
    "reference": "purchase-0001",
    "decisions": [
      {
        "id": "a0deb1fc-b160-4088-92eb-c1e8b7b58001",
        "reference": "purchase-0001",
        "configuration_id": "short-term",
        "outcome": "approve",
        "approved_principal": { "minor_units": 1000000, "currency": "MXN" },
        "rate": { "numerator": 9, "denominator": 20, "quotation": "annual nominal", "percent": "45" },
        "menu_position": 1
      },
      {
        "id": "c3f1a2b4-5d6e-4f70-8a9b-0c1d2e3f4a5b",
        "reference": "purchase-0001",
        "configuration_id": "long-term",
        "outcome": "not_offered",
        "menu_position": 2
      }
    ]
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.