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

# Get Your Collection Policy

> The rule for when Rightfoot collects from your borrowers, and on which rails

# Get Your Collection Policy

Your collection policy applies to every borrower you enroll:

| Field | What it decides |
| - | - |
| `reserveCents` | A payment fires only when the balance covers the amount owed plus this much. The reserve is never charged |
| `minDebitCents` | The smallest payment Rightfoot submits. A smaller amount is held with `amount_below_minimum` |
| `chargeOrder` | The rails your borrowers are collected on, in order. Absent means ACH alone |
| `fallbackOn` | Which failures move a payment to the next rail. Absent means every failure category |

`source` is `lender` once you have [set your own policy](https://docs.rightfoot.com/api-reference/payments/update-payment-policy.md), and `default` before that.

A borrower's own settings take precedence: [`policy_overrides`](https://docs.rightfoot.com/api-reference/payments/create-payment-enrollments#per-borrower-policy-overrides) for the reserve and minimum, and their [charge settings](https://docs.rightfoot.com/api-reference/payments/get-charge-settings.md) for the order.

> [!NOTE]
>
> This endpoint is camelCase (`reserveCents`), unlike the snake\_case enrollment routes.


## OpenAPI

````yaml GET /v1/payment_policy
openapi: 3.1.0
info:
  title: Rightfoot API
  description: >-
    Submit a batch of authorizers for balance checks, retrieve processed
    balances, and check the status of a batch.
  version: 0.3.0-alpha
servers:
  - url: https://api.rightfoot.com
security:
  - BearerAuth: []
tags:
  - name: General Availability
    description: |
      **General Availability** indicates that the endpoint is production-ready.
  - name: In Development
    description: >
      **In Development** indicates that the endpoint is currently being built
      and will be available in an upcoming release.
paths:
  /v1/payment_policy:
    get:
      tags:
        - In Development
      summary: Get your collection policy
      description: >
        The collection policy in effect for your borrowers: yours

        (`source: lender`) or Rightfoot's default (`source: default`).


        The policy decides when a balance is high enough to collect and which
        rails

        a payment goes out on. A borrower's own `policy_overrides` and

        `charge_settings` take precedence over it.
      operationId: get_payment_policy
      responses:
        '200':
          description: The policy in effect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentPolicyResponse'
              examples:
                default:
                  summary: No policy set
                  value:
                    source: default
                    policy:
                      version: 1
                      reserveCents: 5000
                      minDebitCents: 0
                    updatedAt: null
                lender:
                  summary: Your own policy, debit card first
                  value:
                    source: lender
                    policy:
                      version: 1
                      reserveCents: 2500
                      minDebitCents: 1000
                      chargeOrder:
                        - card
                        - ach
                      fallbackOn:
                        - insufficient_funds
                        - instrument_invalid
                    updatedAt: '2026-11-13T12:00:00Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    PaymentPolicyResponse:
      type: object
      properties:
        source:
          type: string
          enum:
            - default
            - lender
          description: |
            `lender` — the policy you set. `default` — you have not set one.
        policy:
          $ref: '#/components/schemas/PaymentPolicy'
        updatedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: When you last set your policy. `null` on the default.
    PaymentPolicy:
      type: object
      additionalProperties: false
      description: |
        Your collection policy. camelCase, unlike the enrollment routes. Unknown
        fields are rejected.
      properties:
        version:
          type: integer
          enum:
            - 1
          default: 1
        reserveCents:
          type: integer
          minimum: 0
          default: 0
          description: >
            A payment fires only when the balance covers the amount owed plus
            this

            much, in cents. The reserve is never charged.
        minDebitCents:
          type: integer
          minimum: 0
          default: 0
          description: >
            The smallest payment Rightfoot submits, in cents. A borrower whose
            amount

            is below it is held with `amount_below_minimum`.
        chargeOrder:
          $ref: '#/components/schemas/ChargeOrder'
        fallbackOn:
          $ref: '#/components/schemas/FallbackOn'
    ApiErrorResponse:
      type: object
      properties:
        status:
          type: string
          description: Status of the error, either "error" or "success"
        status_code:
          type: integer
          description: HTTP status code of the error
        error:
          type: object
          properties:
            code:
              type: string
              description: Error code (e.g., "RESOURCE_NOT_FOUND")
            message:
              type: string
              description: Detailed error message.
            details:
              type: string
              description: Additional details about the error
            timestamp:
              type: string
              format: date-time
              description: Time the error occurred
            suggestion:
              type: string
              description: Suggested action to resolve the error
        documentation_url:
          type: string
          format: uri
          description: URL to the documentation for the error
    ChargeOrder:
      type:
        - array
        - 'null'
      minItems: 1
      maxItems: 2
      uniqueItems: true
      items:
        $ref: '#/components/schemas/ChargeRail'
      description: |
        The rails to collect on, in order: `["card", "ach"]` charges the debit
        card first and falls back to ACH, `["ach", "card"]` the other way round.
        `ach` is required; a card-only order is not offered. Unset is ACH alone.
    FallbackOn:
      type:
        - array
        - 'null'
      uniqueItems: true
      items:
        $ref: '#/components/schemas/FailureCategory'
      description: >
        Which failures move a payment to the next rail in the charge order. A
        rail

        with another after it gets one payment per collection attempt. If that

        payment fails for a reason in this list, the next rail is tried;
        otherwise

        the attempt ends. Unset is every category listed here. Has no effect on
        an

        ACH-only order.
    ChargeRail:
      type: string
      enum:
        - ach
        - card
      description: |
        `ach` — the bank account in `account_number` / `routing_number`.

        `card` — the debit card in `charge_instrument`.
    FailureCategory:
      type: string
      enum:
        - insufficient_funds
        - instrument_invalid
        - authorization_revoked
        - declined_by_processor
      description: >
        `insufficient_funds` — not enough money on the rail tried.


        `instrument_invalid` — the instrument cannot take a payment: a closed or

        frozen account, an expired card.


        `authorization_revoked` — the borrower or their bank refused the
        payment,

        such as an unauthorized ACH return or a card dispute.


        `declined_by_processor` — the payment processor refused it for its own

        reasons.


        A processor outage (`processor_error`) never moves a payment to another

        rail: the same rail is tried again later. It cannot be listed.
  responses:
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorResponse'
          example:
            status: error
            status_code: 401
            error:
              code: UNAUTHORIZED
              message: Invalid API key provided.
              timestamp: '2024-09-16T12:01:00Z'
              suggestion: Please check your API key.
            documentation_url: https://api.rightfoot.com/docs
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >
        Authentication to the API is performed via Bearer Token Authentication.
        Provide your API key as the bearer token in the Authorization header.


        All API requests must be made over HTTPS. Calls made over plain HTTP
        will fail. API requests without authentication will also fail.

````

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