REST APIFiatACH Debits

POST

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.
  • acceptAuthTerms boolean required
    Whether the client has accepted the ACH authorization terms. Required for deposits (transferDirection: "in"). Must be true to initiate a deposit. Retrieve the authorization language to present to the user via GET /api/tradfi/v1/enterprises/{enterpriseId}/ach-authorization.
  • amount string
    The 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 with baseAmount.

    at least 1 characters

  • applyInstantCredit boolean
    Whether to apply instant credit to the transfer.

    Defaults to false

  • bankAccountId string required
    The bank account to use. Determines the bank rails. Presently, only ACH accounts are supported.
  • baseAmount string
    The 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 with amount.

    at least 1 characters

  • id string required
    Client-generated transfer ID. Serves as the idempotency key. Prefer UUID v4, v5, or v7.
  • transferDirection string enum required
    The direction of the transfer. Only in is currently supported.
    in
  • walletId string required
    The Go Account wallet to use as counterparty.

    at least 1 characters

Responses

201
Created

Response Body

object

  • amount string required
    The 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 used amount or baseAmount.
  • applyInstantCredit boolean required
    Whether 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.
  • bankAccountId string required
    The bank account used for the transfer. This also determines the bank rails used for the transfer.
  • counterparty map nullable
    Information 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.
  • createdAt string date-time required
    When the transfer was created/initiated.
  • enterpriseId string required
    The enterprise related to the transfer. Determined automatically by the walletId.
  • estimatedEffectiveOn string date nullable required
    The 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.
  • id string required
    The 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.
  • instantCreditLiability boolean required
    Whether 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.
  • memoId string required
    An automatically generated memo used for matching with bank transfers. Informational only.
  • settledAt string date-time nullable required
    When the transfer was settled (posted by the bank). Null until status is settled.
  • status string enum required
    The status of a transfer. initiated means newly created and not yet completed processing. processing means currently processing with bank providers with funds in flight. settled means funds successfully processed and no longer flagged as instantCreditLiability. reversed means a previously settled transfer was reversed by the processor. failed means an unrecoverable error occurred before settlement.
    initiatedprocessingsettledreversedfailed
  • transferDirection string enum required
    The direction of the transfer. in is a deposit (funds from bank to wallet), out is a withdrawal (funds from wallet to bank).
    in
  • transferType string enum required
    The bank rails being used by the transfer. Inferred from the bankAccountId.
    ach-us
  • txid string required
    The transaction ID correlated with wallet platform. Can also be used in GET requests as an identifier.
  • walletId string required
    The wallet (Go Account) used as counterparty to the transfer. Also determines the related enterprise.
400
Bad Request

Response Body

object

  • errorName string required
  • error string required
401
Unauthorized

Response Body

object

  • errorName string required
  • error string required
404
Not Found

Response Body

object

  • errorName string required
  • error string required
500
Internal Server Error

Response Body

object

  • errorName string required
  • error string required