Create Transfer
https://bank.dattaremit.com/api/transfersRequires a bank-scoped key.
Creates a transfer.
## State
| State | Description |
|---|---|
| storing | The Platform is storing the transfer details in our private store |
| reviewing | The Platform is reviewing the transfer for compliance |
| pending | The Platform is executing the transfer |
| completed | The Platform has successfully completed the transfer |
| failed | The Platform was not able to successfully complete the transfer |
## Failure codes
| Code | Description |
|---|---|
| amount_too_low | The transfer was rejected due to the amount being too low |
| cancelled | The transfer was manually cancelled |
| compliance_rejection | The transfer was rejected for compliance reasons |
| internal_error | An internal error occurred while processing the transfer, please try again |
| invalid_address | The destination address is invalid for transfer |
| invalid_balance | There was insufficient balance for all required currencies to complete the transfer |
| return_risk_exceeded | The risk of return is too high for this activity to be completed |
| limit_exceeded | The customer is over the limits that have been set for them for this activity |
| daily_limit_exceeded | The customer is over their daily limits for this activity |
| weekly_limit_exceeded | The customer is over their weekly limits for this activity |
| monthly_limit_exceeded | The customer is over their monthly limits for this activity |
| network_fee_too_low | The transfer was rejected due to the network fee being too low |
| non_sufficient_funds | The customer does not have enough funds to complete the transfer |
| party_name_invalid | The transfer's associated external bank account has an invalid party name |
| payment_rail_invalid | The payment rail specified for the transfer is not supported by the external bank account |
| payment_request_expired | The payment request expired before it could be completed |
| plaid_access_not_granted | See the description from Plaid [here](https://plaid.com/docs/errors/item/#access_not_granted) |
| plaid_institution_not_responding | See the description from Plaid [here](https://plaid.com/docs/errors/institution/#institution_not_responding) |
| plaid_internal_server_error | See the description from Plaid [here](https://plaid.com/docs/errors/api/#internal_server_error-or-plaid-internal-error) |
| plaid_item_not_found | See the description from Plaid [here](https://plaid.com/docs/errors/item/#item_not_found) |
| plaid_item_not_supported | See the description from Plaid [here](https://plaid.com/docs/errors/item/#item_not_supported) |
| plaid_multiple_accounts | Multiple accounts were selected through Plaid Link. |
| plaid_no_accounts | See the description from Plaid [here](https://plaid.com/docs/errors/item/#no_accounts) |
| plaid_none_balances_error | The transfer was rejected due to an error with the balances retrieved by Plaid |
| plaid_unknown_error | See the description from Plaid [here](https://plaid.com/docs/errors/api/#unknown_error) |
| refresh_required | The transfer's associated external_bank_account needs to be reconnected via Plaid |
| invalid_destination | Issues with the destination details (invalid, closed, blocked) |
| customer_action_required | Authorization declined or customer action required |
| external_vendor_error | Unexpected error occurred with an external vendor or partner service during transfer processing |
| reversed | The transfer was reversed |
## Failure codes that will result in a state change for the associated external bank account
| Code | Description |
|---|---|
| refresh_required | The transfer was rejected due to the external bank account needing to be refreshed. The external bank account will be put in the state refresh_required |
| plaid_access_not_granted | The transfer was rejected due to the external bank account needing to be reconnected via Plaid. The external bank account will be put in the state deleted |
| plaid_item_not_found | The transfer was rejected due to the external bank account needing to be reconnected via Plaid. The external bank account will be put in the state deleted |
| plaid_item_not_supported | The transfer was rejected because the account is not supported. A different account should be connected via Plaid. The external bank account will be put in the state deleted |
| plaid_multiple_accounts | The transfer was rejected because multiple accounts were selected through Plaid Link. Only one account must be selected. The external bank account will be put in the state deleted |
| plaid_no_accounts | The transfer was rejected because no compatible accounts could be found. The external bank account will be put in the state deleted |
Required scope: transfers:execute
Body Params
requiredquote_guidstringrequiredThe associated quote's identifier.
transfer_typefunding | crypto | instant_funding | inter_account | lightning | bookrequiredThe type of transfer.
external_bank_account_guidstringThe customer's 'plaid', 'plaid_processor_token', or 'raw_routing_details' external bank account's identifier. Required for ACH, EFT, WIRE, and RTP payment rails. Not used for e-transfer rail. Required when transfer_type is instant_funding. Optional when transfer_type is funding.
fiat_account_guidstringThe identifier for the fiat account to use for the transfer. Required if the customer or bank has multiple fiat accounts. Optional when transfer_type is funding.
send_as_deposit_bank_account_guidstringThe deposit bank account's identifier. Only valid for withdrawals. The deposit bank account must be owned by the customer or bank initiating the transfer. Optional when transfer_type is funding.
payment_railach | eft | wire | rtp | etransferThe desired payment rail to initiate the transfer for. Optional when transfer_type is funding.
beneficiary_memostringThe memo to send to the counterparty. Optional when transfer_type is funding.
security_questionstringThe security question to send with an Interac E-Transfer withdrawal. Only accepted for e-transfer rail withdrawals; must be paired with security_answer. Optional when transfer_type is funding.
security_answerstringThe security answer the recipient must provide to claim an Interac E-Transfer. Only accepted for e-transfer rail withdrawals; must be paired with security_question. Optional when transfer_type is funding.
source_participantsobject[]The source participants for the transfer. Required when transfer_type is funding, transfer_type is instant_funding, transfer_type is book, transfer_type is crypto, or transfer_type is lightning.
destination_participantsobject[]The destination participants for the transfer. Required when transfer_type is funding, transfer_type is instant_funding, transfer_type is book, transfer_type is crypto, or transfer_type is lightning.
sardine_session_guidstringThe GUID of a previously created Sardine session. Used to correlate device signals from the Sardine SDK with the transfer screening. Optional when transfer_type is funding or transfer_type is instant_funding.
bank_fiat_account_guidstringThe identifier for the fiat account to use for the transfer. Required if the bank has multiple fiat accounts. Optional when transfer_type is instant_funding or transfer_type is lightning.
customer_fiat_account_guidstringThe identifier for the fiat account to use for the transfer. Required if the customer has multiple fiat accounts. Optional when transfer_type is instant_funding or transfer_type is lightning.
source_account_guidstringThe source account's identifier. Required when transfer_type is book or transfer_type is inter_account.
destination_account_guidstringThe destination account's identifier. Required when transfer_type is book or transfer_type is inter_account.
external_wallet_guidstringThe customer's external wallet's identifier. Optional when transfer_type is crypto.
customer_guidstringThe customer's identifier. Required when transfer_type is lightning.
network_fee_account_guidstringThe network fee account's identifier. Required for network fee transfers. Must be the identifier for the customer's or bank's fiat or trading account. For customer's to pay the network fees, include the customer's fiat or trading account guid. For bank's to pay the network fees, include the bank's fiat or trading account guid. Required when transfer_type is lightning.
expected_behavioursstring[]The optional expected behaviour to simulate. Only applicable for transfers under sandbox banks. The force_review behaviour will force the transfer to be reviewed for funding and instant_funding transfers.
labelsstring[]The labels associated with the transfer.
Responses
201Transfer created
401Unauthorized
403Forbidden
409Conflict
422Unprocessable Content
Request
curl https://api.dattaremit.com/api/transfers \
-X POST \
-H "Authorization: Bearer sk_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"quote_guid": "string",
"transfer_type": "funding",
"external_bank_account_guid": "string",
"fiat_account_guid": "string",
"send_as_deposit_bank_account_guid": "string",
"payment_rail": "ach",
"beneficiary_memo": "string",
"security_question": "string",
"security_answer": "string",
"source_participants": [
{
"type": "bank",
"amount": 1,
"guid": "string"
}
],
"destination_participants": [
{
"type": "bank",
"amount": 1,
"guid": "string"
}
],
"sardine_session_guid": "string",
"bank_fiat_account_guid": "string",
"customer_fiat_account_guid": "string",
"source_account_guid": "string",
"destination_account_guid": "string",
"external_wallet_guid": "string",
"customer_guid": "string",
"network_fee_account_guid": "string",
"expected_behaviours": [
"force_review"
],
"labels": [
"string"
]
}'Response
Transfer created
{
"guid": "string",
"transfer_type": "string",
"bank_guid": "string",
"customer_guid": "string",
"quote_guid": "string",
"external_bank_account_guid": "string",
"asset": "string",
"side": "string",
"state": "string",
"failure_code": "string",
"return_code": "string",
"amount": 1,
"estimated_amount": 1,
"fee": 1,
"fee_details": [
{
"type": "bank",
"asset": "string",
"amount": 1
}
],
"estimated_network_fee": 1,
"network_fee": 1,
"network_fee_asset": "string",
"network_fee_liability_amount": 1,
"network_fee_liability_amount_asset": "string",
"txn_hash": "string",
"identifiers": [
{
"type": "txn_hash",
"value": "string"
}
],
"reference_transfer_guid": "string",
"source_account": {
"guid": "string",
"type": "string",
"bank_guid": "string",
"customer_guid": "string"
},
"source_participants": [
{
"type": "string",
"amount": 1,
"guid": "string"
}
],
"destination_account": {
"guid": "string",
"type": "string",
"bank_guid": "string",
"customer_guid": "string"
},
"destination_participants": [
{
"type": "string",
"amount": 1,
"guid": "string"
}
],
"deposit_address_guid": "string",
"created_at": "2026-07-20T16:27:51.438Z",
"updated_at": "2026-07-20T16:27:51.438Z",
"hold_details": {
"applicable_types": [
"string"
],
"duration": 1,
"started_at": "2026-07-20T16:27:51.438Z"
},
"transfer_details": {},
"payment_rail": "string",
"external_id": "string",
"labels": [
"string"
],
"entries": [
{
"amount": 1,
"fee": 1,
"source_account": {
"guid": "string",
"type": "string",
"bank_guid": "string",
"customer_guid": "string"
},
"destination_account": {
"guid": "string",
"type": "string",
"bank_guid": "string",
"customer_guid": "string"
}
}
]
}