Donor Accounts

Update Donor Account

Update mutable properties on a Donor Account such as external_id, the nested donor fields, and metadata.

The Donor Account's status is managed automatically through the Authorization Token verification flow and cannot be changed directly via this endpoint.

patch/v1/donor_accounts/{id}

Path parameters

idstring required

The unique id of the Donor Account

Request body

external_idstring

The DAF's internal identifier for this Donor Account. Maximum length: 255 characters.

metadataobject

A map of arbitrary string keys and values to store information about the object.

Example request

{
  "donor": {
    "first_name": "Warren",
    "last_name": "Buffet",
    "phone": "+12125550100"
  },
  "external_id": "ACME-DAF-DONOR-1042"
}

Response

OK

idstring required

The unique identifier for this object.

status'pending' | 'approved' | 'rejected' required

The status of a Donor Account.

  • pending: The Donor Account has been created but the DAF has not yet approved or rejected it.
  • approved: The DAF has verified the donor's identity and Grants from this account can be processed.
  • rejected: The DAF has rejected the Donor Account. Grants from this account will not be processed.
external_idstring nullable

The DAF's internal identifier for this Donor Account. Can be set on creation or via Update Donor Account to link the DAFpay Donor Account to the donor's record in the DAF's own systems.

disabledboolean

Whether this Donor Account is currently disabled. A disabled Donor Account remains approved but cannot submit new Grant Requests — call Enable Donor Account to re-enable it. Disabling is only available for accounts in approved status.

created_atstring date-time required

Time when this object was created. Expressed in RFC 3339 format.

updated_atstring date-time required

Time when this object was last updated. Expressed in RFC 3339 format.

metadataobject

A map of arbitrary string keys and values to store information about the object.

Example response

{
  "id": "donor_account_01jpjenf5q6cawy43yxfcrxhct",
  "status": "pending",
  "donor": {
    "email": "warrenBuffet@example.com",
    "first_name": "Warren",
    "last_name": "Buffet",
    "phone": "+12125550100"
  },
  "external_id": "ACME-DAF-DONOR-1042",
  "approval": {
    "approved_at": "2026-04-02T18:30:00Z",
    "approved_by": "daf:fid_01jpjenf5q6cawy43yxfcrxhct"
  },
  "rejection": {
    "rejected_at": "2026-04-02T18:30:00Z",
    "rejected_by": "daf:fid_01jpjenf5q6cawy43yxfcrxhct",
    "rejection_reason": "Donor could not be located in our records."
  },
  "created_at": "2026-04-01T12:00:00Z",
  "updated_at": "2026-04-02T18:30:00Z"
}

Changes

