Skip to main content
The disbursementCreate mutation allows you to create a single disbursement. You can create a disbursement in either DRAFT or APPROVED status. The disbursement will only receive a url once it reaches APPROVED status.

Mutation

mutation DisbursementCreate($input: DisbursementCreateInput!) {
  disbursementCreate(input: $input) {
    id
    amount
    status
    url
    authorizedIdentities {
      type
      value
    }
    client {
      id
      clientName
    }
    matter {
      id
      name
    }
    fundingAccount {
      id
    }
  }
}

Input Fields

Required Fields

amount (Int) The amount in cents to disburse to the client. Must be greater than 0 and less than or equal to 100000000 (i.e., greater than $0.00 and less than or equal to $1,000,000.00) authorizedIdentities (Array of DisbursementIdentityInput) The identities (email or phone) that are authorized to access and accept the disbursement. At least one identity is required. Each identity includes:
  • type (DisbursementIdentityType): Either EMAIL or PHONE
  • value (String): The email address or phone number
  • source (DisbursementIdentitySource, optional): For informational purposes only. Used by Confido UI when identity comes from a known source, like a client.
fundingAccountId (String) The ID of the bank account to pull the funds from for the disbursement.

Optional Fields

id (String, nullable) Optional client-supplied ID for the new disbursement. Must be a valid UUID v4 string if provided. If null, the ID will be generated automatically. status (DisbursementStatus, nullable) The initial status of the disbursement. Defaults to DRAFT if not specified.
  • DRAFT: The disbursement is created but not yet approved. No url will be available. The disbursement must be approved before it can be accessed by the client.
  • APPROVED: The disbursement is immediately approved and will have a url available. Only FIRM_ADMIN users can create disbursements in APPROVED status.
allowedMethods (Array of DisbursementMethod, nullable) Specifies which payment methods are allowed for this disbursement. If left blank, the disbursement will use the firm’s default allowed methods. Available methods:
  • ACH: Slow ACH transaction via Plaid or manual entry of account and routing number
  • PUSH_TO_CARD: Instant transaction to a Visa or Mastercard debit card
  • REQUEST_CHECK: Firm will be informed that the client wants a check sent to them
clientId (String, nullable) The ID of an existing client to associate with the disbursement. Should not be used together with clientUpsert. clientUpsert (ClientUpsertInput, nullable) Creates a new client or links an existing one to the disbursement based on the provided ID. This is useful when you want to automatically create a client if they don’t exist, or link an existing client. Should not be used together with clientId. Fields:
  • id (String): A UUID v4. This ID is first used to lookup the client. If no client is found, it will be used as the ID for a new client.
  • clientName (String): The name of the client
  • email (String, nullable): Client’s email address
  • firstName (String, nullable): Client’s first name
  • lastName (String, nullable): Client’s last name
  • phone (String, nullable): Client’s phone number
matterId (String, nullable) The ID of an existing matter to associate with the disbursement. Should not be used together with matterUpsert. matterUpsert (MatterUpsertInput, nullable) Creates a new matter or links an existing one to the disbursement based on the provided ID. This is useful when you want to automatically create a matter if it doesn’t exist, or link an existing matter. Should not be used together with matterId. Fields:
  • id (String): A UUID v4. This ID is first used to lookup the matter. If no matter is found, it will be used as the ID for a new matter.
  • clientId (String): The ID of the client this matter belongs to
  • name (String): The name of the matter
enhancedSecurity (Boolean, nullable) If true, enables enhanced security for the disbursement. If null, uses the firm’s default enhanced security settings. expiryDays (Int, nullable) The number of days until the disbursement expires. If null, uses the firm’s default expiry days setting. metadata (JSON, nullable) A flexible JSON object that allows you to store arbitrary data. When a transaction is created for the disbursement, this metadata object is copied and saved on the transaction. This lets you associate transactions with external entities and pass through custom data as needed. For example, you could create a disbursement with:
{
  "metadata": {
    "mypartner_settlementId": "my_settlement_id",
    "externalReference": "REF123456"
  }
}
When the client accepts their funds, the corresponding transaction object will have this same metadata.

URL Generation

The url field is only populated when the disbursement reaches APPROVED status. This means:
  • Disbursements created in DRAFT status will have url: null
  • Disbursements created in APPROVED status will have a url immediately
  • Disbursements approved after creation (using disbursementApprove) will receive a url at that time
  • The url will change whenever the disbursement is updated, so it’s important to provide clients with the updated URL after any changes

Example Request

{
  "input": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "amount": 25000,
    "authorizedIdentities": [
      {
        "type": "EMAIL",
        "value": "john.doe@example.com"
      },
      {
        "type": "PHONE",
        "value": "+15551234567"
      }
    ],
    "fundingAccountId": "bank_account_123",
    "clientUpsert": {
      "id": "client-uuid-here",
      "clientName": "John Doe",
      "email": "john.doe@example.com",
      "firstName": "John",
      "lastName": "Doe"
    },
    "matterUpsert": {
      "id": "matter-uuid-here",
      "clientId": "client-uuid-here",
      "name": "Settlement Case 2024"
    },
    "allowedMethods": ["ACH", "PUSH_TO_CARD"],
    "enhancedSecurity": true,
    "expiryDays": 30,
    "metadata": {
      "settlementId": "SETT-2024-001"
    },
    "status": "APPROVED"
  }
}

Example Response

{
  "data": {
    "disbursementCreate": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "amount": 25000,
      "status": "APPROVED",
      "url": "https://app.confidolegal.com/d/abc123xyz",
      "authorizedIdentities": [
        {
          "type": "EMAIL",
          "value": "john.doe@example.com"
        },
        {
          "type": "PHONE",
          "value": "+15551234567"
        }
      ],
      "client": {
        "id": "client-uuid-here",
        "clientName": "John Doe"
      },
      "matter": {
        "id": "matter-uuid-here",
        "name": "Settlement Case 2024"
      },
      "fundingAccount": {
        "id": "bank_account_123"
      }
    }
  }
}

Authorization

  • FIRM_ADMIN users can create disbursements in either DRAFT or APPROVED status
  • FIRM_USER users can only create disbursements in DRAFT status and will receive an error if they attempt to create an APPROVED disbursement