Send a Wire (International)

POST Transaction to send an international wire

To send an international wire, you will create a transaction from a Deposit Account (DEPOSIT-US) to a Wire Account (WIRE-INT node).

Reminder: Please remember to Create Users, Oauth Users and Link Accounts (including a DEPOSIT-US node for the sender and a WIRE-INT node for the recipient).

API ENDPOINT

https://uat-api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/trans

PATH PARAMETER

user_id :
required
string

ID of sender (user)

node_id :
required
string

ID of sending node

BODY PARAMETER

to.type :
required
string

Receiving node type

to.id :
required
string

Receiving WIRE-INT ID

amount.amount :
required
double

Amount user wishes to send

amount.currency :
required
string

Currency of the transaction amount

extra.ip :
required
string

IP address of the user device while creating transaction

EXAMPLE REQUEST

POST /v3.1/users/594e0fa2838454002ea317a0/nodes/594e6e6c12e17a002f2e39e5/trans HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 127.0.0.1
X-SP-USER: oauth_auVIbQ8WXC0pnLU9ivEs4tcHDejqFJlwoNrZ3fO1|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "to": {
    "type": "WIRE-INT",
    "id": "594e6e6c12e17a002f2e39e4"
  },
  "amount": {
    "amount": 2000.1,
    "currency": "USD"
  },
  "extra": {
    "ip": "192.168.0.1"
  }
}
from_node = '594e606212e17a002f2e3251'

body = {
  "to": {
    "type": "WIRE-INT",
    "id": "594e6e6c12e17a002f2e39e4"
  },
  "amount": {
    "amount": 2000.1,
    "currency": "USD"
  },
  "extra": {
    "ip": "192.168.0.1"
  }
}

user.create_trans(from_node, body)
const fromNodeID = '594e606212e17a002f2e3251';
const body = {
  "to": {
    "type": "WIRE-INT",
    "id": "594e6e6c12e17a002f2e39e4"
  },
  "amount": {
    "amount": 2000.1,
    "currency": "USD"
  },
  "extra": {
    "ip": "192.168.0.1"
  }
};

user.createTransaction(fromNodeID, body);
from_node = '594e606212e17a002f2e3251'

body = {
  "to": {
    "type": "WIRE-INT",
    "id": "594e6e6c12e17a002f2e39e4"
  },
  "amount": {
    "amount": 2000.1,
    "currency": "USD"
  },
  "extra": {
    "ip": "192.168.0.1"
  }
}

user.create_transaction(node_id: from_node ,payload: body)
$to = (object)[
   "type" => "WIRE-INT",
   "id" => 'to_node_id'
];
$amount = (object)[
   "amount" => 22.1,
   "currency" => "USD"
];
$extra = (object)[
   "ip" => "IP_address_of_user_device_while_creating_transaction"
];
$body = (object)[
   "to" => $to,
   "amount" => $amount,
   "extra" => $extra
];
$nodeid = '5c3d416f7b08ab0066ee8cae';
$user->create_trans($nodeid, $body);
nodeID := “594e606212e17a002f2e3251”

body := `{
  "to": {
    "type": "WIRE-INT",
    "id": "594e6e6c12e17a002f2e39e4"
  },
  "amount": {
    "amount": 2000.1,
    "currency": "USD"
  },
  "extra": {
    "ip": "192.168.0.1"
  }
}`

data, err := user.CreateTransaction(nodeID, body)

2FA For Outgoing Wires

We strongly encourage requiring 2FA on the sender before you allow them to send a wire from their deposit account. This is an extra step of verification, since you cannot pull a wire back after it is sent.

EXAMPLE RESPONSE

