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:
| Endpoint | Description |
|---|---|
POST {URI}/transferFunds | Transfer 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 params | Data type | Requirement | Description |
|---|---|---|---|
| externalRefID | string | optional | Specify 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.” |
| transferFrom | string | required | The accountIdentifier for the Account transferring funds from. |
| transferTo | string | required | The accountIdentifier for the Account transferring funds to. |
| amount | number | required | The 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. |
| transferNotes | string | optional | Add 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 |
|
transferTo | object |
|
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 code | Meaning |
|---|---|
| 200 | The request was successful.. |
| 400 | The server could not understand the request due to invalid syntax. |
| 401 | Authentication is required and has either not been provided or failed. |
| 403 | The server understood the request but refuses to authorize it. |
| 404 | The 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. |
| 409 | The request could not be completed because it would cause a conflict with the current state of the resource. |
| 500 | Something went wrong on the server, but the server cannot be more specific about what the exact problem is. |
| 503 | The server is currently unable to handle the request due to temporary overload or maintenance. |
Updated 1 day ago
