POST
Create a bank transfer
Creates a new bank transfer using the walletId and
bankAccountId as counterparties. Most details are inferred
from bankAccountId. The walletId and bankAccountId
must be owned by the same enterpriseId.
Requires access token scope: wallet_spend_all
Body Params
object
Exactly one of
amount or baseAmount must be provided. Providing both or neither will return a 400 error.-
acceptAuthTermsboolean requiredWhether the client has accepted the ACH authorization terms. Required for deposits (transferDirection: "in"). Must betrueto initiate a deposit. Retrieve the authorization language to present to the user viaGET /api/tradfi/v1/enterprises/{enterpriseId}/ach-authorization. -
amountstringThe absolute value of the total amount of funds to be transferred as a decimal string (e.g., "500.00" for $500 USD). Include decimal places where applicable. Mutually exclusive withbaseAmount. -
applyInstantCreditbooleanWhether to apply instant credit to the transfer. -
bankAccountIdstring requiredThe bank account to use. Determines the bank rails. Presently, only ACH accounts are supported. -
baseAmountstringThe transfer amount in the currency's smallest unit as a string (e.g., "50000" for $500.00 USD, where the base unit is cents). The value is converted to a decimal using the currency's unit precision (e.g., 2 for USD, 0 for JPY). Mutually exclusive withamount. -
idstring requiredClient-generated transfer ID. Serves as the idempotency key. Prefer UUID v4, v5, or v7. -
transferDirectionstring enum requiredThe direction of the transfer. Onlyinis currently supported.in -
walletIdstring requiredThe Go Account wallet to use as counterparty.
Responses
201
Created
Response Body
object
-
amountstring requiredThe absolute value of the total amount of funds to be transferred to or from the related bank. Always returned as a decimal string with the currency's full precision (e.g., "500.00" for USD), regardless of whether the request usedamountorbaseAmount. -
applyInstantCreditboolean requiredWhether to apply "instant credit" to the transfer. This allows funds to be made available to customer from the CaaS reserve account if they are available. -
bankAccountIdstring requiredThe bank account used for the transfer. This also determines the bank rails used for the transfer. -
counterpartymap nullableInformation about the counterparty of the transfer. The available fields vary by bank rail and region (e.g. name, financial institution, country). The counterparty account number is masked, exposing only the last four characters (e.g. "*****7890"). Null until counterparty details are available, typically once the transfer has settled. -
createdAtstring date-time requiredWhen the transfer was created/initiated. -
enterpriseIdstring requiredThe enterprise related to the transfer. Determined automatically by the walletId. -
estimatedEffectiveOnstring date nullable requiredThe date when the transfer is expected to become "effective" or "posted" by the related bank. Without instant credit this will usually be either T+1 or T+4 depending on risk profile of the related enterprise and bank account. Null when not yet determined. -
idstring requiredThe ID of the transfer. This should be generated by the client (prefer v4, v5, or v7) because it also serves as the idempotency key. Using an automatically generated ID provides no idempotency guarantees. -
instantCreditLiabilityboolean requiredWhether the current transfer counts against the CaaS reserve for instant credit. Only applies to transfers that opted for applyInstantCredit and have not yet settled. Once settled, transitions to false. -
memoIdstring requiredAn automatically generated memo used for matching with bank transfers. Informational only. -
settledAtstring date-time nullable requiredWhen the transfer was settled (posted by the bank). Null until status is settled. -
statusstring enum requiredThe status of a transfer.initiatedmeans newly created and not yet completed processing.processingmeans currently processing with bank providers with funds in flight.settledmeans funds successfully processed and no longer flagged as instantCreditLiability.reversedmeans a previously settled transfer was reversed by the processor.failedmeans an unrecoverable error occurred before settlement.initiatedprocessingsettledreversedfailed -
transferDirectionstring enum requiredThe direction of the transfer.inis a deposit (funds from bank to wallet),outis a withdrawal (funds from wallet to bank).in -
transferTypestring enum requiredThe bank rails being used by the transfer. Inferred from the bankAccountId.ach-us -
txidstring requiredThe transaction ID correlated with wallet platform. Can also be used in GET requests as an identifier. -
walletIdstring requiredThe wallet (Go Account) used as counterparty to the transfer. Also determines the related enterprise.
400
Bad Request
Response Body
object
-
errorNamestring required -
errorstring required
401
Unauthorized
Response Body
object
-
errorNamestring required -
errorstring required
404
Not Found
Response Body
object
-
errorNamestring required -
errorstring required
500
Internal Server Error
Response Body
object
-
errorNamestring required -
errorstring required