Changed in 7 of the 41 revisions of this API.261541

  • 90671617b8252025See the full diff
    • removed the required property code from the response with the 400 status

      response-required-property-removed

    • removed the required property code from the response with the 401 status

      response-required-property-removed

    • removed the required property code from the response with the 403 status

      response-required-property-removed

    • removed the required property code from the response with the 404 status

      response-required-property-removed

    • removed the required property code from the response with the 500 status

      response-required-property-removed

    • removed the required property error from the response with the 400 status

      response-required-property-removed

    • removed the required property error from the response with the 401 status

      response-required-property-removed

    • removed the required property error from the response with the 403 status

      response-required-property-removed

    • removed the required property error from the response with the 404 status

      response-required-property-removed

    • removed the required property error from the response with the 500 status

      response-required-property-removed

    • removed the required property message from the response with the 400 status

      response-required-property-removed

    • removed the required property message from the response with the 401 status

      response-required-property-removed

    • removed the required property message from the response with the 403 status

      response-required-property-removed

    • removed the required property message from the response with the 404 status

      response-required-property-removed

    • removed the required property message from the response with the 500 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 400 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 401 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 403 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 404 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 500 status

      response-required-property-removed

    • media type application/json was changed to a more specific media type application/problem+json for the response status 400

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 401

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 403

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 404

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 500

      response-media-type-name-specialized

    • added the required property detail to the response with the 400 status

      response-required-property-added

    • added the required property detail to the response with the 401 status

      response-required-property-added

    • added the required property detail to the response with the 403 status

      response-required-property-added

    • added the required property detail to the response with the 404 status

      response-required-property-added

    • added the required property detail to the response with the 500 status

      response-required-property-added

    • added the required property status to the response with the 400 status

      response-required-property-added

    • added the required property status to the response with the 401 status

      response-required-property-added

    • added the required property status to the response with the 403 status

      response-required-property-added

    • added the required property status to the response with the 404 status

      response-required-property-added

    • added the required property status to the response with the 500 status

      response-required-property-added

    • added the required property title to the response with the 400 status

      response-required-property-added

    • added the required property title to the response with the 401 status

      response-required-property-added

    • added the required property title to the response with the 403 status

      response-required-property-added

    • added the required property title to the response with the 404 status

      response-required-property-added

    • added the required property title to the response with the 500 status

      response-required-property-added

    • added the required property type to the response with the 400 status

      response-required-property-added

    • added the required property type to the response with the 401 status

      response-required-property-added

    • added the required property type to the response with the 403 status

      response-required-property-added

    • added the required property type to the response with the 404 status

      response-required-property-added

    • added the required property type to the response with the 500 status

      response-required-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

  • 5aba475ace5e142See the full diff
    • the response property external_id became nullable for the status 200

      response-property-became-nullable

    • removed the optional property email from the response with the 200 status

      response-optional-property-removed

    • removed the optional property first_name from the response with the 200 status

      response-optional-property-removed

    • removed the optional property last_name from the response with the 200 status

      response-optional-property-removed

    • removed the optional property phone from the response with the 200 status

      response-optional-property-removed

    • added the new optional request property donor

      new-optional-request-property

    • added the required property donor to the response with the 200 status

      response-required-property-added

  • 4f143792edeb33See the full diff
    • removed the optional property decisioned_at from the response with the 200 status

      response-optional-property-removed

    • removed the optional property decisioned_by from the response with the 200 status

      response-optional-property-removed

    • removed the optional property rejection_reason from the response with the 200 status

      response-optional-property-removed

    • added the optional property approval to the response with the 200 status

      response-optional-property-added

    • added the optional property disabled to the response with the 200 status

      response-optional-property-added

    • added the optional property rejection to the response with the 200 status

      response-optional-property-added

    • removed the optional property fund_id from the response with the 200 status

      response-optional-property-removed

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • the response property email became optional for the status 200

      response-property-became-optional

    • the response property fund_id became optional for the status 200

      response-property-became-optional

  • 660117ded0113710See the full diff
    • removed the required property createdAt from the response with the 200 status

      response-required-property-removed

    • removed the required property fundId from the response with the 200 status

      response-required-property-removed

    • removed the required property updatedAt from the response with the 200 status

      response-required-property-removed

    • removed the request property externalId

      request-property-removed

    • removed the optional property decisionedAt from the response with the 200 status

      response-optional-property-removed

    • removed the optional property decisionedBy from the response with the 200 status

      response-optional-property-removed

    • removed the optional property externalId from the response with the 200 status

      response-optional-property-removed

    • removed the optional property firstName from the response with the 200 status

      response-optional-property-removed

    • removed the optional property lastName from the response with the 200 status

      response-optional-property-removed

    • removed the optional property rejectionReason from the response with the 200 status

      response-optional-property-removed

    • added the new optional request property external_id

      new-optional-request-property

    • added the optional property decisioned_at to the response with the 200 status

      response-optional-property-added

    • added the optional property decisioned_by to the response with the 200 status

      response-optional-property-added

    • added the optional property external_id to the response with the 200 status

      response-optional-property-added

    • added the optional property first_name to the response with the 200 status

      response-optional-property-added

    • added the optional property last_name to the response with the 200 status

      response-optional-property-added

    • added the optional property rejection_reason to the response with the 200 status

      response-optional-property-added

    • added the required property created_at to the response with the 200 status

      response-required-property-added

    • added the required property fund_id to the response with the 200 status

      response-required-property-added

    • added the required property updated_at to the response with the 200 status

      response-required-property-added

    • endpoint added

      endpoint-added