{
    "error_code": "0",
    "http_code": "200",
    "limit": 20,
    "node_count": 1,
    "nodes": [
        {
            "_id": "594e67f1603964002f5561e7",
            "_links": {
                "self": {
                    "href": "https://uat-api.synapsefi.com/v3.1/users/594e0fa2838454002ea317a0/nodes/594e67f1603964002f5561e7"
                }
            },
            "allowed": "CREDIT-AND-DEBIT",
            "client": {
                "id": "589acd9ecb3cd400fa75ac06",
                "name": "SynapseFI"
            },
            "extra": {
                "other": {},
                "supp_id": ""
            },
            "info": {
                "account_num": "7443",
                "address": "PLACE DE LA REPUBLIQUE 4 CROIX 59170 FR",
                "balance": {
                    "amount": "0.00",
                    "currency": "USD"
                },
                "bank_long_name": "3 SUISSES INTERNATIONAL",
                "bank_name": "3 SUISSES INTERNATIONAL",
                "name_on_account": " ",
                "nickname": "Some Account"
            },
            "is_active": true,
            "timeline": [
                {
                    "date": 1498310639513,
                    "note": "Node created."
                }
            ],
            "type": "WIRE-INT",
            "user_id": "594e0fa2838454002ea317a0"
        }
    ],
    "page_count": 1,
    "success": true
}

Wire Cutoff Times

International wires will be sent out same day if created before 9AM PST.

Example Timeline

Here is an example timeline for an outgoing wire. Not all transactions will follow this exact timeline, so please do not build your logic off these times. Instead, monitor transaction status and account balance.

Note: Different banks post transactions at different times, so a user may not see their transaction marked as settled at the exact time that we mark a transaction as settled.

Description
Time
Transaction Status
status_id

User creates a transaction

Day 1, 8AM PT

CREATED

1

Transaction is submitted to our partner bank ("ODFI") at the appropriate cutoff time, assuming the transaction was not queued or canceled.

Day 1, 9AM PT

PROCESSING-DEBIT

2

User's bank picks up the Wire.

Day 1, 6PM PT

PROCESSING-CREDIT

3

We mark the Transaction as Settled

Day 1, 6:05PM PT

SETTLED

4

Transaction Status

The following are different types of transaction statuses for Wires.

Status
status_id
Description

QUEUED-BY-SYNAPSE

-1

Transaction queued by Synapse

QUEUED-BY-RECEIVER

0

Transaction queued by Client

CREATED

1

Transaction Created

PROCESSING-DEBIT

2

Processing Debit

PROCESSING-CREDIT

3

Processing Credit

SETTLED

4

Transaction Settled

CANCELED

5

Transaction Canceled

RETURNED

6

Transaction Returned

QUEUED AND CANCELED TRANSACTIONS

Visit our Transaction Codes resource for the full list of reasons a transaction can be queued or canceled.

To cancel a transaction yourself, DELETE transaction. Only transactions with a CREATED or QUEUED status can be canceled. Once a transaction is processing or settled you are unable to cancel it.

Returned Transactions

Returned Transactions will be marked as returned. When possible, we will propagate the reason along with the return.

Viewing the Transaction Timeline

If you need to track a wire, the transaction timeline will have the OMAD # available.

        timeline: [
                date: {
                        $date : 1515433760022,
                },
                note : "Transaction Created.",
                status : "CREATED",
                status_id : "1",
                date: {
                        $date : 1515433764803,
                },
                note : "Q10-K Further investigation needed from Synapse.",
                status : "QUEUED-BY-SYNAPSE",
                status_id : "-1",
                date: {
                        $date : 1515618615016,
                },
                note : "Transaction dequeued.",
                status : "CREATED",
                status_id : "1",
                date: {
                        $date : 1515618619079,
                },
                note : "",
                status : "PROCESSING-DEBIT",
                status_id : "2",
                date: {
                        $date : 1515618619258,
                },
                note : "",
                status : "PROCESSING-CREDIT",
                status_id : "3",
                date: {
                        $date : 1515618619303,
                },
                note : "",
                status : "SETTLED",
                status_id : "4",        ]

Subscribe to Webhooks

We recommend that you subscribe to webhooks to stay updated on the status of transactions.

Transaction Fees

By default, we deduct transaction fees from the transaction. To send the recipient 100% of the funds, designate the account you want to debit fees from.

Or take an additional fee for yourself and designate the DEPOSIT-US node you want to send fees to.

Idempotent Requests

POST calls support idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a transaction fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single charge is created.

To perform an idempotent request, attach a unique key to any POST request made to the API via the X-SP-IDEMPOTENCY-KEY: <key> header.

Idempotency keys expire after 24 hours.

Send a Wire (International)


POST Transaction to send an international wire

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.