---
title: "Create Recurring Grant"
method: POST
path: "/v1/recurring_grants"
tags: ["recurring_grants"]
---

# Create Recurring Grant

`POST /v1/recurring_grants`

Create and submit a new recurring grant. This should be used to capture a recurring grant intent from an authorized DAFpay workflow session and submit the recurring grant request to the DAF sponsor.

<Warning>
Error handling:
- The recurring grant must be captured within 15 minutes of authorization otherwise the request will return status `410 Gone`.
- A recurring grant can only be captured once from any given workflow session so any duplicate requests will return status `409 Conflict`.
- The amount must be in whole dollar increments (rounded to the nearest hundred) as currently DAFs only accept whole dollar grants otherwise the request will return status `400 Bad Request`.
- The amount must be greater than or equal to the minimum grant amount for the DAF otherwise the request will return status `400 Bad Request`.
- The amount must be less than or equal to the user's DAF account balance otherwise the request will return status `400 Bad Request`.
- Any inputs exceeding the maximum allowed length will be automatically truncated unless otherwise stated.
</Warning>

## Request body

- object
  - `workflowSessionId` string, required — The identifier of the donor's DAFpay Workflow Session. See [Capturing Grant Intents](/guides/dafpay/integrating-dafpay/integration#capturing-grant-intents) for how to get this value from the DAFpay `CHARIOT_SUCCESS` event.
  - `frequency` 'MONTHLY', required — The recurrence interval schedule for the recurring grant. Currently, only `MONTHLY` is supported.
  - `amount` number, required — The final grant amount in cents that will be processed by Chariot and submitted to the DAF for recurring gifts. This amount must be in whole dollar increments (rounded to the nearest hundred) as currently all DAFs only accept whole dollar grants.
  - `applicationFeeAmount` number — This parameter specifies the fee your platform plans to take from the first grant in cents. This is a fee in addition to Chariot's processing fee. With application fees, Chariot collects the fee you determine from the nonprofit and passes it to your platform. Please note that platform fees are only taken when the grant is successfully received by the nonprofit. The sum of Chariot's fee and the applicationFeeAmount cannot exceed 5% of the grant's amount. If the 5% limit is exceeded, a 400 error will be returned.
  - `donor` object
    - `firstName` string — The first name of the donor. Maximum length: 255 characters.
    - `lastName` string — The last name of the donor. Maximum length: 255 characters.
    - `email` string — The email address of the donor. Maximum length: 255 characters.
    - `phone` string — The phone number of the donor. Maximum length: 255 characters.
    - `address` GrantAddress
      - `line1` string — Address line 1 (e.g. street, PO Box, or company name). Maximum length: 255 characters.
      - `line2` string — Address line 2 (e.g. apartment, suite, unit, or building). Maximum length: 255 characters.
      - `city` string — City, district, suburb, town, or village.. Maximum length: 255 characters.
      - `state` string — State, county, province, or region. Maximum length: 255 characters.
      - `postalCode` string — ZIP or postal code. Maximum length: 255 characters.
  - `note` string — A note the donor wants to send to the nonprofit. Maximum length: 400 characters.
  - `designation` string — The designation to include on the grant. If this is left blank, "Where needed most" will be used. Note that including a custom designation may cause the grant approval process to take longer. Designations over 100 characters will be truncated.

## Response `201`

Created recurring grant

- RecurringGrant — A RecurringGrant represents a successfully initiated recurring grant request with a Donor Advised Fund. RecurringGrants are created when a person interacts with an instance of Chariot Connect and successfully submits a recurring grant and completes the workflow. On creation, each RecurringGrant object will also have a Grant object created to represent the first grant of the recurring grant. There can be many grants associated with the same recurring grant.
  - `id` string, uuid, required — The unique identifier for the object
  - `trackingId` string — The tracking ID for the grant
  - `workflowSessionId` string, uuid, required — ID of the Connect Workflow Session associated with this grant
  - `fundId` string, required — ID of the donor advised fund
  - `frequency` 'MONTHLY', required — How often the DAF provider will submit the recurring grant. At the moment, monthly is the only supported frequency.
  - `externalRecurringGrantId` string — ID of the grant associated with the donor advised fund
  - `createdAt` string, date-time — Time when this object was created; expressed in RFC 3339 format
  - `updatedAt` string, date-time — Time when this object was last updated; expressed in RFC 3339 format
  - `amount` number, required — The grant amount expressed in units of whole cents
  - `firstName` string — The donor's first name
  - `lastName` string — The donor's last name
  - `phone` string — The donor's phone number
  - `email` string — The donor's email
  - `note` string — An note inputted by the user at submisson
  - `address` GrantAddress
    - `line1` string — Address line 1 (e.g. street, PO Box, or company name). Maximum length: 255 characters.
    - `line2` string — Address line 2 (e.g. apartment, suite, unit, or building). Maximum length: 255 characters.
    - `city` string — City, district, suburb, town, or village.. Maximum length: 255 characters.
    - `state` string — State, county, province, or region. Maximum length: 255 characters.
    - `postalCode` string — ZIP or postal code. Maximum length: 255 characters.

## Other responses

- `400` — The request is invalid or contains invalid parameters
- `401` — Unauthorized. The request is missing the security (OAuth2 Bearer token) requirements and the server is unable to verify the identify of the caller.
- `403` — Access denied
- `404` — Resource Not Found
- `409` — Resource Conflicts
- `410` — Resource Gone or Expired
- `500` — Internal Server Error

---

[API](https://skmtc.net/chariot-giving/apis/chariot-api-4.md) · [All operations](https://skmtc.net/chariot-giving/apis/chariot-api-4/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/chariot-giving/chariot-api-4/versions/c194d399d515/schema)
