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

# List funds

> Returns all active, assignable funds in the authenticated organization, ordered by name. Inactive funds and summary funds (funds with subfunds) are excluded. The response is not paginated. Use each id as fundId when creating contributions or mapping giving-provider funds. Requires funds:read for organization API keys and Grain-managed OAuth apps; OAuth users must also have permission to view funds. Existing keys and OAuth grants must explicitly include the new scope.



## OpenAPI

````yaml /openapi.json get /api/v1/funds
openapi: 3.0.3
info:
  title: Grain API
  description: >-
    Church accounting and donor management API. Use an organization API key for
    server automation or OAuth 2.1 (Sign in with Grain) for applications acting
    on behalf of users. Unmanaged OAuth requests require X-Organization-Id;
    Grain-managed OAuth apps may list authorized organizations first. API keys
    infer the organization.
  version: 1.2.0
servers:
  - url: https://api.grainledger.com
    description: API Server
security:
  - ApiKeyAuth: []
  - GrainOAuth2: []
  - BearerAuth: []
tags:
  - name: Funds
    description: Active funds available for integration mapping
  - name: Transactions
    description: Bank transactions and reconciliation
  - name: Bills
    description: Vendor bills from creation through payment
  - name: Donors
    description: Donor records and household relationships
  - name: Contributions
    description: Giving records with fund assignment and settlement
  - name: Giving Batches
    description: Contribution groups with derived totals and lifecycle state
  - name: Settlements
    description: Provider deposits with recorded and linked-contribution totals
  - name: Pledges
    description: Pledge campaigns and fulfillment tracking
  - name: Pledge Card Imports
    description: Submit structured pledge card data for review
  - name: Households
    description: Household groupings and primary contacts
  - name: Organizations
    description: Organizations the current Grain OAuth app is authorized to access
paths:
  /api/v1/funds:
    get:
      tags:
        - Funds
      summary: List funds
      description: >-
        Returns all active, assignable funds in the authenticated organization,
        ordered by name. Inactive funds and summary funds (funds with subfunds)
        are excluded. The response is not paginated. Use each id as fundId when
        creating contributions or mapping giving-provider funds. Requires
        funds:read for organization API keys and Grain-managed OAuth apps; OAuth
        users must also have permission to view funds. Existing keys and OAuth
        grants must explicitly include the new scope.
      operationId: listFunds
      parameters:
        - $ref: '#/components/parameters/OrganizationId'
      responses:
        '200':
          description: Fund IDs and names available for mapping
          headers:
            X-Request-Id:
              description: >-
                Server-generated ID linking this request to API activity and
                audit records.
              schema:
                type: string
                format: uuid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FundListResponse'
              example:
                funds:
                  - id: cm789ghi012jkl
                    name: General Fund
        '400':
          headers:
            X-Request-Id:
              description: >-
                Server-generated ID linking this request to API activity and
                audit records.
              schema:
                type: string
                format: uuid
          description: Bad request (missing header or invalid input)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          headers:
            X-Request-Id:
              description: >-
                Server-generated ID linking this request to API activity and
                audit records.
              schema:
                type: string
                format: uuid
          description: Unauthorized (missing or invalid Bearer token)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          headers:
            X-Request-Id:
              description: >-
                Server-generated ID linking this request to API activity and
                audit records.
              schema:
                type: string
                format: uuid
          description: Forbidden (no access to organization or action)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            X-Request-Id:
              description: >-
                Server-generated ID linking this request to API activity and
                audit records.
              schema:
                type: string
                format: uuid
        '409':
          headers:
            X-Request-Id:
              description: >-
                Server-generated ID linking this request to API activity and
                audit records.
              schema:
                type: string
                format: uuid
          description: >-
            Conflict (duplicate, cross-resource ownership conflict, concurrent
            change, or accounting-frozen resource)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            X-Request-Id:
              description: >-
                Server-generated ID linking this request to API activity and
                audit records.
              schema:
                type: string
                format: uuid
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            X-Request-Id:
              description: >-
                Server-generated ID linking this request to API activity and
                audit records.
              schema:
                type: string
                format: uuid
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            X-Request-Id:
              description: >-
                Server-generated ID linking this request to API activity and
                audit records.
              schema:
                type: string
                format: uuid
components:
  parameters:
    OrganizationId:
      name: X-Organization-Id
      in: header
      required: false
      schema:
        type: string
      description: >-
        Required with OAuth access tokens for resource requests. Omit only for
        GET /api/v1/organizations. Optional with organization API keys; if
        supplied with an API key, it must match the key's organization.
      example: cm123abc456def
  schemas:
    FundListResponse:
      type: object
      additionalProperties: false
      required:
        - funds
      properties:
        funds:
          type: array
          items:
            type: object
            additionalProperties: false
            required:
              - id
              - name
            properties:
              id:
                type: string
                description: Grain fund ID to use as fundId.
              name:
                type: string
                description: Fund name to display in a dropdown.
    Error:
      type: object
      description: >-
        Every error response is valid JSON with this shape. The HTTP status code
        carries the outcome; `code` is a stable machine-readable form of it.
      required:
        - code
        - message
      properties:
        code:
          type: string
          enum:
            - bad_request
            - unauthorized
            - forbidden
            - not_found
            - conflict
            - unprocessable_entity
            - payload_too_large
            - rate_limited
            - internal_server_error
          example: forbidden
        message:
          type: string
          example: You do not have access to this organization.
        error:
          type: string
          deprecated: true
          description: Deprecated alias for `message`. Read `message` instead.
          example: You do not have access to this organization.
        details:
          type: object
          description: >-
            Present for schema validation failures. Contains safe top-level
            field names and validation codes, never submitted values.
          properties:
            fields:
              type: array
              maxItems: 20
              items:
                type: object
                required:
                  - field
                  - code
                properties:
                  field:
                    type: string
                    example: amount
                  code:
                    type: string
                    example: invalid_type
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: grain_live_… or grain_test_…
      description: >-
        Organization API key created in Grain Settings → API. The key determines
        the organization and is limited to its assigned resource scopes. Write
        scopes imply the corresponding read scope.
    GrainOAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://auth.grainledger.com/auth/v1/oauth/authorize
          tokenUrl: https://auth.grainledger.com/auth/v1/oauth/token
          scopes:
            openid: OpenID Connect
            email: Email address
            profile: Profile information
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: OAuth access token (JWT)

````