bankAccountTransfer field.
Create a Transfer
Use thebankAccountTransferCreate mutation to create a transfer. It needs the TRANSFER_DRAFT permission.
Input
maxTransferAmount.
fromBankAccountId and toBankAccountId must be two different bank accounts of the same Firm.
clientId and matterId are optional. They must belong to the Firm. If you pass both, the matter must belong to the client.
status defaults to DRAFT. Pass APPROVED to create and approve in one step. That needs the TRANSFER_APPROVE permission, and it is not allowed when dual control is on.
Approve a Transfer
Use thebankAccountTransferApprove mutation to approve a DRAFT transfer. It needs the TRANSFER_APPROVE permission. When dual control is on, the approver must be different from the creator.
APPROVED. Approving a transfer does not start it.
Start a Transfer
Use thebankAccountTransferInitiateTxn mutation to send an APPROVED transfer to the processor. Anyone who can read the transfer can start it. Only one start can run for a transfer at a time.
maxTransferAmount and the Firm’s transfer limits, and that both bank accounts are ready.
Check status on the result:
IN_TRANSIT or COMPLETED means the processor accepted the transfer. paymentTxns now holds a transfer_out and a transfer_in transaction.
FAILED with errorMessage set means a check failed before the transfer was sent, or the processor rejected it. No money moved.
REQUEST_PENDING with no errorMessage means the transfer was sent but Confido could not record the result. See below.
When the result is unknown
If the result isREQUEST_PENDING, the transfer may have been sent. Do not create a new transfer for the same funds. Do not call bankAccountTransferInitiateTxn again; it returns an error while a request is pending. Read the transfer later with bankAccountTransferGet, and contact support@confidolegal.com if it stays REQUEST_PENDING.
Get a Transfer
Use thebankAccountTransferGet query to read one transfer.
List Transfers
Use thebankAccountTransfersList query to list the Firm’s transfers. It returns transfers and total, the number of transfers that match the filters.
eq, gt, gte, lt, or lte.
createdOn filters by creation date with gt or lt.
clientIds, matterIds, fromBankAccountIds, and toBankAccountIds return transfers that match any id in the list.
statuses returns transfers in any of the listed statuses.
search matches client name, matter name, and memo. It is case-insensitive and needs at least 3 characters.
orderBy sorts by amount or createdOn. orderDir sets ASC or DESC for each orderBy field, by position, and defaults to ASC. With no orderBy, results are sorted by createdOn newest first.
limit defaults to 100 and must be between 1 and 1000. Use offset to page through results.
Update a Transfer
Use thebankAccountTransferUpdate mutation to change a DRAFT or APPROVED transfer. It needs the TRANSFER_DRAFT permission. Updating an APPROVED transfer also needs TRANSFER_APPROVE, and it is not allowed when dual control is on. Transfers in any other status cannot be updated.
Input
null for clientId, matterId, or memo to clear it. The same rules as create apply to the new values.
UPDATED event. An APPROVED transfer stays APPROVED after the update.
Return a Transfer to Draft
Use thebankAccountTransferReturnToDraft mutation to move an APPROVED transfer back to DRAFT. It needs the TRANSFER_DRAFT permission. It clears approvedBy, and the transfer must be approved again before it can start.
Delete a Transfer
Use thebankAccountTransferDelete mutation to delete a DRAFT or APPROVED transfer. It needs the TRANSFER_DRAFT permission. Transfers that have been started cannot be deleted.
List Transfer Events
Use thebankAccountTransferEventsList query to read a transfer’s history. See Transfer Events for each event type.