Transfer funds

This endpoint is used to retrieve the complete details of a specific fund transfer between two accounts. A fund transfer represents the movement of money from one account to another, and this endpoint returns all associated metadata—including the transfer date, amount moved, notes, and detailed information about both the source and destination accounts. Transfers are only valid between accounts that use the same currency, and no sensitive financial information is ever returned. This response is designed to support reconciliation, reporting, financial auditing, and operational visibility within your platform.

📘

Note:

You can transfer funds between two active Tango accounts that live on the same Tango platform. The accounts must have the same currency such as, USD to USD, or CAD to CAD.

Use case

Acme Health uses this endpoint to track internal fund movements between clinic accounts within its healthcare platform. When wellness budgets and patient incentive funds are shifted from one account to another, Acme Health retrieves the full transfer record—including the transfer date, amount moved, notes, and the before‑and‑after balances of both accounts—to maintain clear financial audit trails and ensure compliance with healthcare accounting standards. This allows clinic administrators and finance teams to verify transfers, troubleshoot discrepancies, and maintain accurate, transparent financial reporting without exposing any sensitive payment data. Acme ensures to transfer funds only between accounts that share the same currency; both the source and destination accounts must use the same currencyCode for the transfer to be valid.


Endpoint

Use the following endpoint to transfer funds from one Tango account to another as long as both accounts use the same currency:

EndpointDescription
POST {URI}/transferFundsTransfer funds from one Tango account to the other
📘

Note:

  • Tango supports AUD, CAD, EUR, GBP, and USD for Global Choice Links. Learn more about Global Choice Links.
  • Only one currency can be associated with an account.
  • Currency cannot be changed once the account is created.
  • If no currency is specified when creating an account, it defaults to USD.
  • You can only transfer funds between accounts of the same currency, such as: USD to USD, or CAD to CAD.
  • Funds cannot be transferred between accounts that have different currencies, such as USD to EUR.

Parameters

The following body parameters are used to send data with this endpoint. When transferring funds, ensure all required fields are included and handled correctly. The externalRefID field is idempotent, meaning it prevents duplicate transfers from being processed if the same request is submitted more than once. This value is returned in transfer responses and appears in transfer details and transfer history, making it useful for audits and reconciliation.

Body paramsData typeRequirementDescription
externalRefIDstringoptionalSpecify the external reference ID to associate with this funding action. This value must be unique. Duplicate externalRefID is blocked at the account level. If a duplicate externalRefID is submitted, the funding request fails showing a 409 error message: “externalRefID is not unique. Duplicate funding request.”
transferFromstringrequiredThe accountIdentifier for the Account transferring funds from.
transferTostringrequiredThe accountIdentifier for the Account transferring funds to.
amountnumberrequiredThe currency amount of the funds being transferred. We only accept CAD, EUR, GBP, or USD. Only one currency can be specified. Currency can never be changed. The currency defaults to USD if no currency is specified.
transferNotesstringoptionalAdd notes when transferring funds (up to 150 characters)

Response body

A successful 200 OK response returns the full set of transfer‑level metadata for the specified account‑to‑account transfer. The response includes details about both the source account (transfer from) and the destination account (transfer to). No sensitive financial data (such as card numbers or protected credentials) is returned.

On a successful request (200 OK), the response body returns the following information:

Object

Data type

Description

transferDate

date-time

The timestamp indicating when the transfer was executed. This marks the moment funds were moved from the source account to the destination account.

transferredAmount

number

The total amount of money transferred between accounts. This represents the exact value deducted from the source account and credited to the destination account.

transferNotes

string

Optional notes or comments associated with the transfer, such as administrator remarks, internal references, or context for why the transfer was performed.

transferFrom

object

  • accountIdentifier (string) :Unique ID of the source account.

  • accountNumber (string): The account number associated with the source account.

  • displayName (string): A user-friendly name for the account.

  • currencyCode (string): The account’s currency (e.g., USD).

  • startingBalance (number): The balance before the transfer occurred.

  • endingBalance (number): The balance after the transfer was completed.

  • status (string): Current status of the account (e.g., active, inactive).

  • contactEmail (string): Email address for account notifications or statements.

transferTo

object

  • accountIdentifier (string): :Unique ID of the source account.

  • accountNumber (string): The account number associated with the source account.

  • displayName (string): A user-friendly name for the account.

  • currencyCode (string): The account’s currency (e.g., USD).

  • startingBalance (number): The balance before the transfer occurred.

  • endingBalance (number): The balance after the transfer was completed.

  • status (string): Current status of the account (e.g., active, inactive).

  • contactEmail (string): Email address for account notifications or statements.

externalRefID

string

An optional external reference identifier used to correlate this transfer with your internal system.


Examples

See the following payload example when you use this endpoint to transfer funds:

{
  "transferDate": "2025-04-29T22:53:23.806Z",
  "transferredAmount": 0,
  "transferNotes": "string",
  "transferFrom": {
    "accountIdentifier": "string",
    "accountNumber": "string",
    "displayName": "string",
    "currencyCode": "string",
    "startingBalance": 0,
    "endingBalance": 0,
    "status": "string",
    "contactEmail": "string"
  },
  "transferTo": {
    "accountIdentifier": "string",
    "accountNumber": "string",
    "displayName": "string",
    "currencyCode": "string",
    "startingBalance": 0,
    "endingBalance": 0,
    "status": "string",
    "contactEmail": "string"
  },
  "externalRefID": "string"
}

Here's an example payload for when you receive an error:

{
  "timestamp": "2025-02-21T23:23:13.930Z",
  "requestId": "string",
  "path": "string",
  "httpCode": 0,
  "httpPhrase": "string",
  "i18nKey": "string",
  "message": "The error message will show here for error codes ",
  "errors": [
    {}
  ]
}


Response codes

The possible response codes for this endpoint are as follows. For details, see

i18nkey codes and their error messages:

Response codeMeaning
200The request was successful..
400The server could not understand the request due to invalid syntax.
401Authentication is required and has either not been provided or failed.
403The server understood the request but refuses to authorize it.
404The server could not find the requested resource. In other words, the URL you’re trying to access doesn’t point to anything that exists on the server.
409The request could not be completed because it would cause a conflict with the current state of the resource.
500Something went wrong on the server, but the server cannot be more specific about what the exact problem is.
503The server is currently unable to handle the request due to temporary overload or maintenance.


© 2026 Tango API are provided by Tango, a division of BHN, Inc.