Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 153 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

Synapse

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Product Guides

Loading...

Loading...

Loading...

Loading...

Loading...

API References

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Miscellaneous

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Developer Guides

Loading...

Loading...

Loading...

Loading...

Loading...

How to Contact us

Not a Customer yet?

Already a Customer?

If you wish to become a customer, please to get in touch with us.

If you wish to get a general sense of the offering, please go to the resource.

If you wish to add new products or services, please contact your Customer Success Manager or email us at .

Experiencing Technical Issues? Please check our . If the issue is not an ongoing incident, please email us at or to create a ticket.

go to our website
Getting Your Feet Wet
hello@synapsefi.com
Status Page
help@synapsefi.com
go to dashboard

How to Go-Live

This is an overview of our implementation process. We will share a more detailed timeline as part of your Implementation Guide.

General Implementation

Phase 1: Setup

ETA: 1-2 Weeks

Create Account & Setup Billing Setup your account and billing to kick off your implementation.

Submit Due Diligence Please submit this as soon as possible to prevent delays! We must complete due diligence on your company and beneficial owners prior to receiving bank approval.

Kickoff Call During the kickoff call, we will go over:

  1. Your Implementation Timeline

  2. Your Spec Sheet (detailing your product and any relevant controls)

  3. Your API Guide

  4. Best Practices (weekly calls, issue tracker, communication channels, etc)

Program Sandbox Controls You will receive a custom test environment ("sandbox") that matches the controls outlined on your Spec Sheet, allowing you to test in an environment that closely mirrors what you should expect in production.

Phase 2: Sandbox Testing

ETA: 2-6 Weeks

Third Party Partner Setup Synapse will work with you to receive necessary approvals and setups from third party partners. These can be done in parallel with other steps and includes:

  • Physical Card Setup with Card Printers

  • Card Acquiring with Networks

  • Mobile Wallet Setup with Networks and Partners

  • Account Aggregation with Banks

Compliance Review Synapse will request a number of documents, screenshots and acknowledgments to ensure the necessary compliance disclosures and marketing components are in place.

Fund Reserve Account Your reserve is used to cover potential losses. The initial funding amount is agreed upon during the Spec Sheet process.

Sign Beta Acknowledgement While in Beta, we ask that you clearly disclose to your users that your product is still in Beta. This is helpful if there are regulatory inquiries while you are in Beta.

Receive Bank Approval - Provisional Our partner bank(s) review your due diligence once it is submitted to grant provisional beta approval.

Program Production Controls - with Beta Cap Your production environment allows you to test real users and real transactions. Please note that we cap the number of users while you are finishing up your Beta testing.

Phase 3: Beta Testing

ETA: 2 Weeks

Receive Bank Approval Prior to going fully live, we will [again] submit your updated documentation, along with your completed reviews, to our partner bank(s).

Remove Cap on Users Once we receive full approval, we will remove the cap on the number of users that you can onboard.

Phase 4: Fully Live

Go-Live Kickoff Call Synapse will close out any remaining items from your implementation and walk you through what to expect now that you are live!

Model Validation After you have two weeks of data and some minimum usage, Synapse will review your users' activity. This allows us to catch potential concerns before you roll out your product at scale.

Ongoing UDAAP Marketing Reviews Prior to new Marketing roll-outs, please provide all materials to Synapse for review.

Physical Card Timeline

Synapse partners with multiple card vendors to support your physical card needs.

We will facilitate a direct line of communication between you and any of our vendors so you can fully leverage their expertise.

Timelines are ultimately dependent on the vendor. However, cards generally fall into two categories:

  • Print-on-Demand Cards Timeline: 6-8 Weeks

    Print-on-Demand cards are plastic cards with basic customization options. Opting for a Print-on-Demand card is the fastest option to get something to market since it does not require long lead times to print, nor does it require purchasing card inventory in advance. However, these cards have limited options for materials, finishes, and other customizations.

    Standard Card Package:

    • Card (Plastic; Glossy Finish)

    • Generic White Envelope (Optional Black/White Logo in Address field)

    • Carrier (Letter or 5x7 Paper Card to affix debit/credit card onto)

    • Activation Label (Sticker affixed to Card) - OPTIONAL

    • Inserts - OPTIONAL

  • Custom Inventory Cards Timeline: Dependent on level of customization Inventory Cards allow for additional customizations of materials and finishes beyond what a standard Print-on-Demand card supports. Because these cards are highly customized, they require the purchase of inventory upfront and additional lead times. Exact lead times are subject to the printer’s printing schedule upon finalizing art.

Intro to APIs

We are RESTful

Synapse has built a RESTful JSON API for you. Which means, we use:

  • POST to create a document

  • PATCH to update it

  • GET to query one or more documents

  • DELETE to cancel or delete a document (Subtext: nothing gets deleted. It is either unindexed in case of a user or a bank account or it's canceled in case of a transaction)

To make things easier, all GET calls that get multiple documents support pagination and since our primary database is mongoDB (that's why we call everything documents), it also supports mongo filters. Example call for retrieving LOCKED users, page 2 with max 10 documents:

GET /users?page=2&limit=10&filter={"permission":"LOCKED"}

We use Headers

Mostly all requests (with some minor exceptions) require various kinds of headers. Here are some examples:

Header

Example Value

Description

X-SP-GATEWAY

your_client_id|your_client_key

Your client id and secret, separated by a pipe.

X-SP-USER

user_oauth_key|user_device_fingerprint

User's OAuth key and their device fingerprint, separated by a pipe.

X-SP-USER-IP

user_ip

User's IP Address.

X-SP-IDEMPOTENCY-KEY

idempotency_key

Idempotency key to go along with the POST API call.

Not all headers are needed for all API calls. Some require client-level authentication while some require user-level authentication. More on this later, but a good rule of thumb is any resource that requires actions performed by the user (open deposit account, create a transaction, etc.), require user credentials (X-SP-USER-IP) while others require client-level credentials (X-SP-GATEWAY).

Idempotent Requests

To prevent duplicate creation of users, nodes, transactions and subnets, it's important provide retry attempts with idempotency keys.

All 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 connectivity error, you can retry the request with the same idempotency key to guarantee that only a single charge is created.

Notes to keep in mind when making idempotent requests:

  • Idempotency keys expire after 24 hours.

  • It is best practice to wait for a failure response from the POST call before attempting to retry the call.

We are Easy

All Synapse functionality can be broken down into the following core resources:

API Rate Limits

The following is a table of the the most common API calls and their respective rate limits. These limits cannot be increased. Please take this into account when building out your application.

HTTP Verb
URL
Functionality
Rate Limits (per min/per user)

POST

/oauth/<user:id>

This API call allows you to get oauth_key for users.

30

POST

/oauth/<user:id>/login

Using basic auth to get refresh_token for users.

30

GET

/users

View all users created with your client keys (paginated).

100

POST

/users

Allows you to register a new user.

100

GET

/users/<user:id>

View user info and refresh_token.

30

PATCH

/users/<user:id>

Add/update KYC, log in credentials, profile, etc.

30

GET

/users/<user:id>/nodes

View all nodes linked to a user (paginated).

100

POST

/users/<user:id>/nodes

Allows you to create a deposit account or link an external bank account to a user.

100

GET

/users/<user:id>/nodes/<node:id>

View node info.

100

PATCH

/users/<user:id>/nodes/<node:id>

Update supp_id, verify micro-deposits, etc.

100

DELETE

/users/<user:id>/nodes/<node:id>

Unindex node from a user.

100

POST

/users/<user:id>/nodes/<node:id>/subnets

Allows you to issue a virtual account number on top of a node.

100

GET

/users/<user:id>/nodes/<node:id>/subnets

View all subnets linked to a node (paginated).

100

GET

/users/<user:id>/nodes/<node:id>/subnets/<subnet:id>

View subnet info.

100

PATCH

/users/<user:id>/nodes/<node:id>/subnets/<subnet:id>

Update subnet info.

100

GET

/users/<user:id>/trans

View all transactions of a user (paginated).

100

GET

/users/<user:id>/nodes/<node:id>/trans

View all transactions of a node (paginated).

100

POST

/users/<user:id>/nodes/<node:id>/trans

Allows you to create a transaction.

100

GET

/users/<user:id>/nodes/<node:id>/trans/<trans:id>

View transaction info.

100

PATCH

/users/<user:id>/nodes/<node:id>/trans/<trans:id>

Update notes on a transaction.

100

DELETE

/users/<user:id>/nodes/<node:id>/trans/<trans:id>

Only works if transaction has been created or queued.

100

GET

/subscriptions

View all subscriptions created with your client keys (paginated).

10

POST

/subscriptions

Create a subscription with webhook preferences.

10

GET

/subscriptions/<subscription:id>

View a subscription.

10

PATCH

/subscriptions/<subscription:id>

Update scope, url, is_active, etc.

10

GET

<:user_id>/statements

View a users statement

30

GET

<:node_id>/statements

View a node statements

30

Max HTTP Request Body Size

HTTP request body size is limited to 30 MB maximum.

: Individual or Business accounts you create in our System. User objects store all KYC and Authentication information for each user.

: Nodes are either deposit accounts, credit accounts that you open with us, or 3rd party accounts you link with us to be able to move funds on behalf of the user. Each user can link or create multiple nodes under them.

: Transactions resource enables you to send money between various nodes. Just supply addresses for from and to nodes, and we will move money between both accounts. This is handy because this gives you one unified way of creating all kinds of transactions: Internal Transfers, ACH Debit, ACH Credit, Interchange Pulls, Push to Card, Wires, BillPay, etc.

: Each deposit or credit node (accounts we open for your users) automatically generates statements each month. This is to comply with regulations like Reg and . The idea is that we will generate the statements and you will distribute them.

: With Transactions resource, you can create transactions between two nodes that exist in the Synapse system. But what if you wanted other networks and platforms to be able to interface with the Synapse system? That's where subnets come in handy. If a node is hosted by Synapse (deposit or credit), you can issue a Subnet on top of that node to interface with other platforms. That's the general idea. Currently, it supports two kinds of interfaces -- Account and Routing Numbers, and Card Numbers.

: If a Subnet is a card number, this resource enables you to ship a physical card to the user.

: Since it's not efficient to poll our entire system with API calls, Subscriptions enables you to set up webhook alerts with us so that whenever updates to objects happen, your system can automatically stay in sync.

Users
Nodes
Transactions
Statements
E
Z
Subnets
Shipments
Subscriptions

ID Score

ID Score is a probabilistic score (0-1) assigned to all users at the time of onboarding that predicts the likelihood that the identity supplied belongs to the person who is creating the account. 1 means we are 100% certain that the user is who they say they are. 0% means with 100% certainty we can say that the user is not who they say they are.

When ID Score is enabled and users have a high enough ID Score, we will only collect Base Document and SSN to onboard a consumer (individual or joint account). For users with low ID Score, we will collect Government Issued ID and Video Auth as well.

Features

At the beginning of the user onboarding process, nearly every end-user submits the following data points:

  • Name

  • Physical address

  • Email address

  • Phone number

  • IP address

  • Date of Birth (DOB)

We then evaluate this submitted data. For example, we will place additional scrutiny (including restrictions) on IP addresses associated with:

  • Known web crawlers

  • VPN proxies

  • Anonymity networks (e.g. Tor)

Sometimes our model will need to account for user-submitted information that may not necessarily be an indicator of fraud. To delve deeper into a location example, a user may submit a phone number with a 415 area code (i.e. associated with the San Francisco Bay Area) while listing a current address in Los Angeles--and our model may be able to disregard the location mismatch if we can find evidence of previous San Francisco residency in their address history and we can independently verify that the user presently resides in Los Angeles. We refer to such 2nd-order logic as “derived features” of ID Score.

Note on Selection of Vendors

Three main factors are considered for determining which vendors are most useful for ID Score:

  • Decisioning Tools: Ensuring that we are aligned on how the vendor determines what data to pass on to use and how they make assessments about trustworthiness.

  • Coverage: Ensuring that there are no gaps or redundancies in the data.

  • Sources: Ensuring that certain groups are not underrepresented or overrepresented.

After receiving the augmented data from other identity verification vendors, we use machine learning models to compare against previously-seen data patterns.

Interpreting Results

ID Score is built to be conservative with all Synapse clients in mind. Each client has the ability to adjust the score application according to their business profiles and risk preferences.

For each user, ID Score assigns a trust level (low,med or high) and an id score (0-1) after evaluating the authenticity of user input details.

While KYC programs vary platform by platform, our general guidance is the follow the following though process:

trust_level

KYC requirements

Example KYC

low

Perform EDD by requiring additional documents and maybe even a manual review.

SSN + Govt ID + Video Auth + Manual Review

med

Ask for additional documentation, but still an automated review.

SSN + Govt ID

high

Ask for minimum KYC information.

SSN

Note: A low score does not necessarily mean a user is providing false information or committing fraud, it means that we don’t have enough positive signals to assure their identity.

Implementation Guide

How to go Live

After ID Score has been added in your MSA (Master Services Agreement), we will follow the following steps:

  1. We will analyze your platform’s activity and make KYC Recommendations for all three trust score values.

  2. Once we agree on a KYC workflow, we will program that for you in your Sandbox environment.

  3. You will then, Integrate with our API for ID Score.

  4. Test both EDD and non-EDD flows for ID Score in Sandbox.

  5. Once testing completes, we will enable the new workflows for you on production.

Intro to Spec Sheets

Synapse provides an easy-to-understand program overview to each platform prior to going live. This enables both parties (you and us) to be on the same page with the product and service offerings. This is also very helpful when regulators have questions about certain programs as it provides an overview of controls and flows of funds, among other details.

In this section we will be walking you through various aspects of a Spec Sheet, to ensure you have a clear understanding of how to navigate the document and the purpose it serves.

Platform Info

This section has basic company information, how you are planning to monetize your product, and who your target audience is.

Customer Demographics is broken down into the following sections:

Demographic

Description

Under-Banked

The end users historically have had limited-to-no access to financial products.

Banked

The end users historically have been moderately banked. So they've had access to deposit accounts, but not low APR loans, for example.

Well-Banked

The end users are well represented by mainstream financial products. They tend to be on the higher end of the socioeconomic ladder and have access to most mainstream financial products.

Fundraising & Financial History

Synapse Use Case

The section further describes each product and feature that the platform will be utilizing.

Currently, we support the following account types:

Account Type

Description

Individuals

End users will be individuals

Businesses

End users will be business entities

Joint Accounts

End users will be opening combined accounts together (E.g. families).

Third-Party Payment Accounts

No end users, user accounts will be opened for third parties that the users need to send payments to.

This is usually done in conjunction with the above account types as this is a way for your users to make payments to individuals/entities that are not a part of your platform.

KYC Program

The next section documents a platform's KYC Program, starting with document requirements and then an overview of the KYC Policy:

Document Requirements

CIP Tag 1 will be opening accounts for individuals who only need to have access to deposit accounts. For this user segment, the platform will be collecting Base Document (Name, Email, Phone, Address, DOB, and IP Address) and the user's SSN. But if the ID Score is below 0.70, the platform will also be collecting front and back of the user's Government Issued ID and Video Auth.

CIP Tag 2 is an example of the same user type but the ID Score Clip is 0.80 vs 0.70. Separating user types in this way ensures that your platform has granular control over the requirements and aligns customers to those requirements to help mitigate risk.

CIP Tag 3 is an example of a third-party payment account, the platform will only be collecting base documents on the individual/entity.

KYC Policy

Lending Program

Since in this example the platform is offering credit services, they will also have a Lending Program section in the Spec Sheet. This section has two subsections: Lending Box and Underwriting Policy.

Lending Box

This section goes over the basic terms of the loan. The max amount, APR, and payment schedule.

Underwriting Policy

Transaction Limits

This is the final section of the Spec Sheet that goes over how much a user and the platform (in aggregate), are able to process through Synapse.

Transaction Limits are a function of your operating capital and the overall fraud occurring on the platform and can be updated over time.

In this example, the platform wants to slow down settlements for ACH and RDC Pulls by 3 business days since that poses a risk of financial loss for the platform, while the rest of the transactions settle as usual.

Global Cash

Currently Global Cash are only able to hold USD balances, but you can onboard customers from the following countries:

  • Argentina

  • Australia

  • Austria

  • Belgium

  • Brazil

  • Canada

  • China

  • Chile

  • Colombia

  • Czech Republic

  • Cayman Islands

  • Denmark

  • Finland

  • France

  • Germany

  • Hong Kong

  • India

  • Ireland

  • Italy

  • Luxembourg

  • Malaysia

  • Mexico

  • Netherlands

  • New Zealand

  • Norway

  • Portugal

  • Singapore

  • Slovakia

  • South Africa

  • Spain

  • Sweden

  • Switzerland

  • United Kingdom

  • United States

  • Vietnam

Please note that the list above signifies the countries where we are able to do sound KYC/AML, to be able to provide Global Cash. However, Platform may be required to complete additional diligence (in form of legal opinion letters) in order to provide Synapse’s services in any of these (or other) jurisdictions.

Key Use Cases

CMA can be used for pretty much any application that requires an embedded deposit custody. But we are seeing the following use cases most frequently:

KYC Requirements

KYC For Individuals or UBOs

KYC For Business

Please note, we are still learning more about this segment of our business and KYC requirements might evolve over time. Consider this a v1 of Non-US Business KYC.

KYC for Non-US Sole Proprietorships

For UBO's of non-US sole proprietorships, we currently support the following.

To enable, please discuss this with your growth manager.

Key Features

Getting Started with Cash Management

To spin up a Cash Account for a user, here are the steps you can follow:

The first step is to create a user account and supply all of their KYC. Once the user account has been created, grab the refresh_token from the response which is needed to issue an OAuth key for the user.

To avoid 2FA, please use the fingerprint value that you used while creating the user account. Once the OAuth key is issued, grab oauth_key which will be needed to launch deposit hub.

First please preview the cash agreement to the user, once they agree, create the cash account. Please ensure the user is able to select their custody and risk preferences.

That's it. You've successfully created a cash account for your user.

Enable Some Features

Now let's enable some features on this cash account.

Now you have an ACH-US node linked under the user profile. This means the user can fund their cash account via an external bank account or if funds are available on the cash account, the user will be able to cash out into the external bank account.

Now the user's cash account will also have an account and routing number associated with it. This can be used for direct cash (payroll, Paypal, Venmo, etc.) or direct debit (billpay, Venmo, Paypal, etc.).

Now your user has a fully functioning Deposit Hub! We would also recommend trying the following:

How it Works - Under the Hood

Unlike a Deposit Account, for the Cash Management account, Synapse Brokerage LLC is the Custodian of Funds. This enables us to keep funds at more than one bank - effectively giving your users higher than 250K FDIC Coverage (just like Multibank) or invest funds in the public markets through Money Market Funds, while the customer can still spend through their card. If funds are kept at a clearing house, they qualify for SIPC Insurance.

Other Considerations

Step 1: or .

Step 2: to check Trust Level [1].

Step 3: Bases on Trust Level, or just standard docs. [1] Trust Level is located under the documents object of the user document (trust_level). If you are opening accounts for business or joint account users, please note that each base document has an ID Score value and Trust Level associated with it.

We call this program overview a Spec Sheet. of what a Spec Sheet looks like.

Since offering financial products pose a financial risk (see: ), understanding your operating capital and runway gives us the information we need to help underwrite you as a platform. This information also helps us determine what kind of payment limits we should be offering in the first iteration of your product.

This section helps break down, in Synapse terms, exactly what product you are looking to offer. The diagram above illustrates that the platform wants to issue two kinds of products (Interest Carrying Deposit and Custody) and one product (One-Time Loan).

The platform also intends to utilize our for funding the deposit account or paying bills, while also utilizing it for making loan repayments.

Lastly, the platform will be utilizing to enable direct debit or credits in and out of the user's deposit account. While also to build a debit card product on top of the deposit account and a charge card product on top of a custody account.

In this section, we document various users, the products and KYC required to enable those products. For instance, in this example, the platform will be opening accounts for three user segments, so we will be differentiating them with different CIP tags (see: ).

In this section, we ask that the platform articulates its KYC and Risk Strategy (see: ). This is benefical as it helps reduce the risk that accompanies offering a financial product.

In this section, we ask that the platform articulate its underwriting policy and strategy (see: ) for issuing loans. Providing an underwriting policy is an important part of providing access to credit responsibily as it can become a source of financial loss for the platform.

In this section, you will also find information on your Sub BINs and the Card Style IDs. Card Style IDs are used when you to your users.

Our Cash Management Account (CMA) aka Global Cash 🌏 is an iteration of our Product line that enables individuals and businesses to hold deposits either with FDIC Insured Institutions (FDIC) or in Money Market Funds (MMF) based on their investment preferences.

For US Customers, the KYC Requirements . For non-US Customers:

All KYC will be backed. Based on trust_level, we will collect the following:

For Universal Beneficial Owners (UBOs), the KYC is the same as listed . For the business itself, we will be collecting the following:

Virtual Docs
Social Docs

The next step will be to start performing actions on behalf of the user. To do that, you need to grab an token for the user.

To do that, usually, you make a API call and grab the refresh_token from the user profile or get the refresh token from the create user call (like above).

Now the user's cash account will also have a card number associated with it. The card can be for spending online or through the of choice. The card can also be so that the user has a physical card at hand for use. You can also use our to emulate some transactions.

This will enable your platform to always stay up to date when changes/updates to the , , or objects occur.

Since CMA is just another feature, the following considerations still apply:

or any others mentioned on the page.

GET User
Here is an example
Intro to Risk
Deposit Hub
Credit Hub
Payment Accounts
Intro to Risk
ship a card

Use Case

Description

Global Banking

Using CMA to create an FDIC insured cash account with a debit card, account number and access to payments for users in 30+ countries.

Global Spend Cards

Using CMA to create an FDIC or SIPC insured cash account with a credit card on top that enables businesses and individuals to spend online.

Banking for Creators

Gamers, Influencers, Freelancers, etc.

Using CMA to create an FDIC or SIPC insured cash account with a card on top that enables creators to bank regardless of where they live. Especially helpful in situations where creator funds are only avaliable for people who are able to open accounts in the US.

Banking for Travelers Including Foreign Nationals - International Students, -ve Interest or High Inflation Markets.

Using CMA to create an FDIC insured cash account with a card, account number and access to payments that enables individuals to bank in USD. Especially helpful in situations your users are traveling a lot or local currency has high inflation or local banks have a net negative interest rate or spending in local currency incurs a high tax.

Virtual Docs

Social Docs

Physical Docs

DUNS TIN (if applicable)

ADDRESS DATE WEBSITE MAILING_ADDRESS

MEMO_OF_INCORPORATION BYLAWS_DOC COI LBL PROFIT_LOSS DBA_DOC(if applicable)

BUS_REGISTRATION

ADDRESS DATE

Feature

Details

Fully Managed Compliance

All KYC, AML, Transmission compliance handled by Synapse. Customers just have to worry about fraud and marketing.

One Platform

Once a customer is live with CMA, you can cross sell them a Credit Solution (US Only), all in one platform.

Passively Invest

We believe all deposit accounts should be a source of wealth creation. For that reason, funds in a CMA can also be invested in public markets through our High/Medium/Low risk Money Market Funds.

Global Reach

With Synapse, you can onboard individuals or businesses for USD accounts from 30+ countries from the very beginning. No need to add additional vendors.

Card Issuance

Instantly issue card numbers on top of deposit accounts, then load them into any mobile wallet of choice and/or ship a physical card with various shipping and card styling options, including metal.

AC/RT Issuance

Issue unique account numbers on top of cash accounts to enable SWIFT, ACH or FedWire transactions.

Robust Payments Stack

With Synapse, you get SWIFT, ACH, Fedwire, BillPay, Card Processing, Check Issuance, RPPS, ATM and Cash network access from the very beginning. No need to add additional vendors.

Revenue Generating

Accrue daily rebates on deposits kept with us and also generate interchange revenue for your platform.

Deposit Hub
ID Score
Create User
OAuth User
OAuth
View User
Subscribe to Updates
users
nodes
transactions
subnet
Deposit Hub
Deposit Hub
above
Intro to Risk
are the same as they are for Deposit Hub
Negative Balance Reconciliation
Account Closure with Balance
Earned Interest
Earned Rebates

Trust Level

Virtual Docs

Social Docs

Physical Docs

Notes

high

DRIVERS_LICENSE TIN

ADDRESS DATE

high

DRIVERS_LICENSE PERSONAL_IDENTIFICATION

ADDRESS DATE

high

PASSPORT TIN

ADDRESS DATE

high

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE

med

DRIVERS_LICENSE TIN

ADDRESS DATE

PASSPORT_BIODATA

med

DRIVERS_LICENSE PERSONAL_IDENTIFICATION

ADDRESS DATE

PASSPORT_BIODATA

med

PASSPORT TIN

ADDRESS DATE

PASSPORT_BIODATA

med

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE

PASSPORT_BIODATA

med

DRIVERS_LICENSE TIN

ADDRESS DATE

NATIONAL_ID NATIONAL_ID_BACK

med

DRIVERS_LICENSE PERSONAL_IDENTIFICATION

ADDRESS DATE

NATIONAL_ID NATIONAL_ID_BACK

med

PASSPORT TIN

ADDRESS DATE

NATIONAL_ID NATIONAL_ID_BACK

med

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE

NATIONAL_ID NATIONAL_ID_BACK

med

DRIVERS_LICENSE TIN

ADDRESS DATE

DRIVER_LICENSE DRIVER_LICENSE_BACK

med

DRIVERS_LICENSE PERSONAL_IDENTIFICATION

ADDRESS DATE

DRIVER_LICENSE DRIVER_LICENSE_BACK

med

PASSPORT TIN

ADDRESS DATE

DRIVER_LICENSE DRIVER_LICENSE_BACK

med

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE

DRIVER_LICENSE DRIVER_LICENSE_BACK

med

DRIVERS_LICENSE TIN

ADDRESS DATE

VOTER_REGISTRATION_CARD VOTER_REGISTRATION_CARD_BACK

med

DRIVERS_LICENSE PERSONAL_IDENTIFICATION

ADDRESS DATE

VOTER_REGISTRATION_CARD VOTER_REGISTRATION_CARD_BACK

med

PASSPORT TIN

ADDRESS DATE

VOTER_REGISTRATION_CARD VOTER_REGISTRATION_CARD_BACK

med

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE

VOTER_REGISTRATION_CARD VOTER_REGISTRATION_CARD_BACK

med

DRIVERS_LICENSE TIN

ADDRESS DATE

VOTER_REGISTRATION_CARD VOTER_REGISTRATION_CARD_BACK

med

DRIVERS_LICENSE PERSONAL_IDENTIFICATION

ADDRESS DATE

VOTER_REGISTRATION_CARD VOTER_REGISTRATION_CARD_BACK

med

PASSPORT TIN

ADDRESS DATE

VOTER_REGISTRATION_CARD VOTER_REGISTRATION_CARD_BACK

med

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE

VOTER_REGISTRATION_CARD VOTER_REGISTRATION_CARD_BACK

low

PASSPORT TIN

ADDRESS DATE OTHER

NATIONAL_ID NATIONAL_ID_BACK VIDEO_AUTHORIZATION

low

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE OTHER

NATIONAL_ID NATIONAL_ID_BACK VIDEO_AUTHORIZATION

low

DRIVERS_LICENSE TIN

ADDRESS DATE OTHER

DRIVER_LICENSE DRIVER_LICENSE_BACK VIDEO_AUTHORIZATION

low

DRIVERS_LICENSE PERSONAL_IDENTIFICATION

ADDRESS DATE OTHER

DRIVER_LICENSE DRIVER_LICENSE_BACK VIDEO_AUTHORIZATION

low

PASSPORT TIN

ADDRESS DATE OTHER

DRIVER_LICENSE DRIVER_LICENSE_BACK VIDEO_AUTHORIZATION

low

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE OTHER

DRIVER_LICENSE DRIVER_LICENSE_BACK VIDEO_AUTHORIZATION

low

DRIVERS_LICENSE TIN

ADDRESS DATE OTHER

PERMANENT_RESIDENT_CARD PERMANENT_RESIDENT_CARD_BACK VIDEO_AUTHORIZATION

low

DRIVERS_LICENSE PERSONAL_IDENTIFICATION

ADDRESS DATE OTHER

PERMANENT_RESIDENT_CARD PERMANENT_RESIDENT_CARD_BACK VIDEO_AUTHORIZATION

low

PASSPORT TIN

ADDRESS DATE OTHER

PERMANENT_RESIDENT_CARD PERMANENT_RESIDENT_CARD_BACK VIDEO_AUTHORIZATION

low

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE OTHER

PERMANENT_RESIDENT_CARD PERMANENT_RESIDENT_CARD_BACK VIDEO_AUTHORIZATION

low

DRIVERS_LICENSE TIN

ADDRESS DATE

PASSPORT_BIODATA VIDEO_AUTHORIZATION

low

DRIVERS_LICENSE PERSONAL_IDENTIFICATION

ADDRESS DATE

PASSPORT_BIODATA VIDEO_AUTHORIZATION

low

PASSPORT TIN

ADDRESS DATE

PASSPORT_BIODATA VIDEO_AUTHORIZATION

low

PASSPORT PERSONAL_IDENTIFICATION

ADDRESS DATE

PASSPORT_BIODATA VIDEO_AUTHORIZATION

Intro to Risk

Risk, with regard to financial products, typically falls into two primary categories: Financial Risk and Regulatory Risk. While Financial Risk leads to direct losses to your operating capital, Regulatory Risk can lead to regulatory fines or other penalties. Ultimately both categories of risk have the potential to impact your operating capital, can impact your reputation, and in extreme cases may lead to the suspension of your program altogether.

Since both categories can cause disruptive events for your business, we recommend building Financial and Regulatory risk reduction strategies. In this resource, we will break down both types of risk and provide guidance to help you address them.

Financial Risk

Risk Appetite

Policy

Conservative

We will not provide payment origination products to any customers. All customers will be required to fund their accounts with us via direct deposit or cash deposits that do not pose return risk.

Moderate

Before the policy, here are some definitions: ID Score A probabilistic score (0-1) assigned to all users at the time of onboarding that predicts the likelihood that the identity supplied belongs to the person who is creating the account. 1 meaning we are 100% certain that the user is who they say they are. 0% means with 100% certainty we can say that the user is not who they say they are.

Risk Score A probabilistic score (0-1) assigned to all users who are utilizing their accounts which predicts the likelihood that their subsequent transactions will lead to a financial loss.

Policy Reducing Onboarding Risk

We will be utilizing ID Score to reduce stolen profiles in our system, the idea being that a user is less likely to fraud us with their real identity. If a user's ID Score is below 0.8, we will be collecting additional documentation and performing enhanced due diligence before onboarding them to the platform.

Reducing Ongoing Risk

On top of that, we will be utilizing Risk Score to put people in green (over 0.9), yellow (0.5-0.89), and red (below 0.5) paths. Where the green path will give users uninterrupted access to all payment products, yellow will reduce all payment limits by 50% and red will reduce limits by 90%.

Aggressive

We will provide all payment products to customers and assume that financial fraud is an acceptable risk to the business.

Following are more details on Financial Risk by types:

ACH

ACH is a one-way messaging system for payment processing. Meaning, that a transaction in ACH is assumed to have succeeded unless the receiving bank sends a failure notice.

Based on the reason for failure, the receiving bank can have up to 60 days to return a transaction, assuming they have return rights. In practice this means if you released an ACH credit in 3 business days to your user, you might still receive a return up to 57 days later. Here are the most common return reasons:

❌ = Will not lock the user or node. ✅ = Will lock the user or node.

Returns Codes

Code

Description

Locks Node

Locks User

R01

Insufficient Funds

❌

❌

R02

Account Closed

✅

❌

R03

No Account/Unable to Locate Account

✅

❌

R04

Invalid Account Number

✅

❌

R06

Returned Per ODFI's Request

❌

❌

R07

Authorization Revoked by Customer

✅

✅

R08

Payment Stopped

✅

❌

R09

Uncollected Funds

❌

❌

R10

Customer Advises Not Authorized

✅

✅

R11

Check Safekeeping Entry Return

❌

❌

R12

Branch Sold To Another DFI

✅

❌

R13

RDFI Not Qualified to Participate

✅

❌

R14

Account Holder Deceased

✅

✅

R16

Account Frozen

✅

❌

R17

File Record Edit Criteria

❌

❌

R20

Non-Transaction Account

✅

❌

R21

Invalid Company Identification

❌

❌

R22

Invalid Individual ID Number

❌

❌

R23

Credit Refused by Receiver

❌

❌

R24

Duplicate Entry

❌

❌

R29

Corporate Customer Advises Not Authorized

✅

✅

R31

Permissible Return Entry

❌

❌

R33

Return of XCK Entry

❌

❌

R34

Limited participation DFI

✅

❌

R68

Untimely Return

❌

❌

These returns are broken into three categories:

Unauthorized

These returns occur when the account holder of the ACH account informs their bank (receiving bank) that the transaction was not authorized by them. NACHA guidelines allow account holders to take up to 60 days to dispute these kinds of transactions. Return codes R07, R10, and R29 signify unauthorized returns.

Administrative

Administrative returns indicate that a transaction was returned due to administrative or account data errors. They occur within 3 business days of settlement. Return codes R02, R03, and R04 signify administrative returns.

Auto Rejection of Late ACH Returns

Auto rejection logic is in place for ACH returns that occur 60 days or greater after transaction settlement. If an ACH return request is received after 60 days of the payment settlement date, the request will not be honored.

Others

The rest of the returns are just other types of returns allowed by the ACH network. Like Administrative, these returns also occur within 3 business days of settlement.

Dishonoring a Return

Dishonoring a return is only allowed in circumstances where the return notice is late. This means, if Administrative and Other returns are coming to us after 3 business days or Unauthorized are coming after 60 days, then they can be dishonored. Otherwise, all other ACH Returns must be honored in compliance with the NACHA consumer protection guidelines.

Interchange

Unlike ACH, Interchange (more popularly know as acquiring) is capable of giving you failure notices in realtime in almost all circumstances. However, there are some scenarios, known as chargebacks that can take up to 120 days.

Based on the reason for failure, the receiving bank can have up to 120 days to fail a transaction. This means, if you released an Interchange credit instantly to your user, you might still receive a failure notice (also known as a Chargeback) up to 120 days later. Here are the most common failure reasons:

Failure Codes

Code

Description

Locks Node

Locks User

IR01

More information is needed from the card issuer

❌

❌

IR02

Refer to card issuer's unique transaction rules

❌

❌

IR03

Not recognized as a valid merchant

❌

❌

IR04

Card not activated for transaction use

❌

❌

IR05

Suspicious activity; do not honor this card's transactions

✅

❌

IR06

Error during transaction process

❌

❌

IR07

Card has unique conditions; currently not activated for transaction use

❌

❌

IR08

Needs more identification to process the transaction

❌

❌

IR09

Transaction requested; currently in progress

❌

❌

IR10

Transaction amount partially approved

❌

❌

IR11

Approved but not processed

❌

❌

IR12

Transaction invalid

❌

❌

IR13

Transaction amount invalid

❌

❌

IR14

Card number does not exist

✅

❌

IR15

Card issuer does not exist

✅

❌

IR17

Customer canceled/reversed payment

✅

❌

IR18

The customer reversed the transaction: chargeback

✅

✅

IR19

Please retry the transaction

❌

❌

IR20

Response from the card processor was invalid

❌

❌

IR21

Transaction formatted incorrectly (Potential reversal detected)

❌

❌

IR22

Suspected malfunction, reversal

❌

❌

IR23

Transaction fee was unacceptable

❌

❌

IR24

File update not supported by receiver

❌

❌

IR25

Unable to locate record on file

❌

❌

IR26

Duplicate file update record, no action taken

❌

❌

IR27

File update field edit error

❌

❌

IR28

Field update record locked out

❌

❌

IR29

File update not successful, contact the acquirer

❌

❌

IR30

Transaction formatted incorrectly (Potential reversal detected)

❌

❌

IR31

Transaction must be initiated in person, bank not supported by "switch"

❌

❌

IR32

Completed partially, reversal

❌

❌

IR33

Expired card, pick-up

✅

❌

IR34

Suspected fraud, pick-up

✅

✅

IR35

Card acceptor must contact acquirer, pick-up

❌

❌

IR36

Restricted card, pick-up

✅

❌

IR37

Merchant must contact the card security

❌

❌

IR38

PIN tried too many times; request a new card or try again later

✅

❌

IR39

No credit account tied to credit card

❌

❌

IR40

Function requested can not be carried out

❌

❌

IR41

Lost card: request a new card

✅

❌

IR42

Account tied to card is not universal

❌

❌

IR43

Stolen card: request a new card

✅

❌

IR44

Investment account not on required

❌

❌

IR45 - IR50

Reserved for ISO use

❌

❌

IR51

Insufficient funds (NSF)

❌

❌

IR52

Checking account not associated with the card

❌

❌

IR53

Savings account not associated with the card

❌

❌

IR54

Card Expired: request a new card

✅

❌

IR55

Pin tried is incorrect

❌

❌

IR56

No record of the validity of the card

❌

❌

IR57

Transaction not permitted to cardholder

❌

❌

IR58

Transaction denied by acceptor (Potential chargeback detected)

❌

❌

IR59

Fraud suspected

✅

✅

IR60

Merchant must contact the card acquirer

❌

❌

IR61

Transaction exceeds card limits

❌

❌

IR62

Card restricted

❌

❌

IR63

Card information compromised (Potential chargeback detected)

❌

❌

IR64

Original amount incorrect, reversal

❌

❌

IR65

Current transactions exceeds withdrawal frequency limit

❌

❌

IR66

Merchant must contact the card acquirer

❌

❌

IR67

Hard capture

❌

❌

IR68

Response received too late, reversal

❌

❌

IR69 - IR74

Reserved for ISO use

❌

❌

IR75

Allowable number of PIN tries exceeded

❌

❌

IR76

Key synchronization error

❌

❌

IR77

Reserved for private use

❌

❌

IR78

Customer not eligible for POS

❌

❌

IR79

Invalid digital signature

❌

❌

IR80

Stale date transaction

❌

❌

IR81

Issuer requested standin

❌

❌

IR82

Count exceeds limit

❌

❌

IR83

Reserved for private use

❌

❌

IR84

Time limit for pre-authorization reached

❌

❌

IR85

Issuer has no reason to decline the transaction (Account Verification)

❌

❌

IR86

Cannot verify PIN

❌

❌

IR87

Check already posted

❌

❌

IR88

Card information not on file

❌

❌

IR89

Security code verification failed

❌

❌

IR90

Card cutoff is in progress

❌

❌

IR91

Card change in progress or not taking effect

❌

❌

IR92

Intermediate network/financial institution is unknown

❌

❌

IR93

Transaction is in violation of the law and will not be completed

❌

❌

IR94

Duplicate transaction

❌

❌

IR95

Error with transaction reconciliation

❌

❌

IR96

System error during transaction

❌

❌

IR97 - IR98

Reserved for national use

❌

❌

IR99

Card network error during transaction

❌

❌

IR100 - IR126

Reserved for ISO use

❌

❌

IR127

SEC is invalid

❌

❌

IR128

Address and verification check data is required for this transaction

❌

❌

IR129

Security code date is required for the transaction

❌

❌

IR130 - IR131

Transaction not permitted to cardholder

❌

❌

IR132

Country of the card issuer is blocked by this merchant

❌

❌

IR133

Incorrect MAC was sent

❌

❌

IR134

Standard Entry Class requirements were not met

❌

❌

IR135

System error during transaction

❌

❌

IR136

Account length error

❌

❌

IR137

Card information error

❌

❌

IR138

Security code format error

❌

❌

IR139

Internal authorization error

❌

❌

IR140

Card product code is blocked

❌

❌

IR141

Attempt to process a BRIC transaction on a prior PIN based transaction

❌

❌

IR142

CyberSource Time Out Connection to CyberSource timed out

❌

❌

IR143

CARD_ENT_METH supplied is not valid or required additional data not provided as defined

❌

❌

IR144

CARD_ID is not valid

❌

❌

IR145

Required PIN block not present

❌

❌

IR146

Card Bin is not valid for pin-less routing

❌

❌

IR147

Signature store did not complete

❌

❌

IR148

Debit PIN transactions must be swiped

❌

❌

IR149

DB proxy response was not processed within the time out period

❌

❌

IR150

Transaction declined by merchant to security code mismatch

❌

❌

IR151

Transaction not allowed as per a validation rule

❌

❌

IR152

Processing gateway full: poll again later

❌

❌

IR153

Authorization life cycle unacceptable

❌

❌

IR154

Authorization life cycled expired

❌

❌

IR155

Card authentication failed

❌

❌

IR156

Fraudulent transaction prior to embossed valid date

❌

❌

IR157

Credit not received

❌

❌

IR158

Allowable PAN entries warning -- approved

❌

❌

IR159

Transaction approved with card overdraft protection

❌

❌

IR160

Security code is invalid

❌

❌

IR161

Internal transaction processing error

❌

❌

IR162

Check not acceptable for cash

❌

❌

IR163

Check not acceptable

❌

❌

IR164

Check deposit limit exceeded

❌

❌

IR165

Cash back limit exceeded

❌

❌

IR166

Check amount does not match courtesy amount

❌

❌

IR167

PIN not selected for card

❌

❌

IR168

PIN already selected for card

❌

❌

IR169

Unmatched voucher information

❌

❌

IR170

Card number entered too many times

✅

❌

IR171

Expiration date not valid for card

✅

❌

IR172

Card status is set to inactive

❌

❌

IR173

Expiration date mismatch: request a new card

✅

❌

IR174

Item suspected for stop pay

❌

❌

IR175

Account associated with card was closed

❌

❌

IR176

Account associated with card is ineligible for the transaction

❌

❌

IR177

Duplicate transaction

❌

❌

IR178

No account associated with card on file

❌

❌

IR179

Unable to locate card

❌

❌

IR180

Transaction denied

❌

❌

IR181

Transaction settled via ACH

❌

❌

IR182

Cross-reference card not found

❌

❌

IR183

Category limit exceeded

❌

❌

IR184

Transaction limit exceeded

❌

❌

IR185

Daily limit exceeded

❌

❌

IR186

Monthly limit exceeded

❌

❌

IR187

Invalid secret code

✅

❌

IR188

Pin key sync error

❌

❌

IR189

Bad security code

❌

❌

IR190

Transaction ordered to be stopped

❌

❌

IR191

Transaction authorization revoked

❌

❌

IR192

Stop reoccurring payments

❌

❌

IR193

Card lost: do not honor

❌

❌

IR194

Account associated with the card is closed

❌

❌

IR195

Account associated with the card is inactive

❌

❌

IR196

Card has unique conditions: do not honor

❌

❌

IR197

Purchase only approval for purchase with cash back transaction

❌

❌

IR198

Card does not have sufficient funds for the transaction fees (NSF Card)

❌

❌

IR199

Card chip failed during transaction

❌

❌

IR200

PIN compromised

✅

❌

IR201

MasterCard MoneySend Error: Incorrect Expiration date

❌

❌

IR202

MasterCard MoneySend Error: Card declined due to an unknown reason

❌

❌

IR203

MasterCard MoneySend Error: Card declined due to unsupported card type

❌

❌

IR204

MasterCard MoneySend Error: Card declined due to an unknown reason

❌

❌

IR205

MasterCard MoneySend Error: Card declined due to an unknown Reason

❌

❌

IR206

MasterCard MoneySend Error: Card transaction request has an unknown status

❌

❌

IR999

Unauthorized Chargeback return

✅

✅

Card processing presents both return and chargeback risk, which are different types of returns. An interchange return refers to a transaction being rejected by the network when it is unable to be processed for a variety of reasons. Meanwhile, chargebacks take place when a transaction occurs and settles, but a user disputes the transaction with the card issuer.

All IR failure codes are instant, except IR999. IR999 is considered an unauthorized chargeback. This means that the customer claims that they did not authorize this transaction and the user has up to 120 days to dispute interchange transactions with this failure code.

High chargeback rates can potentially lead to substantial fines by card networks, inclusion on the Terminated Merchant File for up to 5 years (a list of merchants deemed high-risk by card networks), and/or suspension from the card networks.

Chargebacks also present financial loss risk as any negative balance, resulting from chargebacks will be reconciled from the platform’s reserve account.

Disputing a Chargeback

An exception to the zero-liability policies would occur if there is evidence that the user was grossly negligent or if there was a substantial delay by the user in reporting the unauthorized transaction to its card issuance institution. Evaluating when this exception applies will be at the discretion of the card networks, platforms can submit evidence prior to evaluation of their case.

FedWire

Unlike ACH and Interchange, FedWires do not pose a financial risk to you as they are only outgoing, so there is no risk of returns and financial losses. However, it's important to note that FedWires are irreversible. So it is important to ensure that they were indeed originated by the sender and all the details submitted are accurate before originating them with us.

Originating Wires Safely

This can be done by features like enabling MFA right before originating a FedWire and showing the customer a summary page and urging them to check all the details before origination.

Failures

Though FedWires do not fail for lack of funds, they can still fail for the following reasons:

Code

Description

WR01

Return Per Customer Request - Returned per customer request.

WR02

Return Per Platform Request - Returned per platform request.

WR03

Account Closed/Frozen - The receiving account is closed/restricted/frozen, therefore the wire cannot be credited.

WR04

Compliance Concerns (Additional Documents Required) - We have identified red flags which require further investigation. The wire has been returned and we have requested additional documentation.

WR05

Country Not Allowed - The specified country is not allowed per the platform's controls and the wire has been returned.

WR06

Exceeds User's Limits - The transaction exceeds the user's daily, monthly, and/or annual limits.

WR07

Exceeds Platform's Limits - The transaction exceeds the platforms' daily, monthly, and/or annual limits.

WR08

Name Mismatch - The recipient's name in the wire instructions does not match the name on file with us.

WR09

Inactive Account - The receiving account is inactive, or unverified therefore the wire cannot be credited.

WR10

Invalid Account Number - The account number in the wire instructions does not match the account number on file with us.

WR11

Duplicate Transaction - Duplicate transaction, the duplicate has been returned.

WR12

Outside of Allowed Flow of Funds - The account number in the wire instructions is not a valid account number on file with us.

Recalling a Wire

SWIFT

SWIFT behaves similarly to FedWires. They do not pose a financial risk to you as they are only outgoing, so there is no risk of returns and financial losses. However, it's important to note that SWIFT Wires are irreversible. So it is important to ensure that they were indeed originated by the sender and all the details submitted are accurate before originating them with us.

Originating Wires Safely

This can be done by features like enabling MFA right before originating a SWIFT Wire and showing the customer a summary page and urging them to check all the details before origination.

Failures

Though SWIFT Wires do not fail for lack of funds, they can still fail for the following reasons:

Code

Description

R69

multiple errors: {e}

Failed to establish a new connection: Connection timed out

SSL: CERTIFICATE_VERIFY_FAILED

R83

transaction failure: {e}

Issue with Transfer API - Transfer failed to create

uncategorized error: {e}

Pending RouteFusion KYC Verification

Pending RouteFusion Beneficiary Verification

Unable to Retrieve Transfer

User Not Found

WR01

Return Per Customer Request - Returned per customer request.

WR02

Return Per Platform Request - Returned per platform request.

WR03

Account Closed/Frozen - The receiving account is closed/restricted/frozen, therefore the wire cannot be credited.

WR04

Compliance Concerns (Additional Documents Required) - Synapse has identified red flags which require further investigation. The wire has been returned and we have requested additional documentation.

missing information: {e}

The beneficiary country (FR) requires that the bank account be provided in IBAN format.

Issue with Beneficiary API - Missing Payload Information

WR05

Country Not Allowed - The specified country is not allowed per the platform's controls and the wire has been returned.

WR06

Exceeds User's Limits - The transaction exceeds the user's daily, monthly, and/or annual limits.

WR07

Exceeds Platform's Limits - The transaction exceeds the platforms' daily, monthly, and/or annual limits.

WR08

Name Mismatch - The recipient's name in the wire instructions does not match the name on file with Synapse for the account.

WR09

Inactive Account - The receiving account is inactive, or unverified therefore the wire cannot be credited.

WR10

Invalid Account Number - The account number in the wire instructions does not match the account number on file with Synapse.

WR11

Duplicate Transaction - Duplicate transaction, the duplicate has been returned.

WR12

Outside of Allowed Flow of Funds - The account number in the wire instructions is not a valid account number on file with Synapse.

WR13

Return per ODFI Request (Recall Received) - Returned per sending FI's request, a recall was received.

WR14

Detailed transaction reason not sufficient - The transaction details are not sufficient for Synapse to understand the purpose of the wire.

WR15

Beneficiary address invalid - The beneficiary’s address is either incomplete or invalid.

WR16

Beneficiary name invalid - The beneficiary’s name is either incomplete or invalid.

WR17

Below $1,000 USD minimum - Wire amount must equal at least $1,000 USD.

WR18

Verbal verification form required - The verbal verification form is missing from the transaction.

WR19

Verbal verification form invalid - The verbal verification form has at least one error that renders it invalid.

WR20

Correspondent bank details invalid - The name, address or ABA/SWIFT of the correspondent bank is invalid.

Recalling a Wire

RPPS

Under the hood, RPPS is just a private ACH rail. Since all RPPS transactions are push transactions, they do not pose a financial risk. Even though RPPS do not fail for lack of funds, they can still fail for the following reasons:

Code

Description

R02

Account Closed

R03

Account Number Invalid

R04

Wrong Account Number

R05

Pre-Notification Error

R06

Originator Requested Return

R07

Authorization Revoked

R08

Payment Stopped Settlement

R09

Uncollected Funds

R10

Advised Unauthorized

R12

Branch Sold

R14

Payee Deceased

R15

Beneficiary Deceased

R16

Account Frozen

R17

File Edit -Record Criteria

R18

Wrong Entry Date

R19

Account Error

R20

Non Transaction Account

R21

Wrong BillerId

R22

Account Number Mistake

R23

Payment refused by Biller

R24

Duplicate Entry

R25

Fair share Amount

R29

Advised Unauthorized

R31

Permissible Return Entry

R42

Routing Number Error / Check Digit Error

R43

DFI account Number

R61

Misrouted Return

R62

Trace Number Error

R63

Dollar Amount Mismatch

R64

Individual Identification

R65

Invalid Transaction Code

R66

Invalid Company Identification

R67

Duplicate Return

R68

Untimely Return

R69

Multiple Errors

R70

Permissible Return Entry Not Accepted

R71

Misrouted Dishonored Return

R72

Untimely Dishonored Timely

R73

Timely Original Return

R74

Corrected Return

R80

Cross Border Payment Coding Error

R81

Non-Cross Border Participant

R82

Foreigner Receiver ID

R83

Unable to Settle

R84

Not Processed

R85

Fair Share Rebate

Checks

Like RPPS, checks are another way for your users to pay bills. Since they are credit only, they do not pose a financial risk. Even though checks do not fail for lack of funds, they can still fail for the following reasons:

Code

Description

CHR03

Stop payment – a stop payment has been placed on the item

CHR15

Unable to process

Stopping Check Payment

RDC

Like ACH, RDC is a one-way messaging system for payment processing. Meaning, that a transaction in RDC is assumed to have succeeded unless the receiving bank sends a failure notice.

Based on the reason for failure, the receiving bank can have up to 60 days to fail a transaction. This means, if you released an RDC credit in 3 business days to your user, you might still receive a failure note (also known as a Return) up to 57 days later. Here are the most common return reasons:

Code

Description

CHR01

NSF – customer does not have sufficient funds to cover the item

CHR02

UCF – uncollected funds hold

CHR03

Stop payment – a stop payment has been placed on the item

CHR04

Closed account – the item’s account has been closed

CHR05

UTLA – unable to locate account

CHR06

Frozen/blocked account – account has restrictions placed by customer or bank

CHR07

Stale dated – the date on the item is more than 6 months old

CHR08

Post dated – the date on the item is in the future

CHR09

Endorsement missing

CHR10

Endorsement irregular

CHR11

Signature(s) missing

CHR12

Signature(s) irregular, suspected forgery

CHR13

Non-cash item (non negotiable)

CHR14

Altered/fictitious item/Suspected counterfeit/Counterfeit

CHR15

Unable to process

CHR16

Items exceeds stated max value

CHR17

Not Authorized (Includes Drafts/Remotely Created Checks) – Unauthorized item such as a draft/RCC

CHR18

Branch/account sold (Wrong Bank)

CHR19

Refer to Maker

CHR20

Item cannot be re-presented (exceeds allowable number of presentments

CHR21

Unusable image

CHR22

Cannot determine amount

CHR23

Refer to image – return reason is contained within the image of the item

CHR24

Duplicate Presentment (Supporting documentation shall be readily available)

CHR25

Forgery – an affidavit shall be available upon request

CHR26

Warranty breach (includes Rule 8 & 9 claims)

CHR27

RCC warranty breach

CHR28

Forged and counterfeit warranty breach (Rule 9)

CHR29

Retired/ineligible routing number

CHR30

Image Missing

CHR31

Ineligible Item

CHR32

Item cannot be re-presented (exceeds number of allowable times for presentment)

CHR33

unusable image

CHR34

Image fails security check

CHR35

Duplicate presentment

CHR36

Does not conform with ANS X9.100-181

CHR37

Does not conform to the Industry’s Universal Companion Document

CHR38

Warranty Breach (includes Rule 8 & Rule 9 claims)

CHR39

RCC Warranty Breach (Rule 8)

CHR40

Forged and Counterfeit Warranty Breach

CHR41

Retired/Ineligible Routing Number

These returns are broken into three categories:

Unauthorized

These returns occur when the account holder of the bank account that the check belongs to informs their bank (receiving bank) that the transaction was not authorized by them or points out some other fraudulent issues with the check. RDC guidelines allow account holders to take up to 60 days to report checks as unauthorized. Return codes CHR03, CHR14, CHR17, CHR24, CHR25, and CHR26 signify unauthorized returns.

Administrative

Administrative returns indicate that a transaction was returned due to administrative or account data errors. They occur within 3 business days of settlement. Return codes CHR02, CHR03, and CHR04 signify administrative returns.

Others

The rest of the returns are other types of returns allowed by the RDC network. Like Administrative, these returns also occur within 3 business days of settlement.

RDC Forgery Fraud

If an RDC is returned due to forgery, there is no time limit against its return.

Credit Extension

For that reason, it's important for you to have a credit underwriting strategy. A good credit underwriting strategy should try to assess two things:

  1. Propensity to Pay

  2. Willingness to Pay

Propensity to Pay

Willingness to Pay

A good way to understand a user's willingness to pay is to measure the user's engagement with your platform. If a user finds value in your products and services, they will be more inclined to pay back the obligations through your platform over others.

Based on the above definitions, here are some examples of how you might choose to design your Credit Risk Policy, based on your overall risk appetite:

Risk Appetite

Policy

Conservative

We will not provide any unsecured credit products. Customers will be required to keep funds in a loan reserve which will equal to total credit issued to them.

Moderate

Policy Propensity to Pay

Willingness to Pay

We will only solicit the user for a credit account after they have been using the platform for over 6 months.

Ladder Up

The users that do not fit the above parameters will only be offered secured loans and later laddered up into an unsecured loan.

Aggressive

We will provide $100 line of credits to customers to measure their willingness to pay and assume this as the cost of customer acquisition. Once history is built, the user will be able to request higher amount of loans.

Provisional Credits

Regulatory Risk

Regulatory Risk can lead to regulatory fines. Which impacts your operating capital and in extreme cases can cause suspension of your program altogether.

Consumer Regulations

Transaction Monitoring

Synapse is responsible for transaction monitoring as part of our relationship with our partner banks. We work with our financial institutions behind the scenes to investigate and report activity as we monitor transactions across your platform. Due to the confidential nature of these reports, we are unable to share if or when we recommend a transaction or a user to be reported to FinCEN and/or other government agencies.

It is important to understand that Synapse's transaction monitoring and reporting structure does not absolve any obligations that you may have as a company independent of Synapse. For example, if your business is registered with FinCEN, and therefore has its own screening and reporting obligations, Synapse does not provide these controls as a service to you.

Credit Hub

Credit Hub is a platform that allows you to open various types of credit accounts for individuals or businesses via an API call.

Our mission is to ensure that everyone has access to high quality financial services. So it doesn't matter if your customers are underbanked, recently immigrated, small/medium/large business owners. With Credit Hub, you can onboard customers from all walks of life.

Account Types

The different accounts we offer have different characteristics, regulatory restrictions, among other distinctions. This variety allows us to offer the best solution for each use case. Please refer to the tables below for an idea of the distinctions between our accounts.

Account Type

Account Code

Description

Open

OPEN

Open Credit Accounts have flexible credit limits which are tied to the funds the user is holding in their deposit account. This account type is ideal for building a neo banking platform on a credit BIN for higher interchange or for charge cards.

Revolving

REVOLVING

The credit limit is determined at the time the credit account is created and is backed by funds in the user’s reserve account for secured credit cards, or not, in case of unsecured credit cards.

One-Time

ONE-TIME

This Credit account is meant for one time use only. Ideal for POS financing or cash advance products.

Cash Advance

REPAY-US

This account is meant for payroll-based cash advances. Ideal for overdraft protection type products built on top of Deposit Hub or external bank accounts.

Key Use Cases

Credit Hub can be used for pretty much any application that requires an embedded credit account. But we have seen our customers building the following use cases most frequently with this offering:

Use Case

Description

Buy‎‎ Now Pay Later

Issue one time loans to your customers to enable online or in-person shopping. Either disburse the loan via a card issued by you or in an external account via ACH or Push to Card.

Spend Card

Enable customers to enjoy flexible credit limits based on the cash at hand, spend on a credit BIN for cashback rewards, or build credit.

Credit Builder

Issue one-time or revolving loans to enable your customers to build credit.

Credit Card

Issue a secured or unsecured revolving loan and a card to unlock a traditional credit card experience for your customers.

Minimum KYC Requirements

Please note, KYC requirements will differ between individuals and business users, and might further vary depending on the use case and the nature of the user. Here are minimum KYC requirements by account type and user type:

Account Type

Individuals

Businesses

OPEN

Name, Date of Birth, Address, Email, Phone, and SSN.

On Business:

Business Name, Address, Entity Formation Date, Entity Type (LLC, Corp, etc), Entity Scope (Industry), Email, Phone Number of the Business, and TIN.

On Beneficial Owners:

Name, Date of Birth, Address, Email, Phone, and SSN.

REVOLVING

Name, Date of Birth, Address, Email, Phone, and SSN.

On Business:

Business Name, Address, Entity Formation Date, Entity Type (LLC, Corp, etc), Entity Scope (Industry), Email, Phone Number of the Business, and TIN.

On Beneficial Owners:

Name, Date of Birth, Address, Email, Phone, and SSN.

ONE-TIME

Name, Date of Birth, Address, Email, Phone, and SSN.

On Business:

Business Name, Address, Entity Formation Date, Entity Type (LLC, Corp, etc), Entity Scope (Industry), Email, Phone Number of the Business, and TIN.

On Beneficial Owners:

Name, Date of Birth, Address, Email, Phone, and SSN.

REPAY-US

Name, Date of Birth, Address, Email, Phone, and SSN.

On Business:

Business Name, Address, Entity Formation Date, Entity Type (LLC, Corp, etc), Entity Scope (Industry), Email, Phone Number of the Business, and TIN.

On Beneficial Owners:

Name, Date of Birth, Address, Email, Phone, and SSN.

Credit Terms

Synapse's lending entity Synapse Credit LLC will be the lender for the loans. This means it will be underwriting all the lines and serving the loans to the end users or businesses.

To reduce the risk of losses for our lending entity, either the end user will be required to put 1:1 collateral in a reserve account (in case of secured loan products) or you (the platform) will be required to do so while acting as a guarantor of the loans. So in instances where loans default, the reserves will be tapped for covering the losses.

Credit Reporting

You may also choose to enable credit reporting with us. Currently, if enabled, all credit accounts of your customers will be reported by the 10th of each month for the previous calendar month. Since Synapse's lending entity Synapse Credit LLC is the lender of record, the credit report may show only Synapse Credit LLC or both Synapse Credit LLC and your name on the credit file, depending on the configuration of your program with Synapse.

Credit Decisioning

As a part of any good responsible credit model, a robust credit decisioning policy is a core part of the program. When building credit policies, please consider the following decisioning constructs:

Prerequisites

You can filter which of your users has the option to apply for a loan based on various decisioning criteria, we refer to these as prerequisites. Common examples are that the user has been in the platform ecosystem for over six months or that they are part of the platform's premium service.

Although you can propose prerequisites, they will all have to be communicated in detail and be approved by us as the lender of record. Furthermore, if you wish to make a change to your prerequisites, the change will have to be first explained in detail and approved by Synapse for the same reasons.

Base Decisioning

At a basic level a loan can be rejected based on the following criteria:

  • Lending is not currently available for the user's CIP tag or user type.

  • The requested amount is above the defined maximum per user loan size of your platform.

  • The loan will put you over the limits of the amount (in dollar value) of loans you are allowed to issue.

We handle basic decisioning on our end.

Custom Rejections

Outside of Prerequisites and Basic Decisioning, some use cases will also require the option to reject a loan after the application process has started. For example, you may receive the user's income level and decide that it is too low. Because this information might be captured after the loan application process started, it cannot reasonably be considered a prerequisite.

Disparate Impact

As a part of the Fair Lending Act, we are responsible for ensuring that all applicants are being impacted (not just treated) equally and not being discriminated against. As a part of that commitment, we will also be doing regular audits in our system to check for any direct or indirect discriminatory decisioning.

Interest Logistics

You can supply the APR on a loan at the time of creating a credit account for the end user. At loan creation, you will have the option to set the APR from 0% up to your maximum APR. The maximum rate that can be charged on a loan varies by state.

Interest Charges

Since you are not the lender of record, you cannot directly benefit from the interest charged on the loan. For that reason, interest payments go from the user's credit account to Synapse Credit LLC's account.

Earned Interest

In some cases, user accounts are eligible to receive payments for deposits kept with us. Here is how those logistics work:

Interest is accrued daily on active credit nodes and impacts the balance.

The interest transaction will be coming from the loan node and go to a Synapse Credit LLC node, with from.meta.type:LOAN_INTEREST and extra.note:LOAN_INTEREST.

How Interest Accrues for One-Time Loans

Interest will be calculated and defined at the moment of the user’s loan approval and will accrue and compound daily against the outstanding balance based on the APR set for the loan node.

How Interest Accrues for Revolving and Open Loans

Like standard credit cards, revolving lines do not charge interest if the total statement balance is paid on or before the statement payment due date (e.g. before the end of the month following the statement cycle). The statement cycle starts on the first day of the month and ends on the last day of the month.

The statement balance is the balance at the end of the statement cycle (i.e. the balance on the last day of the month). Interest will start to accrue for the statement balance at the beginning of the next statement cycle (i.e. the next day, which will be the first day of the month). Interest will not be charged if the statement balance is paid on the statement payment due date, but the user will owe any accrued interest for any balance remaining after the statement payment due date.

The next statement balance will include any withdrawals and payments made in that month, as well as any unpaid balance from previous months plus the unpaid accrued interest for that month. Once the statement cycle ends, the new statement balance is defined and this amount will be owed. This means that if the new statement balance is paid in full by the statement payment due date, no interest will be owed.

For example, if at the close of a statement cycle, the outstanding balance is -$500.

  • This means that if the statement is delivered on the 7th of the next month, the user would be responsible for paying the -$500 statement balance in full by the end of the month to avoid paying interest charges on that balance.

  • Please keep in mind that interest will start to accrue on the -$500 statement balance immediately. If payment is made after the grace period (i.e. at or past the end of the month), the user will have to pay all of the accrued interest for the statement balance from the beginning of the current month.

  • If the user makes a partial payment before the statement payment due date (i.e. before month-end), the payment will count towards the statement balance due and the user will be responsible for paying the interest accrued on the remaining amount.

Interest for Cash Advances

Our Advance product allows you to issue interest-free, fee-free, short-term one-time advances to users. Our current implementation only allows for 0% APR advances with no fees per provided advance due to regulatory constraints on payroll cash advances.

Delinquency and Account Closures

If a user is delinquent on one or more loan payments, interest will continue to accrue and compound daily.

Interest will continue to accrue until the loan reaches the cap amount set for the loan. Once interest charges reach the cap amount, interest will stop accruing. Currently, if a credit account has had no positive payments for 90 days or more, we consider the credit account to be in delinquent status.

Termination Logistics

Notice to Users

Open and Revolving Account Minimum Payment Support

Synapse has added Minimum Payment support to give Platforms the ability to offer relief to consumers that are having difficulty paying their entire balance each month. The Synapse minimum payment feature is in compliance with CFPB guidelines. The minimum payment is configurable on the Platform level via the Synapse Spec Sheet. Once configured, the minimum payment is calculated and added to the consumer's monthly statement. The statement also includes the CFPB minimum payment warning, which calculates the amount the consumer will pay in interest over time if they make only the minimum payment. The promissory note for revolving and open loans contains a new paragraph governing minimum payments.

Getting Started with Credit Hub

To spin up a Credit Hub for a user, here are the steps you can follow:

The first step is to create a user account and supply all of their KYC. Once the user account has been created, grab the refresh_token from the response which will be needed to issue an OAuth key for the user.

To avoid 2FA, please use the fingerprint value that you used while creating the user account. Once the OAuth key is issued, grab oauth_key which will be needed to launch credit hub.

You have an ACH-US node linked to the user profile. This means that the user can repay balances on their credit account via an external bank account or if funds are available on the credit account, the user will be able to cash out into the external bank account.

Launch Credit Hub

Before Creation

Before launching a Credit Hub, please ensure one of the following has happened:

Creation Flow

That's it. You've successfully created a credit account for your user.

Enable Some Features

Now let's enable some features on this credit account. Please note, these features are available for all credit accounts except Cash Advances.

Now your user has a fully functioning Credit Hub! We would also recommend trying the following:

Deposit Hub

Deposit Hub is a platform that allows you to open deposit accounts for individuals or businesses via an API call.

Our mission is to ensure that everyone has access to high quality financial services. So it doesn't matter if your customers are underbanked, recently immigrated, small/medium/large business owners. With Deposit Hub, you can onboard customers from all walks of life.

Account Types

The different deposit accounts we offer have different characteristics, KYC requirements, regulatory restrictions, among other distinctions. This variety allows us to offer the best solution for each use case. Please refer to the tables below for an idea of the distinctions between our deposit accounts.

Account Type

Account Code

BIN Type

Description

Interest Carrying Deposit Account

IC-DEPOSIT-US

Debit

A bank account that carries interest. This account is ideal for creating a debit card product.

FBO Sub Account

SUBACCOUNT-US

Debit

A Sub Account issued to the end user inside your FBO Account. This account is ideal for creating a low KYC automated savings product.

Custody Account

CUSTODY-US

Pre-Paid

An alternative to the deposit account, where the account is held under a trust vs a bank allowing a lower KYC wallet solution. Ideal for creating Fiat Wallet products.

Clearing Account

CLEARING-US

Credit

Non-FDIC insured account created for payment processing purposes. Ideal for creating merchant processing or payment processing solutions.

Key Use Cases

Deposit Hub can be used for pretty much any application that requires an embedded deposit account. But we have seen our customers building the following use cases most frequently with this offering:

Use Case

Description

Digital Wallet

A digital wallet enables your customers to store funds with you and use our full stack payment features to enable access to funds.

Merchant Processing

Use our deposit and payments stack to create fully white-labeled payment processing solutions that include merchant processing accounts for your customers.

Savings Account

Create interest-bearing savings accounts to enable healthier financial habits for your customers.

Debit Card

Open deposit accounts, issue cards, and account numbers to create a neo-banking platform for your customers.

Spend Card

Open a custody account, issue a card, use instant auth to fund the card at the time of transaction.

Minimum KYC Requirements

KYC will vary if the account is opened for an individual or a business and also by the type of Deposit account being opened. Here are minimum KYC requirements by account type and user type:

Account Type

Individuals

Businesses

IC-DEPOSIT-US

Name, Date of Birth, Address, Email, Phone, and SSN.

On Business:

Business Name, Address, Entity Formation Date, Entity Type (LLC, Corp, etc), Entity Scope (Industry), Email, Phone Number of the Business, TIN, EIN Verification Letter issued by IRS, Company Bylaws and Articles of Incorporation.

On Beneficial Owners:

Name, Date of Birth, Address, Email, Phone, and SSN.

SUBACCOUNT-US

Name, Date of Birth, Address, Email, and Phone.

On Business:

Business Name, Address, Entity Formation Date, Entity Type (LLC, Corp, etc), Entity Scope (Industry), Email and Phone Number of the Business.

On Beneficial Owners:

Name, Date of Birth, Address, Email, and Phone.

CUSTODY-US

Name, Date of Birth, Address, Email, Phone, and SSN.

On Business:

Business Name, Address, Entity Formation Date, Entity Type (LLC, Corp, etc), Entity Scope (Industry), Email, Phone Number of the Business, and TIN.

On Beneficial Owners:

Name, Date of Birth, Address, Email, Phone, and SSN.

CLEARING-US

Name, Date of Birth, Address, Email, and Phone.

On Business:

Business Name, Address, Entity Formation Date, Entity Type (LLC, Corp, etc), Entity Scope (Industry), Email and Phone Number of the Business.

On Beneficial Owners:

Name, Date of Birth, Address, Email, and Phone.

Negative Balance Reconciliation

We reconcile negative balances for deposit accounts in two ways:

  1. Instantly: If an account reaches a negative balance of -$300 or lower, the user account will be closed and the negative balance will be reconciled immediately.

  2. In 30 days: For any account with more than -$300 in balance, we reconcile negative balances when accounts remain negative with no settled transaction with a created on date within the last 30 days. Post reconciliation, the user account will be closed.

For example: If a user has a negative balance of -$250 and they pay +$150 toward that negative balance before the 30-day period is up, we will reset the 30-day countdown based on the created on date of that successful transaction. If another 30 days pass and there is no successful activity, we will try to reconcile the remaining negative balance of -$100 from the user's other accounts, and if there are no other accounts or there are insufficient funds, we will reconcile the -$100 from your reserve funds.

Once the User account is closed, it will be closed for permission_code:NEGATIVE_BALANCEin this state, the user will not be allowed to send new payments, but the user will still be allowed to create Me2Me transfers going into the account that was closed due to negative balance. Once that transaction settles, the user account will be reopened again, since the user would've effectively reconciled their negative balance.

Account Closure with Balance

Check Payout

If the account balance is greater than $0 we will send a check with the remaining balance to the mailing address or base doc address we have on file for the user.

Returns of Final Balance Payments

If the final balance payment returns to us (e.g. the account was closed, the address is out-of-date or "undeliverable", etc.), then the funds will stay in the closed account until a new payment to an updated account is initiated by you.

Earned Interest

In some cases, user accounts are eligible to receive payments for deposits kept with us. Here is how those logistics work:

Interest Accrual

Interest is accrued daily and disbursed monthly to accounts that provide interest. This is done automatically (on the 2nd business day of the following month) and not initiated by the platform. We will also track fractional interest to distribute when the fractional interest reaches an integer amount.

The interest transaction will be coming from node type EXTERNAL-US . These transactions will have from.meta.type value as INTEREST.

1099-INT Tax Forms

Earned Rebates

In some cases, you are eligible to receive payments for deposits kept with us. Here is how those logistics work:

Rebate Accrual

Rebate is accrued daily and disbursed monthly to your platform deposit account. This is done automatically on the 15th of the following month. We will also track fractional interest to distribute when the fractional interest reaches an integer amount.

The interest transaction will be coming from node type EXTERNAL-US . These transactions will have from.meta.type value as REBATE.

1099-INT Tax Forms

Multi Bank

Our vision for Deposit Hub is to empower FinTech companies to be live with multiple banks at the same time. Our Multi Bank feature is our first step in that direction.

Here is a good visualization of how Multi-Bank Functions:

If enabled, Multi Bank automatically sweeps and stores customer deposits at 2-3 banks, while still giving the user access to all the funds they have in their deposit account. Sweeping funds over $250K per bank extends the FDIC coverage from $250K to $500-750K for your customers.

Since this feature is enabled behind the scenes, no API updates are needed on your side. You will however need to update the following:

  • Disclosures in your product collateral for the increased FDIC Coverage and also to add the partner banks participating in the Multi Bank program.

  • Put in opt-in language for your customers so that they can subscribe to the program and agree to us sweeping their deposits.

Getting Started with Deposit Hub

To spin up a Deposit Hub for a user, here are the steps you can follow:

The first step is to create a user account and supply all of their KYC. Once the user account has been created, grab the refresh_token from the response which is needed to issue an OAuth key for the user.

To avoid 2FA, please use the fingerprint value that you used while creating the user account. Once the OAuth key is issued, grab oauth_key which will be needed to launch deposit hub.

First please preview the deposit agreement to the user, once they agree, create the deposit account.

That's it. You've successfully created a deposit account for your user.

Enable Some Features

Now let's enable some features on this deposit account.

Now you have an ACH-US node linked under the user profile. This means the user can fund their deposit account via an external bank account or if funds are available on the deposit account, the user will be able to cash out into the external bank account.

Now the user's deposit account will also have an account and routing number associated with it. This can be used for direct deposit (payroll, Paypal, Venmo, etc.) or direct debit (billpay, Venmo, Paypal, etc.).

Now your user has a fully functioning Deposit Hub! We would also recommend trying the following:

OAuth

User Authentication with OAuth

Issuing OAuth Key

OAuth Key Expiration Times

OAuth keys currently expire after 2 hours. After an OAuth key expires, you can use a refresh token to generate a new OAuth Key. Please remember to take OAuth key expiration into account when building out your application.

Retrieving OAuth Key for a User

Fingerprint Cap

Please note that you can only store up-to 110 valid fingerprints per user and the fingerprints follow a first in first out logic (FIFO).

This architectural decision is made to keep a limited number of fingerprints registered with a user profile to reduce security risks. A first in first out logic is chosen so that the oldest fingerprints are cycled out first.

New Devices

If you OAuth with a new device (i.e. a new fingerprint), you will need to Register New Fingerprint.

Device Fingerprint Authentication

Along with OAuth, we also use device fingerprints for authentication. Fingerprints are used to identify the device that is trying to access a user's information. You need to supply fingerprints when you create a user. The fingerprint supplied during the POST user creation is the registered fingerprint associated with the user.

If the user supplies a non-verified fingerprint during login, the user will be directed to the 2FA flow. We return the linked phone numbers in the API call response with key phone_numbers. You can let the user select the phone number from that list and then make the API call again by specifying the phone_number you want the 2FA to be sent. This will trigger the 2FA protocol and a PIN will be sent to the selected phone number. The user will be able to verify the device via this API call itself. You can supply validation_pin under the user object and the verification will be triggered.

Don't Want to Trigger 2FA?

We strongly recommend using 2FA or some form of MFA within your authentication process.

If you do not want to use our 2FA, store the fingerprint used when creating the user and supply the fingerprint when performing actions with the user. This way the system will not detect a new device and no 2FAs will be triggered.

Alternatively, you can also pass a hashed version of your user_pk+client_id+client_secret. That way the value is still somewhat secret and you won't need to store a different fingerprint for each user.

Getting Started

Setting up Your Sandbox

That's it! Now you have everything you need to be able to start playing with Synapse's APIs.

Start Building

We usually recommend downloading Postman and getting a feel for our APIs before writing code. The following steps will make this process easier.

Get Our Postman Collection

If you've downloaded our Postman collection, you should be seeing our APIs on the left and the appropriate environment variables on the right.

Add Client Keys

The next step is to add your own client keys into the environment variables.

Create User

The next step is to create a user account and supply all of their KYC.

If you are curious about the user profile and want to see more details, just click on the user, the dashboard will show you all the information you just added to the user profile.

OAuth User

Same as before, we will automatically set the appropriate OAuth key for you.

Also, when you Sign in as a User on the dashboard, the same operation is happening behind the scenes.

You can Sign In by supplying the fingerprint you created the user account with:

Now, you can perform all the actions on behalf of the user from the dashboard, like how you can with the APIs.

Launch a Hub

Now if you'll go back to the dashboard, you will see the Deposit Node under the user profile.

Congratulations! 🎊 🎈 🎉 You've successfully created a deposit account for your user.

Enable Some Features

Now let's enable some features on this deposit account.

Enable External ACH

In this case, our user would like to enable ACH Credits and Debits via an External Account. So let's link an external ACH account:

Now let's verify the ACH account via Micro-deposits:

Now if you go to the dashboard, you will see an ACH-US node linked under the user profile with Credit and Debit permissions.

Enable Direct Debit and Credit

Our user would also like to issue an account and routing number that they can give to their payroll provider and apps like Venmo and PayPal. So let's issue an account number for them:

Now if you go to the dashboard, Sign In as User, and click on the Deposit Account, you will see the account and routing numbers issued on the account:

Issue a Card

Our user would also like to issue a card so they can use this account for shopping and other expenses. So let's issue one for them:

Now if you go to the dashboard, Sign In as User, and click on the Deposit Account, you will see the card number issued on the account:

Now your user has a fully functioning Deposit Hub!! 😀

Subscribe to Updates

Let's get our Webhook URL:

Now let's create a Subscription:

You will be able to see this subscription created on the dashboard as well:

To test this, let's issue another account number for our user:

Since we had subscribed to SUBNETS|POST updates, you will see a webhook set to your Webhook Site link:

You can view the logs on the dashboard as well:

Create Transactions

As our final step of this tutorial, let's fund our user's deposit account so that they can go out and spend:

If you'll go to the dashboard, you will see the transaction created:

In a few minutes, the transaction will move to settled:

Now our user has funds in their account to spend:

Next Steps

Payment Accounts

To provide the right solution for your use case, we offer a variety of payment accounts. Please refer to this section for more information on our payment solutions and specifics for each payment type. These are the payment accounts we currently support:

ACH (ACH-US)

We offer Same-Day and Standard (Next-Day) ACH transfers for both ACH pushes (credits) and ACH pulls (debits).

Cutoff Times

ACH transfers are batch-processed by the Federal Reserve, which requires institutions to adhere to cutoff times for the transaction batches.

We will require a short additional time to process ACH transactions on our end before transmitting the transaction data to the Federal Reserve. Our cutoff times are:

Initiating Transactions

We are assuming that:

If that is true, then here is how you can initiate ACH:

Link Account

Create Transaction

Interchange (INTERCHANGE-US)

Don't Store or Transmit Card Numbers

We currently support Pulls and Pushes for Credit, Debit and Prepaid cards issued by Visa, Mastercard, and some smaller networks such as STAR, Pulse, Accel, and NYCE. Please note, that not all issuers enable push to card on their side. So pushing funds to those cards will fail.

Cutoff Times

Interchange transfers do not have cutoff times because they are processed near real-time and can sometimes take up to 30 minutes to settle.

Initiating Transactions

We are assuming that:

If that is true, then here is how you can initiate Interchange Transactions:

Link Account

Create Transaction

Fedwire (WIRE-US)

Cutoff Times

Wire transfers have cutoff times because the bank's have account reconciliation obligations with the Fed. Our cutoff times are:

Initiating Transactions

We are assuming that:

If that is true, then here is how you can initiate a Fedwire:

Link Account

Create Transaction

SWIFT (WIRE-INT)

Cutoff Times

Wire transfers have cutoff times because the bank's have account reconciliation obligations with SWIFT. Our cutoff times are:

Initiating Transactions

We are assuming that:

If that is true, then here is how you can initiate a SWIFT transfer:

Link Account

Create Transaction

Note on Currency Conversions

We send and receive wires in USD. Any currency conversions will be performed either by the sending financial institution (for incoming wires) or the receiving financial institution (for outgoing wires) rather than by Synapse directly. Exchange rates can differ by the currency being converted, the entity performing the currency conversion, and even by the associated correspondent bank. Please note that the exchange rates provided to you by the entity performing the conversion will likely differ from rates you may see online (e.g. from Google search results). The entity should provide proper disclosures with both the amount in USD and the amount in the foreign currency.

RPPS

Cutoff Times

Wire transfers have cutoff times because the bank's have account reconciliation obligations with RPPS. Our cutoff times are:

Initiating Transactions

We are assuming that:

If that is true, then here is how you can initiate a RPPS transfer:

Locate Biller ID

Link Account

Create Transaction

Checks (CHECK-US)

Cutoff Times

Check transfers have cutoff times because all check payments are printed and batched together once a day. Our cutoff times are:

Initiating Transactions

We are assuming that:

If that is true, then here is how you can initiate a Check transfer:

Link Account

Create Transaction

RDC

Cutoff Times

RDC transfers are batch-processed by the Federal Reserve, which requires institutions to adhere to cutoff times for the transaction batches.

We will require a short additional time to process RDC transactions on our end before transmitting the transaction data to the Federal Reserve. Our cutoff times are:

Initiating Transactions

We are assuming that:

If that is true, then here is how you can initiate a RDC transfer:

Create Transaction

Note on Image Quality

Checks are verified by our computer vision modules and for that reason it's very important to ensure that a clean image of the check is submitted to our system. The image should have all 4 corners of the check visible, without additional background and everything should be well lit and clearly visible.

The RDC image processing system does use advanced processing techniques such as image orientation, cropping and noise reduction to help eliminate manual reviews of check images and allow faster processing overall.

Internal Transactions

Cutoff Times

Internal transfers do not have cutoff times because they are near real-time and can sometimes take up to 30 minutes to settle.

Initiating Transactions

We are assuming that:

  1. They are trying to move money between two Synapse managed nodes.

If that is true, then here is how you can initiate Internal Transactions:

Create Transaction

Create User
mobile wallet
shipped
virtual terminal

Virtual Doc values to include meta.country_code, .

Virtual Doc values must include meta.country_code, .

Physical Doc values must include meta.state_code, meta.country_code and meta.id_number as well, .

Virtual Doc values must include meta.country_code, .

Physical Doc values must include meta.state_code, meta.country_code and meta.id_number as well, .

Virtual Doc values must include meta.country_code, .

Physical Doc values must include meta.state_code, meta.country_code and meta.id_number as well, .

Virtual Doc values must include meta.country_code, .

Physical Doc values must include meta.state_code, meta.country_code and meta.id_number as well, .

Virtual Doc values must include meta.country_code, .

Physical Doc values must include meta.state_code, meta.country_code and meta.id_number as well, .

Virtual Doc values must include meta.country_code, .

Physical Doc values must include meta.state_code, meta.country_code and meta.id_number as well, .

Financial Risk exists when a user spends funds in their account without intending to repay them or uses the "float" (the time it takes for transactions to process and settle) to overspend. In the case of , this can occur by taking credit from you, but then defaulting on the repayment obligation. While in the case of , it can occur by funding their account via one of the and spending the funds knowing that that original transaction will return, thus overdrawing their balance and leaving the platform with limited options to recoup funds. Other than and , financial risk is primarily created by providing customers access to . Since payments can return up to 60 days after a credit has been applied to a customer's account, payment processing exposes you to financial loss risk.

Based on the above statement, a valid conclusion is that most of your financial risk can be adjusted by adjusting access to . With that in mind, here are some examples of how you might choose to design your Financial Risk Policy, based on your overall risk appetite:

We currently provide a solution for ID Score. Go to Product Guide to learn more.

Card returns don’t create direct financial risk to platforms because transactions are immediately rejected and funds are sent back to the user in real time. Nevertheless, it's good practice for you to build logic to keep track of card returns, we have found that successive returns can be a red flag for future chargebacks and/or fraudulent activity. TRAN|PATCH will notify when returns occur.

Regulation E sets forth time limitations for disputed transaction investigations. Financial institutions may take up to 120 days to investigate the reported dispute/error. During the beginning of this period, you have the option to submit evidence against the dispute via the API call. Common examples of evidence are email communication & interactions, shipping verification, phone call transcripts, live chat transcripts, social media interactions, and similar. We will submit all evidence to the network for investigation.

Due to the zero-liability policies of card networks (e.g. , ), if the transaction is proven to be unauthorized you will have to pay the amount of the chargeback (i.e. the funds the platform received plus the interchange fee of the original transaction), regardless of whether they believe the transaction is fraudulent or not. The end user will receive credit for the transaction.

Recalling a wire is a process that requires us to contact the receiving bank and requesting them to reverse the wire back to us. This process is manual and the likelihood of success is low. It is also important to understand that financial institutions have no requirement to respond to our recalls. For that reason, we recommend . But in rare situations that wires still need to be recalled, please create a ticket requesting a wire recall by emailing .

Recalling a wire is a process that requires us to contact the receiving bank and requesting them to reverse the wire back to us. This process is manual and the likelihood of success is low. It is also important to understand that financial institutions have no requirement to respond to our recalls. For that reason, we recommend . But in rare situations that wires still need to be recalled, please create a ticket requesting a wire recall by emailing .

If a check payment has not SETTLED yet (refer to ), the user can still choose to stop the check payment using API call.

Even though we are the lender of record on all loans issued through , you are still the guarantor of all credits extended through your platform (see to learn more).

A good way to understand a user's propensity to pay is by getting a holistic understanding of the user's debt-to-income ratio. This means understanding all the income sources and all the debt obligations the user has on a regular basis. There are quite a few tools in the market for this like traditional FICO or Assets and Liability features are a good way to measure a user's debt-to-income ratio.

We will use Assets and Liability features to measure a customer's propensity to pay. All users will need to have a debt-to-income ratio of lower than 0.5 to be approved for the loan. All loans provided will have an installment less than or equal to half of the user's monthly disposable income (income - existing debts).

If you are going to issue Debit or Credit Cards to your users, then you also need to consider the financial risk of issuing provisional credits. Since you will lose most disputes, these credits are a source of financial losses for all FinTech platforms providing card products. Most card transactions that are , are entitled to a provisional credit.

To learn more about Card Disputes and Provisional Credits, See .

As a part of building a financial product, you are also expected to comply with , , , and any other applicable financial regulations. As we build your program, we also provide specific guidance on how to comply with those regulations.

Please note that the above requirements assume that (which includes real-time SSN verification) is being used for Individuals and Beneficial Owners. If not, US Government Photo ID (GOVT_ID,GOVT_ID_BACK) will also be required for all users and beneficial owners.

Please note, filtering the user before solicitation is considered a prerequisite. If you are deciding to decline a loan after the loan application flow has begun, that requires booking an adverse action. Please see for more details.

The user does not have SEND-AND-RECEIVE permissions (which occurs when not all relevant KYC has been submitted or verified) or if the user is a match in one of our sanctions lists. Go to page to learn more.

For any loans that you reject, you will be required to book an adverse action in our system so that we have a record of this action. Please see for more details.

If a user is delinquent in making their loan payments, as described above, a transaction will be created from your reserve account to the user's credit account to zero out the balance. At that point, the node will be set to INACTIVE with ACCOUNT_CLOSED as the allowed code. To learn more about which values are allowed, go to .

Once a credit account is terminated, you would find a termination letter (also known as "Loan Termination Adverse Action Notice") in the response (within the info.agreements object in the response with type TERMINATION_LETTER). You are required to share it with the user via email as this is considered an Adverse Action. To learn more about potential agreement types, go to .

The next step will be to start performing actions on behalf of the user. To do that, you need to grab an token for the user.

To do that, usually, you make a API call and grab the refresh_token from the user profile or get the refresh token from the create user call (like above).

Linking an external ACH account is a good way to have a disbursement and repayment account ready before a loan is issued. You can also enable your users to link an or even just use for the same purpose.

If you wish to provide unsecured loans, please make sure your loan reserve account is funded for the portfolio that you wish to issue. Go to to learn more.

Or, if the product is secured, please ensure that the customer's loan reserve account (LOAN-RESERVE-US) has been . If you are issuing an open loan, then you can just issue an open loan without any funds in the customer's loan reserve account since open loans have dynamic limits and are a function of the funds available in the reserve account. But if you are issuing a revolving loan, please ensure that the customer loan reserve account has been before issuing a loan.

The next step is to have the customer preview the credit account agreement to the user, once they agree, create the credit account (, , or ).

Now the user's credit account will also have a card number associated with it. The card can be for spending online or through the of choice. The card can also be so that the user has a physical card at hand for use. You can also use our to emulate some transactions.

This will enable your platform to always stay up to date when changes/updates to the , , or objects occur.

Please note that the above requirements assume that (which includes real-time SSN verification) is being used for Individuals and Beneficial Owners. If not, US Government Photo ID (GOVT_ID,GOVT_ID_BACK) will also be required for all users and beneficial owners.

These reconciliations occur throughout the day, and funds will be debited from the user's other accounts (if available) or from your Reserve Account to reconcile the balance. We recommend setting up to monitor your reserve account balance. This will help you automatically fund your reserve when it falls below your required minimum balance.

To learn more about how an account can be overdrawn, go to .

Before closing an account, we strongly recommend moving the funds out of the account being closed to another internal or external account. However, if you fail to move the funds prior to account closure and the account closure reason allows for auto-cashout (see ), payout of the remaining balance will occur the following way:

For IC-DEPOSIT-US nodes, we will generate users' 1099-INT tax forms at the end of the year. This can be accessed via .

We will generate users' 1099-INT tax forms for the rebate provided to you at the end of the year. You will be able to access the forms via or through the dashboard.

If you are interested in enabling Multi Bank, .

The next step will be to start performing actions on behalf of the user. To do that, you need to grab an token for the user.

To do that, usually, you make a API call and grab the refresh_token from the user profile or get the refresh token from the create user call (like above).

Now the user's deposit account will also have a card number associated with it. The card can be for spending online or through the of choice. The card can also be so that the user has a physical card at hand for use. You can also use our to emulate some transactions.

This will enable your platform to always stay up to date when changes/updates to the , , or objects occur.

We use a variation of OAuth 2.0 for user authentication. This means that to perform any user actions, or to make any changes to a user, you need to supply a valid OAuth Key in the header field of the API request. Read more about what to include in our headers .

An OAuth key is a token representing a user's identity. See for more information on creating an OAuth key. The OAuth key will be returned in the response of this API call and will be used in the headers of subsequent API calls to allow users to perform other actions.

To get the OAuth key for a new user, find refresh_token from the or .

Additionally, you can incorporate two-factor authentication ("2FA") into your user login process when your user connects with a different device. To do so, just supply the new, non-verified fingerprint. See to register a new device fingerprint to the user account and use our two-factor authentication (2FA) security protocols.

, to sign up for a sandbox account.

2. Finish On-Boarding. This step might feel onerous, but behind the scenes, it gives us the information we need to enable the appropriate features for you on sandbox. KYC information supplied here can be fake or real. If it is real, we can use this information to enable production access for you when you are ready to go live with us. If fake, you will need to finish the same setup on our .

3. to get client credentials.

|

Once the user account is created, to see the user there. If everything is right, you will see the user go to Send and Receive Permissions on the dashboard.

The next step will be to start performing actions on behalf of the user. To do that, you need to grab an token for the user.

To do that, usually, make a API call and grab the refresh_token from the user profile. With our Postman collection, all of that is automated.

So the next step is to . Currently, we will make an OAuth key with all the scopes. .

In this section, pick a hub you wish to enable for the user ( or ). In this example, we will pick Deposit Hub.

PS: We would also recommend trying out our to emulate some card transactions.

In our next step, let's use to test subscribing to updates as they occur in the system.

As next steps, we would recommend: 1. Taking our language SDKs for a spin: | | | | .

2. Reviewing our Resource.

3. when ready.

ACH (Automated Clearing House) payments are an electronic form of payment between US bank accounts. They are a common and cost-effective way to transmit funds. Unlike other payment types, ACH transfers are not guaranteed funds and face the risk of returns up to 60 days after the transaction is settled (although most returns occur within 2-3 days). Read more about ACH Risk under .

ACH Transactions are enabled in your Spec Sheet. To learn more, go to .

The user you wish to enable transfers for is already in our system and has SEND-AND-RECEIVE permissions. Go to API Refs to learn more.

There is already a or account created in the system where the funds need to be sent from or to.

There are two ways to link an ACH account. Either by supplying the login credentials to the user's bank account or by supplying the account and routing numbers. Both are highlighted under section.

The next step is to . Either from an ACH node or to an ACH node.

Storing or transmitting card numbers requires platforms to be . So please do not store card numbers in your system unless you are PCI compliant.

Interchange Processing pushes/pulls funds for external debit or credit cards. Interchange Transactions are near-instant, and thus much faster than alternative transaction methods. However, they expose the platform to chargeback risk and are generally more expensive than ACH transactions, especially for larger amounts, as their cost (with the exception of Push-to-Debit) is in part based on a percentage of the transferred amount. Read more about Interchange Risk under .

Interchange Transactions are enabled in your Spec Sheet. To learn more, go to .

The user you wish to enable transfers for is already in our system and has SEND-AND-RECEIVE permissions. Go to API Refs to learn more.

There is already a or account created in the system where the funds need to be sent from or to.

The first step is to instance in our system. Once that is done, the node will either have DEBIT, CREDIT or CREDIT-AND-DEBIT permissions which would guide you in what types of transfers are enabled on this card by the issuer. Go to to learn more.

The next step is to . Either from an Interchange node or to an Interchange node.

Wires offer the benefit of being guaranteed funds that settle relatively quickly. While wires are more expensive than ACH transactions, they face no return risk, making them ideal for large sum transactions or situations where return risks need to be eliminated. Because they can't be returned, wires do pose some risks for the originator. Go to to learn more.

We currently use for this feature.

Fedwire Transactions are enabled in your Spec Sheet. To learn more about that, go to .

The user you wish to enable transfers for is already in our system and has SEND-AND-RECEIVE permissions. Go to API Refs to learn more.

There is already a or account created in the system where the funds need to be sent from.

The first step is to instance in our system. Once that is done, the node will have CREDIT permissions. Go to to learn more.

The next step is to . You will be sending funds from the deposit or credit account, to the Wire node.

SWIFT offers a way to send funds to family, friends, and businesses outside of the US. Additionally, while wires are more expensive than domestic transactions, they face no return risk, making them ideal for situations where return risks need to be eliminated. Due to the non-return nature of SWIFT, they do pose some risks for the originator. Go to to learn more.

SWIFT Transactions are enabled in your Spec Sheet. To learn more, go to .

The user you wish to enable transfers for is already in our system and has SEND-AND-RECEIVE permissions. Go to API Refs to learn more.

There is already a or account created in the system where the funds need to be sent from.

The first step is to instance in our system. Once that is done, the node will have CREDIT permissions. Go to to learn more.

The next step is to . You will be sending funds from the deposit or credit account, to the SWIFT node.

(Remote Payment and Present Service) is an electronic payment network that enables Platforms to provide bill payment services to consumers. RPPS provides electronic routing, settlement services, billing, and online research tools to facilitate electronic bill payments (including online bill payment request processing). While financial institutions currently cannot process bill payments to foreign merchants via RPPS, it is possible that such functionality may be available at a future date. While RPPS has reduced fraud risk, RPPS transactions can still return. Go to to learn more.

RPPS Transactions are enabled in your Spec Sheet. To learn more, go to .

The user you wish to enable transfers for is already in our system and has SEND-AND-RECEIVE permissions. Go to API Refs to learn more.

There is already a or account created in the system where the funds need to be sent from.

The first step is to that you wish to connect.

The next step is to instance in our system. Once that is done, the node will have CREDIT permissions. Go to to learn more.

The next step is to . You will be sending funds from the deposit or credit account, to the RPPS node to pay the bill.

Our checks allows you to issue and mail checks on demand from any or account. You may use checks for bill pay because they are accepted by all services and utility providers. While check issuance has reduced fraud risk, transactions can still return. Go to to learn more.

Check Transactions are enabled in your Spec Sheet. To learn more, go to .

The user you wish to enable transfers for is already in our system and has SEND-AND-RECEIVE permissions. Go to API Refs to learn more.

There is already a or account created in the system where the funds need to be sent from.

The next step is to instance in our system. Once that is done, the node will have CREDIT permissions. Go to to learn more.

The next step is to . You will be sending funds from the deposit or credit account, to the Check node.

Remote Deposit Capture (RDC) is a form of payment in which users can deposit a check by taking a picture of it. RDC is more convenient than depositing a check at an ATM or at a bank branch because it allows users to make the check deposit from the comfort of their home. However, it exposes the platform to standard RDC fraud and return risks. Similar to ACH, RDC transfers are not guaranteed funds and face the risk of returns up to 60 days after the transaction is settled (although most returns occur within 2-3 days). Read more about RDC Risk under .

RDC Transactions are enabled in your Spec Sheet. To learn more, go to .

The user you wish to enable transfers for is already in our system and has SEND-AND-RECEIVE permissions. Go to API Refs to learn more.

There is already a or account created in the system where the funds need to be credited to.

An RDC transfer does not require creating a node, so all you need to do is to .

With Internal Transactions you can transfer funds between Synapse managed nodes (eg. , , etc.) in near real-time.

Internal Transactions are enabled in your Spec Sheet. To learn more, go to .

The user you wish to enable transfers for is already in our system and has SEND-AND-RECEIVE permissions. Go to API Refs to learn more.

The first step is to , and there are no second steps 🙂.

see this
see this
see this
see this
see this
see this
see this
see this
see this
see this
see this
see this
see this
Payment Accounts
ID Score
webhooks
Dispute Chargeback
Visa
Mastercard
Plaid's
disputed
Card Disputes Guide
UDAAP
Reg E
Fair Lending
ID Score
Custom Loan Rejections
Users
Create User
OAuth User
OAuth
View User
Subscribe to Updates
users
nodes
transactions
subnet
ID Score
webhooks
Intro to Risk
Statements API Call
Statements API Call
contact us
Create User
OAuth User
OAuth
View User
Subscribe to Updates
users
nodes
transactions
subnet
Create User Call
View User
Create OAuth Key
Go here
production application
Go to Company Overview
Get Postman Collection
Get Env Variables
go to the dashboard
OAuth
View User
Deposit
Credit
virtual terminal
Webhook Site
Python
JavaScript
Ruby
PHP
Go
How to Go-Live
Credit Hub
Deposit
Payment Accounts
Payment Accounts
Provisional Credit
Credit Extensions
help@synapsefi.com
Originating Wires Safely
help@synapsefi.com
Originating Wires Safely
Credit Hub
Credit Terms
Credit Terms
here
Issue OAuth Key
Contacting us

ACH Type

Cutoff Time

Settlement Time

Same Day

11:00 AM PT

Same Business Day Transactions sent after the cutoff time will be included in the Next Day ACH batch at 3:00 PM PT. Same-Day pricing will still apply.

Next Day

3:00 PM PT

Next Business Day Transactions sent after the 3:00 PM PT cutoff time will be included in the following business day's ACH batch.

Cutoff Time

Settlement Time

12:00 PM PT

Same Business Day Domestic Wire transactions sent after the cutoff time will be processed the following business day.

Cutoff Time

Settlement Time

9:00 AM PT

Same Business Day International Wire transactions sent after the cutoff time will be processed the following business day.

Cutoff Time

Settlement Time

1:00 PM PT

Same Business Day Transactions sent after the cutoff time will be included in the following business day's RPPS batch.

Cutoff Time

Settlement Time

3:00 PM PT

Will vary by the external bank the check is being deposited to. Once the check has been deposited, the bank will hold the funds for a period of time before clearing the check.

Cutoff Time

Settlement Time

3:00 PM PT

Credits for RDC transactions are issued and settled in 6 business days by default. This timeline can be slightly reduced, but doing so will significantly increase your exposure to NSF returns which occur within the first 3 business days following deposits.

View All Users

Get Users

GET https://api.synapsefi.com/v3.1/users

This endpoint allows you to get all users linked to your client keys.

Query Parameters

Name
Type
Description

per_page

integer

Maximum documents to return per page. Default and max allowed is 20.

page

integer

Page number of the paginated request. Default is 1.

show_refresh_tokens

string

Set to NO if you wish not to receive refresh tokens for all users returned. Default is YES.

Headers

Name
Type
Description

X-SP-USER

string

Your OAuth key and device fingerprint, separated by a pipe. For this request OAuth can be left blank since X-SP-GATEWAY will be used for authentication. But device fingerprint is still required.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
   "error_code": "0",
   "http_code": "200",
   "limit": 10,
   "page": 1,
   "page_count": 1996,
   "success": true,
   "users": [
      {
         "_id": "5fa8c5ad867704005459a5f7",
         "_links": {
            "self": {
               "href": "https://uat-api.synapsefi.com/v3.1/users/5fa8c5ad867704005459a5f7"
            }
         },
         "account_closure_date": null,
         "client": {
            "id": "589acd9ecb3cd400fa75ac06",
            "name": "SynapseFi"
         },
         "documents": [],
         "emails": [],
         "extra": {
            "cip_tag": 1,
            "date_joined": 1604896172980,
            "extra_security": true,
            "is_business": true,
            "is_trusted": false,
            "last_updated": 1604896189696,
            "public_note": null,
            "supp_id": null
         },
         "flag": "NOT-FLAGGED",
         "flag_code": null,
         "is_hidden": false,
         "legal_names": [
            "Isaac Gluck"
         ],
         "logins": [
            {
               "email": "isaacbgluck@gmail.com",
               "scope": "READ_AND_WRITE"
            }
         ],
         "permission": "UNVERIFIED",
         "permission_code": null,
         "phone_numbers": [
            "5162325729"
         ],
         "photos": [],
         "refresh_token": "refresh_9DhdCB1PS2olaAQHMtxgpqnwRyi3Z8I7KUzjWsT4",
         "watchlists": "PENDING"
      },
      ...
      ...
   ],
   "users_count": 19952
}
{
    "error": {
        "code": "missing_client_credentials",
        "en": "Client credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

GET /v3.1/users?show_refresh_tokens=yes&per_page=10&page=1 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: <client_id_###>|<client_secret_###>
X-SP-USER-IP: 255.127.79.76
X-SP-USER: |<user_id>
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users?show_refresh_tokens=yes&per_page=10&page=1' \
--header 'X-SP-GATEWAY: <client_id_###>|<client_secret_###>' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: |<user_id>'
//
//
//
//

View User

User

GET https://api.synapsefi.com/v3.1/users/:user_id

This endpoint allows you to get a specific user document.

Path Parameters

Name
Type
Description

user_id

string

ID of the user to get.

Query Parameters

Name
Type
Description

full_dehydrate

string

Set to YES if you wish to receive all user PII in the response. Default is NO.

Headers

Name
Type
Description

X-SP-USER

string

Your OAuth key and device fingerprint, separated by a pipe. For this request OAuth can be left blank since X-SP-GATEWAY will be used for authentication. But device fingerprint is still required.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5ecfb7b5f8db9323b12cfa46",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5ecfb7b5f8db9323b12cfa46"
        }
    },
    "account_closure_date": null,
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "documents": [
        {
            "entity_scope": "Arts & Entertainment",
            "entity_type": "M",
            "id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
            "id_score": 1.0,
            "is_active": true,
            "name": "Test User",
            "permission_scope": "SEND|RECEIVE",
            "physical_docs": [
                {
                    "document_type": "GOVT_ID",
                    "id": "38dd7abbefd347315bebeaeb3a6f210e506066abc27b36c87dde060e9baf7c3d",
                    "last_updated": 1590671292685,
                    "status": "SUBMITTED|VALID"
                },
                {
                    "document_type": "GOVT_ID_BACK",
                    "id": "f2296315e36857799e5c7f5d85b33e554fa3fc9074ca85dbf04cef9b70bcfb7e",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED"
                }
            ],
            "required_edd_docs": [],
            "social_docs": [
                {
                    "document_type": "EMAIL",
                    "id": "2c45158f6431ca874bbe82f63d5905567854dde4d8b81539944e5779e5eee741",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED|VALID"
                },
                {
                    "document_type": "IP",
                    "id": "28d9177b22c127d9a51d8903893864accf6e553ac326704a4c0d585eaad2516a",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED|VALID"
                },
                {
                    "document_type": "ADDRESS",
                    "id": "c615c761d68c578a98fde8e73c490df405ff5d5e34fc11f029660d7e9743df21",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED"
                },
                {
                    "document_type": "PHONE_NUMBER",
                    "id": "fda60784d6375bc44edafaaeae149626c4c13dcb92e85a2a7a00eec2cdfd2b6f",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED|VALID"
                },
                {
                    "document_type": "DATE",
                    "id": "2b52edae636ca2fbe12ab1b08a344d381dabc3d2b92844cf7a8d8b6052b26d8e",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED"
                }
            ],
            "virtual_docs": [
                {
                    "document_type": "SSN",
                    "id": "ee596c2896dddc19b76c07a184fe7d3cf5a04b8e94b9108190cac7890739017f",
                    "last_updated": 1590671292685,
                    "status": "SUBMITTED|VALID"
                }
            ],
            "watchlists": "NO_MATCH"
        }
    ],
    "emails": [],
    "extra": {
        "cip_tag": 1,
        "date_joined": 1590671281454,
        "extra_security": false,
        "is_business": false,
        "is_trusted": false,
        "last_updated": 1590671292335,
        "public_note": null,
        "supp_id": "122eddfgbeafrfvbbb"
    },
    "flag": "NOT-FLAGGED",
    "flag_code": null,
    "is_hidden": false,
    "legal_names": [
        "Test User"
    ],
    "logins": [
        {
            "email": "test@synapsepay.com",
            "scope": "READ_AND_WRITE"
        }
    ],
    "permission": "SEND-AND-RECEIVE",
    "permission_code": null,
    "phone_numbers": [
        "901.111.1111"
    ],
    "photos": [],
    "refresh_token": "refresh_sXEqp57kSz6uMvVDUmho1KlJRdAbrYCG2WP9f8g4",
    "watchlists": "NO_MATCH"
}
{
    "_id": "5ecfb7b5f8db9323b12cfa46",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5ecfb7b5f8db9323b12cfa46"
        }
    },
    "_v": 2,
    "account_closure_date": null,
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "documents": [
        {
            "address_city": "SAN FRANCISCO",
            "address_country_code": "US",
            "address_postal_code": "94105",
            "address_street": "1 MARKET ST",
            "address_subdivision": "CA",
            "alias": "Test",
            "day": 2,
            "desired_scope": null,
            "doc_option_key": null,
            "docs_key": null,
            "docs_title": null,
            "email": "test@test.com",
            "entity_scope": "Arts & Entertainment",
            "entity_type": "M",
            "id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
            "id_score": 1.0,
            "ip": "::1",
            "is_active": true,
            "month": 5,
            "name": "Test User",
            "permission_scope": "SEND|RECEIVE",
            "phone_number": "901.111.1111",
            "physical_docs": [
                {
                    "document_type": "GOVT_ID",
                    "document_value": "https://uat-files.synapsefi.com/5ed1953334ac7a6aea8adbc8",
                    "id": "38dd7abbefd347315bebeaeb3a6f210e506066abc27b36c87dde060e9baf7c3d",
                    "last_updated": 1590671292685,
                    "status": "SUBMITTED|VALID"
                },
                {
                    "document_type": "GOVT_ID_BACK",
                    "document_value": "https://uat-files.synapsefi.com/5ed19533043279ca1ad1e6d9",
                    "id": "f2296315e36857799e5c7f5d85b33e554fa3fc9074ca85dbf04cef9b70bcfb7e",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED"
                }
            ],
            "required_edd_docs": [],
            "screening_results": {
                "561": "NO_MATCH",
                "aucl": "NO_MATCH",
                "concern_location": "NO_MATCH",
                "dpl": "NO_MATCH",
                "dtc": "NO_MATCH",
                "el": "NO_MATCH",
                "eucl": "NO_MATCH",
                "fatf_non_cooperative_jurisdiction": "NO_MATCH",
                "fbi_bank_robbers": "NO_MATCH",
                "fbi_counter_intelligence": "NO_MATCH",
                "fbi_crimes_against_children": "NO_MATCH",
                "fbi_criminal_enterprise_investigations": "NO_MATCH",
                "fbi_cyber": "NO_MATCH",
                "fbi_domestic_terrorism": "NO_MATCH",
                "fbi_human_trafficking": "NO_MATCH",
                "fbi_murders": "NO_MATCH",
                "fbi_violent_crimes": "NO_MATCH",
                "fbi_wanted_terrorists": "NO_MATCH",
                "fbi_white_collar": "NO_MATCH",
                "fincen_red_list": "NO_MATCH",
                "fse": "NO_MATCH",
                "fto_sanctions": "NO_MATCH",
                "futures_sanctions": "NO_MATCH",
                "hkma_sanctions": "NO_MATCH",
                "hm_treasury_sanctions": "NO_MATCH",
                "isn": "NO_MATCH",
                "mas_sanctions": "NO_MATCH",
                "monitored_location": "NO_MATCH",
                "ns-isa": "NO_MATCH",
                "ofac_561_list": "NO_MATCH",
                "ofac_eo13645": "NO_MATCH",
                "ofac_fse": "NO_MATCH",
                "ofac_fse_ir": "NO_MATCH",
                "ofac_fse_sy": "NO_MATCH",
                "ofac_isa": "NO_MATCH",
                "ofac_ns_isa": "NO_MATCH",
                "ofac_plc": "NO_MATCH",
                "ofac_sdn": "NO_MATCH",
                "ofac_ssi": "NO_MATCH",
                "ofac_syria": "NO_MATCH",
                "ofac_ukraine_eo13662": "NO_MATCH",
                "osfi": "NO_MATCH",
                "pep": "NO_MATCH",
                "plc": "NO_MATCH",
                "primary_concern": "NO_MATCH",
                "sdn": "NO_MATCH",
                "ssi": "NO_MATCH",
                "tel_sanctions": "NO_MATCH",
                "ukcl": "NO_MATCH",
                "uvl": "NO_MATCH"
            },
            "social_docs": [
                {
                    "document_type": "EMAIL",
                    "document_value": "test@test.com",
                    "id": "2c45158f6431ca874bbe82f63d5905567854dde4d8b81539944e5779e5eee741",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED|VALID"
                },
                {
                    "document_type": "IP",
                    "document_value": "::1",
                    "id": "28d9177b22c127d9a51d8903893864accf6e553ac326704a4c0d585eaad2516a",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED|VALID"
                },
                {
                    "document_type": "ADDRESS",
                    "document_value": "1 Market St., SF, CA, US, 94105.",
                    "id": "c615c761d68c578a98fde8e73c490df405ff5d5e34fc11f029660d7e9743df21",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED"
                },
                {
                    "document_type": "PHONE_NUMBER",
                    "document_value": "901.111.1111",
                    "id": "fda60784d6375bc44edafaaeae149626c4c13dcb92e85a2a7a00eec2cdfd2b6f",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED|VALID"
                },
                {
                    "document_type": "DATE",
                    "document_value": "5/2/1989",
                    "id": "2b52edae636ca2fbe12ab1b08a344d381dabc3d2b92844cf7a8d8b6052b26d8e",
                    "last_updated": 1590671292686,
                    "status": "SUBMITTED"
                }
            ],
            "virtual_docs": [
                {
                    "document_type": "SSN",
                    "document_value": "2222",
                    "id": "ee596c2896dddc19b76c07a184fe7d3cf5a04b8e94b9108190cac7890739017f",
                    "last_updated": 1590671292685,
                    "status": "SUBMITTED|VALID"
                }
            ],
            "watchlists": "NO_MATCH",
            "year": 1989
        }
    ],
    "emails": [],
    "extra": {
        "cip_tag": 1,
        "date_joined": 1590671281454,
        "extra_security": false,
        "is_business": false,
        "is_trusted": false,
        "last_updated": 1590671292335,
        "note": null,
        "public_note": null,
        "supp_id": "122eddfgbeafrfvbbb"
    },
    "flag": "NOT-FLAGGED",
    "flag_code": null,
    "ips": [
        "255.127.79.76"
    ],
    "is_hidden": false,
    "legal_names": [
        "Test User"
    ],
    "logins": [
        {
            "email": "test@synapsepay.com",
            "old_passwords": [],
            "scope": "READ_AND_WRITE",
            "updated_on": {
                "$date": 1590671292575
            }
        }
    ],
    "permission": "SEND-AND-RECEIVE",
    "permission_code": null,
    "phone_numbers": [
        "901.111.1111"
    ],
    "photos": [],
    "refresh_token": "refresh_sXEqp57kSz6uMvVDUmho1KlJRdAbrYCG2WP9f8g4",
    "watchlists": "NO_MATCH"
}
{
    "error": {
        "code": "missing_user_ip",
        "en": "User IP is missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

GET /v3.1/users/5fd7acfd8677040053ad486d?full_dehydrate=yes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: |e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d?full_dehydrate=yes' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: |e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//

Allowed Entity Types

Entity Types

GET https://api.synapsefi.com/v3.1/users/entity-types

This endpoint allows you to get and view all the available entity types.

Headers

Name
Type
Description

X-SP-USER

string

Your OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "BUSINESS": [
        {
            "common_name": "Limited Liability Company",
            "type": "LLC"
        },
        {
            "common_name": "Association",
            "type": "ASSOCIATION"
        },
        {
            "common_name": "Corporation (C-Corp, S-Corp, B-Corp)",
            "type": "CORP"
        },
        {
            "common_name": "Partnership",
            "type": "PARTNERSHIP"
        },
        {
            "common_name": "Sole Proprietorship",
            "type": "SOLE-PROPRIETORSHIP"
        },
        {
            "common_name": "Business Trust",
            "type": "TRUST"
        },
        {
            "common_name": "Business Vendor",
            "type": "VENDOR"
        },
        {
            "common_name": "Estate",
            "type": "ESTATE"
        },
        {
            "common_name": "Individual Retirement Accounts",
            "type": "IRA"
        }
    ],
    "PERSONAL": [
        {
            "common_name": "Male",
            "type": "M"
        },
        {
            "common_name": "Female",
            "type": "F"
        },
        {
            "common_name": "Other",
            "type": "O"
        },
        {
            "common_name": "Minor",
            "type": "MINOR"
        },
        {
            "common_name": "Not Known",
            "type": "NOT_KNOWN"
        },
        {
            "common_name": "Personal Trust Account",
            "type": "TRUST"
        }
    ]
}

Example Request

GET /v3.1/users/entity-types HTTP/1.1
Host: uat-api.synapsefi.com
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/entity-types'
//
//
//
//

Allowed Entity Scopes

Entity Scopes

GET https://api.synapsefi.com/v3.1/users/entity-scopes

This endpoint allows you to get and view all the avaliable entity scopes.

Headers

Name
Type
Description

X-SP-USER

string

Your OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "scopes": [
        "Not Known",
        "Airport",
        "Arts & Entertainment",
        "Automotive",
        "Bank & Financial Services",
        "Bar",
        "Book Store",
        "Business Services",
        "Religious Organization",
        "Club",
        "Community/Government",
        "Concert Venue",
        "Doctor",
        "Event Planning/Event Services",
        "Food/Grocery",
        "Health/Medical/Pharmacy",
        "Home Improvement",
        "Hospital/Clinic",
        "Hotel",
        "Landmark",
        "Lawyer",
        "Library",
        "Licensed Financial Representative",
        "Local Business",
        "Middle School",
        "Movie Theater",
        "Museum/Art Gallery",
        "Outdoor Gear/Sporting Goods",
        "Pet Services",
        "Professional Services",
        "Public Places",
        "Real Estate",
        "Restaurant/Cafe",
        "School",
        "Shopping/Retail",
        "Spas/Beauty/Personal Care",
        "Sports Venue",
        "Sports/Recreation/Activities",
        "Tours/Sightseeing",
        "Train Station",
        "Transportation",
        "University",
        "Aerospace/Defense",
        "Automobiles and Parts",
        "Bank/Financial Institution",
        "Biotechnology",
        "Cause",
        "Chemicals",
        "Community Organization",
        "Company",
        "Computers/Technology",
        "Consulting/Business Services",
        "Education",
        "Elementary School",
        "Energy/Utility",
        "Engineering/Construction",
        "Farming/Agriculture",
        "Food/Beverages",
        "Government Organization",
        "Health/Beauty",
        "Health/Medical/Pharmaceuticals",
        "Industrials",
        "Insurance Company",
        "Internet/Software",
        "Legal/Law",
        "Media/News/Publishing",
        "Mining/Materials",
        "Non-Governmental Organization (NGO)",
        "Non-Profit Organization",
        "Organization",
        "Political Organization",
        "Political Party",
        "Preschool",
        "Retail and Consumer Merchandise",
        "Small Business",
        "Telecommunication",
        "Transport/Freight",
        "Travel/Leisure"
    ]
}

Example Request

GET /v3.1/users/entity-scopes HTTP/1.1
Host: uat-api.synapsefi.com
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/entity-scopes'
//
//
//
//

Manage Duplicates

Currently we do not allow users to create multiple profiles within your environment in our system. So we use various techniques to detect duplicates in our system. In instance you run into a profile that was closed because it's a duplicate profile, the following API calls will enable you to recover a closed profile. The only way you can accomplish that is by swapping the profile by the open duplicate profile. So the closed profile opens and the open profile takes it place.

Duplicates

GET https://api.synapsefi.com/v3.1/users/:user_id/get-duplicates

This endpoint returns all the accounts that are duplicates of the user.

Headers

Name
Type
Description

X-SP-USER

string

OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "closed_users_id": [
        "5eb054749f1eef380b833932",
        "5eb054d879e883412fbe8c79"
    ],
    "open_users_id": [
        "5f651b0284f2d000568557e2"
    ],
    "reason": "duplicate_name_and_address",
    "status": "CLOSED",
    "user_id": "5fd7acfd8677040053ad486d"
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

GET /v3.1/users/5fd7acfd8677040053ad486d/get-duplicates HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/get-duplicates' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'

Possible reason Values

reason

Description

duplicate_tin

User profile detected as duplicate due to same TINs.

duplicate_ssn

User profile detected as duplicate due to same SSNs.

duplicate_name_and_address

User profile detected as duplicate due to same name and address.

duplicate_name_and_email

User profile detected as duplicate due to same name and email.

duplicate_name_and_date_of_birth

User profile detected as duplicate due to same name and dob.

duplicate_name_and_drive_license_number

User profile detected as duplicate due to same name and DLN.

blacklisted_user

User profile is closed because this user is blacklisted in our system.

not_known

Reason unknown.

Swap Duplicates

PATCH https://api.synapsefi.com/v3.1/users/:user_id/swap-duplicate-users

This endpoint allows you to swap one closed user profile with another in instances of duplicate profiles.

Headers

Name
Type
Description

X-SP-USER

string

OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

Request Body

Name
Type
Description

swap_to_user_id

string

User ID you'd like to swap the open status with.

{
  "user_swapped": "user 5d7fc541ea4d4b007461adc8 swapped with 5ddc57cb3c4e2800756baa97",
  "user_id": "5d7fc541ea4d4b007461adc8", 
  "swapped_to": "5ddc57cb3c4e2800756baa97"
  
}
{
    "error": {
        "code": "invalid_permission",
        "en": "invalid permissions for user 5eb054749f1eef380b833932"
    },
    "error_code": "400",
    "http_code": "409",
    "success": false
}

Example Request

PATCH /v3.1/users/5fd7acfd8677040053ad486d/swap-duplicate-users HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "swap_to_user_id":"5eb054749f1eef380b833932"
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/swap-duplicate-users' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "swap_to_user_id":"5eb054749f1eef380b833932"
}'
Plaid's
Intro to Risk
Intro to Spec Sheets
Users
Deposit
Credit
PCI compliant
Intro to Risk
Intro to Spec Sheets
Users
Deposit
Credit
Intro to Risk
Fedwire® Funds Service
Intro to Spec Sheets
Users
Deposit
Credit
Intro to Risk
Intro to Spec Sheets
Users
Deposit
Credit
RPPS
Intro to Risk
Intro to Spec Sheets
Users
Deposit
Credit
Locate ID of the Biller
Deposit
Credit
Intro to Risk
Intro to Spec Sheets
Users
Deposit
Credit
Intro to Risk
Intro to Spec Sheets
Users
Deposit
Credit
Deposit
Credit
Intro to Spec Sheets
Users
ACH
Interchange
Fedwire
SWIFT
RPPS
Checks
RDC
Internal Transactions
User Details
Possible Permission Codes
Create an OAuth Key
You can later learn how to customize scopes as well
Upload KYC on an Existing User
upload EDD Docs

User Object Details

User Schema

Key

Type

Required

Description

_id

String

N.A. Included in API response

Primary Key of the user object.

account_closure_date

Number

N.A. Included in API response

client.id

String

N.A. Included in API response

The Primary Key that denotes your client object in our system.

client.name

String

N.A. Included in API response

Your common name in our system.

documents

Array of Dict

Optional

Contains all the KYC information associated with the user profile.

extra.cip_tag

Int

Optional

extra.date_joined

Number

N.A. Included in API response

Unix timestamp (in ms) value of when the user object was created.

extra.is_business

Boolean

Optional

If the user profile is a business, the value is true. Default is false.

extra.last_updated

Number

N.A. Included in API response

Unix timestamp (in ms) value of when the user object was last updated.

flag

String

Depends. Only required if you are trying to flag a user.

If FLAGGED, the user is flagged in our system. Default is NOT-FLAGGED.

flag_code

String

Depends. Only required if you are trying to flag a user.

permission

String

Depends. Only required if you are trying to close or lock a user account.

permission_code

String

Depends. Only required if you are trying to close or lock a user account.

ips

Array of Strings

N.A. Included in API response. You will be supplying this in the request header when creating a user account X-SP-USER-IP

Known IPs that the user is using to operating their account.

legal_names

Array of Strings

Required during POST

Legal names the user profile will be using.

logins.email

String

Required during POST

email of user.

logins.password

String

Depends. Only required if you wish to use Synapse email/password authentication

password associated with login.

logins.scope

String

Depends. Only required if you wish to use Synapse email/password authentication

If READ, the user credentials can only read user info. Default is READ-AND-WRITE.

phone_numbers

Array of Strings

Required during POST

Phone number associated with user login credentials.

refresh_token

String

N.A. Included in API response

supp_id

String

Optional

Unique platform side identifier

watchlists

String

N.A. Included in API response

Possible Flag Codes

Flag Code

Description

Next Steps

Set By

NOT_KNOWN

Flag reason unknown.

No next steps recommend here since legacy tag.

Legacy tag, deprecated now.

ACCOUNT_CLOSURE|BLOCKED_INDUSTRY

User operates in a blocked industry.

Account will be closed and the user's funds will be mailed back to them on the account_closure_date.

us

ACCOUNT_CLOSURE|HIGH_RISK

User is deemed high risk.

Account will be closed and the user's funds will be mailed back to them on the account_closure_date.

us

PENDING_UPLOAD|DOC_REQUEST|CIP

Additional documents are required to be able to make a decision on user account.

Submit documents listed in documents.required_edd_docs. Once all documents are submitted, the user will go to PENDING_REVIEW|DOC_REQUEST|CIP. If documents not submitted, Account will be closed and the user's funds will be mailed back to them on the account_closure_date.

us

PENDING_UPLOAD|DOC_REQUEST|UAR

Additional documents are required to be able to make a decision on user account.

Submit documents listed in documents.required_edd_docs. Once all documents are submitted, the user will go to PENDING_REVIEW|DOC_REQUEST|UAR. If documents not submitted, Account will be closed and the user's funds will be mailed back to them on the account_closure_date.

us

PENDING_UPLOAD|DOC_REQUEST|SECURITY

Additional documents are required to be able to make a decision on user account.

Submit documents listed in documents.required_edd_docs. Once all documents are submitted, the user will go to PENDING_REVIEW|DOC_REQUEST|SECURITY. If documents not submitted, Account will be closed and the user's funds will be mailed back to them on the account_closure_date.

us

PENDING_REVIEW|DOC_REQUEST|CIP

You have requested Synapse to review and decision the user account and any additional documents that we need have been submitted to us.

User account is under review by us. Pending a decision.

you

PENDING_REVIEW|DOC_REQUEST|UAR

You have requested Synapse to review and decision the user account and any additional documents that we need have been submitted to us.

User account is under review by us. Pending a decision.

you

PENDING_REVIEW|DOC_REQUEST|SECURITY

You have requested Synapse to review and decision the user account and any additional documents that we need have been submitted to us.

User account is under review by us. Pending a decision.

you

PENDING_REVIEW|ACCOUNT_CLOSURE|BLOCKED_INDUSTRY

You have requested Synapse to review and decision the user account and any additional documents that we need have been submitted to us.

User account is under review by us. Pending a decision.

you

PENDING_REVIEW|ACCOUNT_CLOSURE|HIGH_RISK

You have requested Synapse to review and decision the user account and any additional documents that we need have been submitted to us.

User account is under review by us. Pending a decision.

you

Possible User Permissions

Permission

Description

Next Steps

Set By

UNVERIFIED

User KYC review unfinished. No account or payment activity allowed.

us

RECEIVE

User KYC review finished. User is allowed to only receive payments, not originate or authorize any payments.

us

SEND-AND-RECEIVE

If this is an acceptable final permission, no additional steps needed.

us

LOCKED

User KYC review finished and user has been locked.

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

CLOSED

User KYC review finished and user has been closed.

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

MAKE-IT-GO-AWAY

User account has been unindexed. It's like the account never existed.

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

Possible Permission Codes

Permission

Description

Next Steps

Set By

NOT_KNOWN

Permission reason unknown.

No next steps recommend here since legacy tag.

Legacy tag, deprecated now.

UNUSUAL_ACTIVITY|COMPLIANCE_SUSPICIOUS

The user conducted suspicious activity and for that reason the account has been closed or locked.

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

UNUSUAL_ACTIVITY|LEGAL_REQUEST

The user account has been closed due to some legal request that was received.

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

KYC_FRAUD|BLOCKED_LIST

User is in a blocked list and for that reason the account has been closed or locked.

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

KYC_FRAUD|FRAUDULENT_DOCS

User supplied fraudulent KYC documents and for that reason the account has been closed or locked.

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

BLOCKED_INDUSTRY

User is operating in a blocked industry and for that reason the account has been closed or locked.

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

HIGH_RETURNS

User has high returns increasing the risk of loss of funds and for that reason the account has been closed or locked.

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

NEGATIVE_BALANCE

User account has been closed due to a negative balance in their account.

Once the user is able to fund their account, either with direct deposit or payment origination, the account will return back to its previous state.

us

PLATFORM_REQUEST

User account has been closed or locked by you or by our team based on your request

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you

USER_REQUEST

User account has been closed or locked by you or by our team based on user request

Please ensure that the user has been notified of this adverse action and no funds access have been restricted and the user has been able to cash out remaining balance in their account(s).

you or us

DUPLICATE_ACCOUNT

The user account has been closed because another account with the same KYC on your platform exists in our system

Please ensure that the user has access to their open account thus eliminating the need to open a new duplicate account. You can also view all duplicate accounts for a particular user and then swap the account closure decision from one account to another.

us

Please note that the user will be cashed out automatically from the system if any one of the codes are picked:

  • UNUSUAL_ACTIVITY|COMPLIANCE_SUSPICIOUS

  • BLOCKED_INDUSTRY

  • PLATFORM_REQUEST

  • USER_REQUEST

  • PLATFORM_TERMINATED

  • NO_ACTIVITY

  • PERMANENT_CLOSURE

When a user is auto cashed out, we will issue a check to their mailing address, if avaliable or else to the base document address on file.

Possible Watchlists Values

Permission

Description

Next Steps

PENDING

User Object is pending screenings review.

SOFT_MATCH|PENDING_UPLOAD

User is a soft match on one or more relevant sanctions list. A document upload is needed to further evaluate the soft match.

MATCH

User Object is a match on a sanctions screenings list.

SOFT_MATCH

User is a soft match on one or more relevant sanctions list.

No action required on your side. We will review the user object to either decision it as MATCH or FALSE_POSITIVE.

NO_MATCH

User Object is a not a match on any relevant sanctions screenings list.

No action required.

FALSE_POSITIVE

User Object was a soft match on one or more relevant sanctions screenings list. But now has been decisioned as a FALSE_POSITIVE match.

No action required.

Base Document Schema

Key

Type

Required

Description

address_city

String

Yes

address_country_code

String

Yes

ISO Alpha-2 formatted Address country code of the business location or individual's residence.

address_postal_code

Integer

Yes

Address zip/postal code of the business location or individual's residence.

address_street

String

Yes

Address street of the business location or individual's residence.

address_subdivision

String

Yes

Address subdivision (state) of the business location or individual's residence.

alias

String

No

Common name for the individual/entity.

day

Integer

Yes

Day of entity formation for business or Birth date for individual.

month

Integer

Yes

Month of entity formation for business or Birth month for individual.

year

Integer

Yes

Year of entity formation for business or Birth year for individual.

company_activity

Array of String

Yes if business base doc

Allowed values: "MSB","LENDING","NON-US_OFFICE","NON-US_ACTIVITY","CRYPTO","PUBLIC","PRIVATE","REGISTERED_WITH_SEC","OTHER","NBFI-US","NBFI-FOREIGN","LISTED-US","LISTED-FOREIGN","NFP","BANK-US","BANK-FOREIGN","FUND".

desired_scope

String

No

doc_option_key

String

No

docs_key

String

No

docs_title

String

No

edd_status

String

N.A. Included in API response

email

String

Yes

Email of the individual/entity associated with this base document.

entity_scope

String

Yes

entity_type

String

Yes

entity_relationship

String

Yes if individual base doc on business user

Allowed values: CONTROLLING_PERSON,UBO.

id

String

Yes if you wish to PATCH an existing base doc

Primary key of the base document. This value is a local primary key, meaning, it's only unique within a user object. Different user objects can have same base doc IDs.

id_score

Number

N.A. Included in API response

trust_level

String

N.A. Included in API response

ip

String

Yes

IP of the individual/entity associated with this base document.

is_active

Boolean

No

If false, base document wont participate in user permission decisioning. Default is true.

name

String

Yes

Name of the individual/entity associated with this base document.

maiden_name

String

No

Maiden name of the individual. Helpful to provide this in instances where the individual's maiden name is still associated with their TIN/SSN.

ownership_percentage

Number

Yes if individual base doc on business user

Percentage of the business owned by the beneficial owner.

permission_scope

String

N.A. Included in API response

phone_number

String

Yes

Phone number of the individual/entity associated with this base document.

physical_docs

Array of Objects

No

required_edd_docs

Array of String

N.A. Included in API response

screening_results

Object

N.A. Included in API response

social_docs

Array of Objects

No

Social documents linked to the base document. More details below.

title

String

Yes if individual base doc on business user

Title of the beneficial owner.

virtual_docs

Array of Objects

No

Virtual documents linked to the base document. More details below.

watchlists

String

N.A. Included in API response

Screenings Results Details

Here is an example object for screening_results object:

{
   "ofac_sdn": "MATCH",
   "ofac_ssi_list": "MATCH",
   "ofac_ukraine-eo13662": "MATCH",
   "usa_csl_list": "MATCH",
   "hm_treasury_sanctions": "NO_MATCH",
   "futures_sanctions": "NO_MATCH",
   "fincen_311_sanctions": "NO_MATCH",
   "mas_sanctions": "NO_MATCH",
   "ofac_fse_list": "NO_MATCH",
   "ofac_iran": "NO_MATCH",
   "usa_tel_list": "NO_MATCH",
   "ofac_ns-plc": "NO_MATCH",
   "ofac_sdgt": "NO_MATCH",
   "ofac_561_list": "NO_MATCH",
   "ofac_syria": "NO_MATCH",
   "ofac_fse-sy": "NO_MATCH",
   "osfi": "NO_MATCH",
   "fbi_counter_intelligence": "NO_MATCH",
   "fbi_domestic": "NO_MATCH",
   "fbi_cyber": "NO_MATCH",
   "fbi_white_collar": "NO_MATCH",
   "fbi_crimes_against_children": "NO_MATCH",
   "fbi_bank_robbers": "NO_MATCH",
   "fbi_wanted_terrorists": "NO_MATCH",
   "bis_dpl_sanctions": "NO_MATCH",
   "fbi_violent_crimes": "NO_MATCH",
   "fbi_domestic_terrorism": "NO_MATCH",
   "fbi_human_trafficking": "NO_MATCH",
   "fbi_criminal_enterprise_investigations": "NO_MATCH",
   "fbi_terrorism": "NO_MATCH",
   "fbi_murders": "NO_MATCH",
   "pep": "NO_MATCH",
   "aucl": "NO_MATCH",
   "eucl": "NO_MATCH",
   "uk_sanctions": "NO_MATCH",
   "switzerland_sanctions": "NO_MATCH",
   "dtc_list": "NO_MATCH",
   "cftc_sanctions": "NO_MATCH",
   "finra_sanctions": "NO_MATCH",
   "euro": "NO_MATCH",
   "fto_sanctions": "NO_MATCH",
   "hardcode_list": "NO_MATCH",
   "russian_sanctions": "NO_MATCH",
   "singapore_sanctions": "NO_MATCH",
   "nk_sanctions": "NO_MATCH",
   "cftc_reparations_sanctions": "NO_MATCH",
   "interpol": "NO_MATCH",
   "usa_rfj": "NO_MATCH",
   "belgian_list": "NO_MATCH",
   "canada_sema": "NO_MATCH",
   "canada_rcmp": "NO_MATCH",
   "cftc_red": "NO_MATCH",
   "ice_sanctions": "NO_MATCH",
   "unsc_cons": "NO_MATCH",
   "cons_sdn": "NO_MATCH"
}

Here are all the possible values for individual screenings lists:

Value

Description

FAILED

Screenings have failed, we will auto-retry.

PENDING

Screenings have not been attempted yet. We will auto-run.

FALSE_POSITIVE

Base Document is a false positive on the screenings list.

MATCH

Virtual Document Schema

Key

Type

Required

Description

document_type

String

Yes

document_value

String

Yes

Value of the document.

id

String

Yes if you wish to PATCH an existing virtual document

Primary key of the virtual document. This value is a local primary key, meaning, it's only unique within a base document. Different base documents can have same virtual document IDs.

last_updated

Number

N.A. Included in API response

Unix timestamp (in ms) value of when the virtual document was last updated.

status

String

N.A. Included in API response

meta.country_code

String

Depends

meta.sub_type

String

Depends (Required with usage of BUS_REGISTRATION document type.)

Social Document Schema

Key

Type

Required

Description

document_type

String

Yes

document_value

String

Yes

Value of the document.

id

String

Yes if you wish to PATCH an existing social document

Primary key of the social document. This value is a local primary key, meaning, it's only unique within a base document. Different base documents can have same social document IDs.

last_updated

Number

N.A. Included in API response

Unix timestamp (in ms) value of when the social document was last updated.

status

String

N.A. Included in API response

info.address_city

String

N.A. Included in API response

Address city associated with the social document. Currently a response in MAILING_ADDRESS social document.

info.address_country_code

String

N.A. Included in API response

ISO Alpha-2 formatted Address country code associated with the social document. Currently a response in MAILING_ADDRESS social document.

info.address_postal_code

String

N.A. Included in API response

Address zip or postal code associated with the social document. Currently a response in MAILING_ADDRESS social document.

into.address_street

String

N.A. Included in API response

Address street associated with the social document. Currently a response in MAILING_ADDRESS social document.

info.address_subdivision

String

N.A. Included in API response

Address subdivision (state) associated with the social document. Currently a response in MAILING_ADDRESS social document.

info.address_care_of

String

N.A. Included in API response

C/O name associated with the social document. Currently a response in MAILING_ADDRESS social document.

info.invalid_reasons

Array of String

N.A. Included in API response

Currently a response in MAILING_ADDRESS social document. Two reasons: invalid_address and address_has_incorrect_unit.

meta.state_code

String

Depends

meta.country_code

String

Depends

meta.address_street

String

Depends

Address street associated with the social document. Currently a response in MAILING_ADDRESS social document. This field will not be returned in any user responses.

meta.address_city

String

Depends

Address city associated with the social document. Currently a response in MAILING_ADDRESS social document. This field will not be returned in any user responses.

meta.address_subdivision

String

Depends

Address subdivision (state) associated with the social document. Currently a response in MAILING_ADDRESS social document. This field will not be returned in any user responses.

meta.address_country_code

String

Depends

ISO Alpha-2 formatted Address country code associated with the social document. Currently a response in MAILING_ADDRESS social document. This field will not be returned in any user responses.

meta.address_postal_code

Integer

Depends

Address zip or postal code associated with the social document. Currently a response in MAILING_ADDRESS social document. This field will not be returned in any user responses.

meta.address_care_of

String

No

C/O name associated with the social document. Currently a response in MAILING_ADDRESS social document. This field will not be returned in any user responses.

Physical Document Schema

Key

Type

Required

Description

document_type

String

Yes

document_value

String

Yes

In case of VIDEO_AUTHORIZATION, please ensure that the user's face is clearly visible and the audio is clear and states the user saying "I authorize account opening at <name_of_platform>." Allowed file types for VIDEO_AUTHORIZATION: ["mov","mp4","webm","avi","flv","mkv","ogg"]. Please limit video to 5-seconds.

id

String

Yes if you wish to PATCH an existing virtual document

Primary key of the virtual document. This value is a local primary key, meaning, it's only unique within a base document. Different base documents can have same virtual document IDs.

last_updated

Number

N.A. Included in API response

Unix timestamp (in ms) value of when the virtual document was last updated.

status

String

N.A. Included in API response

invalid_reasons

Array of String

N.A. Included in API response

meta.state_code

String

Depends

meta.country_code

String

Depends

meta.id_number

String

Depends

Possible Invalid Reasons Values for Physical Docs

Permission

Description

Next Steps

wrong_file_extension

Prompt the user to upload physical document with a valid file format.

image_not_found

No image found in provided file (e.g. file is empty).

Ensure that this is not a bug on your side and then request the user to re-upload document.

black_and_white_image

Image is black and white (e.g. a high-contrast photoscan of an ID rather than a color picture of an ID).

Prompt the user to upload the physical document in natural color.

palettised_image

The image only has a single color channel (i.e. is an indexed 256-color image) instead of having 3 (RGB) channels.

Prompt the user to upload the physical document in natural color.

poor_image_quality

The image does not contain a recognizable document, has abnormal colors, or is otherwise difficult to read.

Prompt the user to upload a higher resolution physical document in natural color.

name_mismatch

Name on physical document does not match name on Base Doc.

This can happen if the user did not submit their full legal name when submitting the base document. Prompt the user to update their name on the base document and then resubmit the physical document.

dob_mismatch

DOB on physical document does not match DOB on Base Doc.

This can happen if the user did accidentally submitted the wrong date, month and year on the base document. Prompt the user to update their dob on the base document and then resubmit the physical document.

face_undetected

No human face found in image, or unable to see eyes (e.g. due to glasses or flash).

Prompt the user to upload a higher resolution physical document in natural color.

mrz_undetected

[Applicable Only to Passports] Machine Readable Zone (MRZ) field not found.

Prompt the user to upload a passport photo with MRZ visible.

name_mismatch_mrz

[Applicable Only to Passports] Name extracted from Machine Readable Zone (MRZ) doesn’t match Base Doc.

This can happen if the user did not submit their full legal name when submitting the base document. Prompt the user to update their name on the base document and then resubmit the physical document.

flagged_for_failing_security_feature

Flagged due to image missing missing corners, unable to read information due to glasses or flash, or ID has unusual patterns/formats (e.g. library card, non-DOD military ID card, suspected fake ID, etc.)

Prompt the user to upload a higher resolution physical document in natural color with all corners visible.

flagged_for_potential_fraud

Flagged due to information match with IDV internal blocked database.

company_name_mismatch

Name on physical document does not match name on Base Doc.

This can happen if the user did not submit their full legal name of the company when submitting the base document. Prompt the user to update their name on the base document and then resubmit the physical document.

tax_id_mismatch

Tax ID number (TIN) on the physical document does not match the TIN virtual document.

This can happen if the user did accidentally submitted the wrong TIN as a virtual documents. Prompt the user to update their TIN and then resubmit the physical document.

irs_logo_undetected

IRS logo not detected on an IRS issued document.

Prompt the user to upload a higher resolution physical document in natural color with all corners visible.

poor_video_quality

Unable to process video due to poor image quality.

Prompt the user to upload a higher resolution physical document in natural color.

poor_image_and_video_quality

Unable to process image and video files.

Prompt the user to upload a higher resolution physical document in natural color.

image_face_undetected

No human face found in image, or unable to see eyes (e.g. due to glasses or flash).

Prompt the user to upload a higher resolution physical document with face visible.

video_face_undetected

No human face found in video, or unable to see eyes (e.g. due to glasses or flash).

Prompt the user to upload a higher resolution physical document with face visible.

face_mismatch

Face from the video does not match face from previously submitted ID.

Prompt the user to upload a higher resolution physical document with face visible.

audio_comparision_failed

Audio does not match expected statement for comparison.

Prompt the user to upload a video with valid audio artifacts.

audio_undetected

No sound from the video detected.

Prompt the user to upload a video with valid audio artifacts.

image_too_large

File larger than allowed limit (4MB) for or image has higher than allowed pixel density.

Prompt the user to upload a lower resolution physical document in natural color with all corners visible.

address_mismatch

Address on physical document does not match Address on Base Doc.

This can happen if the user has submitted a different address on the base document. Prompt the user to update their address on the base document and then resubmit the physical document.

expired_document

Document is expired.

Prompt the user to upload a non-expired document.

expired_document_possible_misread_retry

Expiration field on physical document is not recognizable, or difficult to read.

Prompt the user to upload a higher resolution document in natural color.

date_not_detected

No date detected on the document.

Prompt the user to upload a non-expired document. In most cases this means that the user is submitting an incorrect type of document.

logo_not_detected

No logo detected on the document.

Prompt the user to upload a valid document. In most cases this means that the user is submitting an incorrect type of document.

unable_to_classify_as_bank_or_bill

Logo on document could not be classified as a known bank or utility provider.

Prompt the user to upload a valid document. In most cases this means that the user is submitting an incorrect type of document.

date_or_logo_failed

Date or logo missing in the document.

Prompt the user to upload a valid document. In most cases this means that the user is submitting an incorrect type of document.

atleast_one_text_field_failed

At least one text field (e.g. name, address, or date) was missing missing or couldn't be matched with Base Doc.

Prompt the user to upload a valid document. In most cases this means that the user is submitting an incorrect type of document.

hq_logo_hq_address_or_date

Logo detected with a high level of confidence, and either address or date detected with a high level of confidence.

Prompt the user to upload a valid document. In most cases this means that the user is submitting an incorrect type of document.

hq_logo_mq_address_and_date

Logo detected with a high level of confidence, but date and address only detected with a medium level of confidence

Prompt the user to upload a valid document. In most cases this means that the user is submitting an incorrect type of document.

Possible Sub-Document Status Values

Status

Description

Next Steps

SUBMITTED|REVIEWING

Document is pending review.

SUBMITTED|VALID

Document is valid.

Document has been marked as valid.

SUBMITTED|INVALID

Document is invalid.

Prompt the user to upload a valid document.

SUBMITTED

Document has been submitted to us. This status means we currently lack the capability to verify this type of document automatically.

In most cases we recommend using a third-party provider to automatically verify the authenticity of the document before submitting. Once submitted to us, the user is free to be moved to the next onboarding step.

[1] In some instances, if we are unable to automatically verify a document. In those instances the document is queued to be reviewed manually by an agent on our side. This review is completed in 2 business days or less.

Additional Details

Passports

The following details will help assist on proper setup when submitting passports.

  • Passport Document Types

    • document_type = GOVT_ID, used when submitting a passport issued by the United States of America.

    • document_type = PASSPORT_BIODATA, used when submitting a passport issued by a country other then the United States of America.

  • When submitting a passport, the country code will be validated based on the value being US or not if you submit the incorrect document_type. document_types that will fail this check, including PASSPORT_BIODATA, are:

    • NATIONAL_ID

    • DRIVER_LICENSE

    • VOTER_REGISTRATION_CARD

    • PERMANENT_RESIDENT_CARD

    • PASSPORT_BIODATA

  • For users submitting passports issued in the United States of America, verification of a Social Security Number is also required. This is regardless of the user's country of residence.

OAuth Object Details

OAuth Schema

Key

Type

Required

Description

client_id

String

N.A. Included in API response.

The Primary Key that denotes your client object in our system.

client_name

String

N.A. Included in API response.

Your common name in our system.

expires_at

Number

N.A. Included in API response.

Unix timestamp (in ms) value of when the OAuth object was created.

expires_in

Integer

N.A. Included in API response.

Countdown (in sec) of when the OAuth key will expire.

oauth_key

String

N.A. Included in API response.

OAuth key that you will be using to authenticate user level requests.

refresh_expires_in

Integer

N.A. Included in API response.

Number of times the same refresh token can be used to issue a new OAuth key.

refresh_token

String

Yes. But the response might have a new value if your supplied refresh token will expire after this request.

Token used to generate an OAuth Object.

scope

Array of String

user_id

String

N.A. Included in API response.

The Primary Key that denotes the user object in our system.

Possible Scopes

Scope

Description

USER|PATCH

PATCH requests on /users/userid can be sent. Eg. Updating KYC on user object.

USER|GET

GET requests on /users/userid can be sent. Eg. Viewing user KYC.

NODES|POST

POST requests on /users/userid/nodes can be sent. Eg. Creating a deposit account.

NODES|GET

GET requests on /users/userid/nodes can be sent. Eg. Viewing all payment accounts liked to the user.

NODE|PATCH

PATCH requests on /users/userid/nodes/nodeid can be sent. Eg. Verifying micro-deposits.

NODE|DELETE

DELETE requests on /users/userid/nodes/nodeid can be sent. Eg. Deleting a payment account from the user profile.

TRANS|POST

POST requests on /users/userid/nodes/nodeid/trans can be sent. Eg. Creating a new payment transaction.

TRANS|GET

GET requests on /users/userid/nodes/nodeid/trans can be sent. Eg. Viewing all payment transactions the user has made or received.

TRAN|GET

GET requests on /users/userid/nodes/nodeid/trans/tranid can be sent. Eg. Viewing a specific payment that was either sent or received by the user.

TRAN|PATCH

PATCH requests on /users/userid/nodes/nodeid/trans/tranid can be sent. Eg. Commenting on the transaction or approving a quote.

TRAN|DELETE

DELETE requests on /users/userid/nodes/nodeid/trans/tranid can be sent. Eg. Canceling a transaction.

SUBNETS|POST

POST requests on /users/userid/nodes/nodeid/subnets can be sent. Eg. Issuing a card.

SUBNETS|GET

GET requests on /users/userid/nodes/nodeid/subnets can be sent. Eg. View all cards issued to the user.

SUBNET|GET

GET requests on /users/userid/nodes/nodeid/subnets/subnetid can be sent. Eg. View a card.

SUBNET|PATCH

PATCH requests on /users/userid/nodes/nodeid/subnets/subnetid can be sent. Eg. Activating a card.

STATEMENTS|GET

GET requests on /users/userid/nodes/nodeid/statements can be sent. Eg. Viewing all statements associated with a node.

STATEMENT|GET

GET requests on /users/userid/nodes/nodeid/statements/statementid can be sent. Eg. Viewing a statement.

STATEMENTS|POST

POST requests on /users/userid/nodes/nodeid/statements can be sent. Eg. Generating an AdHoc statement.

CONVERSATIONS|POST

Currently scope in internal testing. More to come later.

CONVERSATIONS|GET

Currently scope in internal testing. More to come later.

CONVERSATION|GET

Currently scope in internal testing. More to come later.

CONVERSATION|PATCH

Currently scope in internal testing. More to come later.

MESSAGES|POST

Currently scope in internal testing. More to come later.

MESSAGES|GET

Currently scope in internal testing. More to come later.

MESSAGE|GET

Currently scope in internal testing. More to come later.

MESSAGE|PATCH

Currently scope in internal testing. More to come later.

Users

The users resource is used to create personal, joint or business user accounts. A user resource stores and managers user's KYC and authentication information. No bank account level details are stored on the object.

User Creation and KYC Submission

The user creation process allows you to create a user and add KYC ("Know Your Customer"). The required KYC is based on the requirements listed in your spec sheet. Please see below for details on the user creation process.

Recommended Flow

This call allows you create a user with the required KYC, as listed in your spec sheet. Please note that because KYC is processed asynchronously, we recommend that you submit all KYC in the same call as you create the user.

If you need to supply multiple base documents (as is the case for business or joint accounts), please supply a unique email/phone combination. This is because the base document ID is a hash of the email/phone, so duplicates will overwrite the existing base document.

If the user has SEND-AND-RECEIVE permissions, all documents were processed successfully.

If the user does not have SEND-AND-RECEIVE permissions, all documents may not have processed successfully or the user may be a potential match in a sanctions list.

For the latter, check the user's watchlists flag to determine if the user was flagged as a possible match by Synapse's KYC verification system.

If the flag's value is SOFT_MATCH|PENDING_UPLOAD, you will need to upload a government ID (GOVT_ID) to allow either for our KYC verification system or for our compliance team to recheck the user.

If the flag's value is SOFT_MATCH you will need to wait for the results of a compliance check.

KYC Speed

We typically process and verify KYC within a couple of seconds. However, this can vary, depending on traffic, number and size of documents submitted. If all documentation was successfully processed we will give the user SEND-AND-RECEIVE permissions (i.e. the ability to create nodes, and originate and receive transactions).

Please note that in instances where a Physical Document requires manual verification, the document will stay in SUBMITTED|REVIEWING for up-to 2 full business day. These instances can be reduced if the image is clear, with all corners visible in case of a document with legible text. In case of videos, by ensuring that the video is clear with ample light and audio is clear and without distortion or disturbance.

Further SSN Verification Lag

Because we verify SSNs by making an immediate initial verification followed by a more in-depth verification with the IRS in up to 2 full business days. So there will be some instances where the SSN will return back as SUBMITTED|VALID initially and later transition to SUBMITTED|INVALID.

In instances where the SSN returns as SUBMITTED|INVALID, the user will be able to either upload their valid SSN (upto two more times) or an SSN card for further review and approval.

KYC Best Practices

Always Build a User Interface to Collect Government ID

Although we might not require government ID for a specific product we recommend to always build the user interface. As stated above, should a user be flagged on one of our sanction lists we will require the submission of a government ID.

Use Our Address Verification API Call

Provide Accurate IP Address of The User on API Call Headers

Providing an accurate IP address of the user helps us and platforms combat fraud, and creating transactions from to/from/within sanctioned countries. Occasionally, certain platforms will submit their own IP on the API call header, we recommend not do so for the above described reasons.

Avoiding Race Conditions

To avoid race conditions for subsequent patch calls to users, nodes, and subnets, please consider doing one of the following:

  • adding a 4-5 second delay

  • waiting for a webhook response

  • adding all the document information into one patch or post call.

How We Validate KYC

Base docs and virtual documents are validated through public and private databases and other APIs that we have integrated with. Meanwhile, physical documents, such as government IDs, are validated through our proprietary software, which includes:

  • Image rotation, cropping, and enhancement

  • Facial detection

  • OCR on certain text fields to be verified against base document values (such as name and DOB).

Address

We validate addresses submitted both internally and externally through the use of external vendors to verify addresses. Addresses are a crucial part of our base documentation and fulfilling KYC/KYB requirements during onboarding. Furthermore, valid address inputs are important as they are used for things such as mailing account balances in case of account abandonment or termination.

Address Requirements:

  • Physical Addresses Only: We currently only accept current physical addresses. Examples of acceptable addresses include residential or business addresses. PO Box addresses are not accepted and will be automatically marked as invalid.

Address Validation Process:

  • Verification: Every submitted address undergoes a rigorous verification process for accuracy and completeness, using both internal checks and external verification through our vendor partners.

Invalid Address Handling: If a PO Box address is submitted, it will be flagged as invalid. The API response for such cases will include an error message in the id_score_meta response field: invalid_physical_address -- Cannot use PO Box for physical address field. Please provide a valid physical address. This message is found under the reason key. The same error message will appear under the address_input_error key in the ADDRESS meta object.

International Phone Numbers

For international phone numbers to properly validate, the number must be of the form:

+[country code][national number]

The + sign is required.

Social Security and Tax Identification Numbers

Social Security Numbers (SSN) are initially verified with W-9 certification by the users and checked against additional databases to ensure they are not associated with a deceased individual. Furthermore, every 24 hours we will verify SSNs directly with the IRS. It is because of this lag that we might require further submission of a Social Security card up to 24 hours after initial KYC was submitted. For users submitting passports issued in the United States of America, verification of a Social Security Number is also required. This is regardless of the user's country of residence.

Employer Identification Number (EIN) & Tax Identification Number (TIN)

Employer Identification Numbers (EINs) and other tax IDs are validated against information provided to Synapse when available. We typically require an EIN letter issued by the IRS or similar document (e.g. 147c). The value on the physical EIN letter will be verified against the virtual tax ID value entered, and we will also perform checks to confirm the veracity of the document itself.

Physical Documents

Duplicate Users

We will close duplicate user accounts within the platform’s environment, as this practice helps mitigate widespread fraud.

We perform basic duplicate user checks based on user data that generally should be able to uniquely identify users within the same CIP tag. These checks include:

  • Combination of Name + Date of Birth (DOB)

  • Combination of Name + Driver's License Number (DLN)

  • Combination of Name + Physical Address

  • Combination of Name + Email Address

  • Social Security Number (SSN)

The new simplified duplicate user account logic will prioritize the latest user account (i.e. keep that user open while closing others), determined by taking the most recent date among the following:

  • the most recent user account creation date (i.e. date user joined the Platform)

  • the most recent node creation date (please note that nodes older than 92 days will be ignored)

  • the most recent transaction date (please note that transactions older than 92 days will be ignored)

ID Score

Enhancements to our KYC Verification

Sanctions Lists Explained

Synapse will run all users through our sanctions screening lists to comply with the requirements set forth in the Bank Secrecy Act, aimed to avoid facilitating transactions on behalf of sanctioned individuals, sanctioned entities, and/or wanted criminals. We will asynchronously run the KYC of each user through sanctions lists as well as additional screenings (e.g. FBI most wanted databases).

Our screenings lists are continuously updated to reflect changes in real-time.

The first step of the screening process is automated, based on controls in our KYC verification system that automatically flag potential matches. These soft matches (watchlists : SOFT_MATCH) are manually reviewed by members of Synapse's compliance team who will assess the validity of the alert. Please note that upload of a government ID (GOVT_ID) may be required before a full compliance check can occur (watchlists : SOFT_MATCH|PENDING_UPLOAD). Our compliance team will then determine if the document that triggered a user's soft match is either a true sanctions list match (MATCH) or a false positive (FALSE_POSITVE). If the the compliance team determines that the flag was a false positive, the user will be given SEND-AND-RECEIVE permissions and should be able to transact.

Enhanced Due Diligence Process

The Importance of KYC

The collection of KYC documentation from end users is an important step in the on-boarding process. This not only helps facilitate compliance with the Bank Secrecy Act, but also helps prevent account takeovers and fraudulent user activity. The identifying documents collected for both platforms and individuals helps us understand who our customers are, the nature of their relationship with us, and their expected activity. Different products and limits will have different KYC requirements because the underlying risks can vary greatly. We encourage platforms to collect more KYC than our minimum requirements.

This page (and its related sub-pages) are not intended to outline a Customer Identification Program (CIP), or set forth minimal KYC requirements (which will be detailed in your spec sheet), but rather to explain what we do with the information we collect.

Please note, although we continually strive to prevent fraud at any level, we do not and cannot guarantee a fraud-free product. We actively encourage our platforms to take the necessary steps to mitigate fraud, as the platforms will still be liable for user fraud and negative balances incurred as a result of fraudulent activity.

KYC FAQs

Can You Require Less KYC in Special Circumstances?

Is There an Unusual Activity Report (UAR) Escalation Process?

While Synapse does monitor for unusual activity to assist our partner banks in their compliance with the Bank Secrecy Act reporting requirements, Synapse does not file SARs directly with FinCEN. Any platforms registered as MSBs, or otherwise required to file SARs (registered broker dealers) should remain vigilant in their reporting obligations. We do, however, encourage our platforms to report instances of fraud and or suspicious activity to Synapse for further review; our compliance team is equipped to perform further investigation.

Can you On-Board Foreign Users?

We have the capability to on-board foreign users, if certain conditions are met. In these cases we will work with the platform to define KYC requirements that take into account the documentation those users have available but that also fulfill the security needs of KYC collection.

How Are Sanctioned Countries Managed to Ensure No Transactions To/From/Within Those Countries Are Processed?

We block sanctioned countries automatically on our end both at the transaction level and the user address level. We continuously update this list. We recommend platforms also perform their own monitoring.

How Does Synapse Retain Customer and User Data?

Testing on UAT

Please do not submit real KYC in sandbox. You cannot verify real identities and document information in sandbox.

Base Documents

With the exception of addresses test base document requirements are non-rigorous. Any value following the appropriate format for the specific document (Ex. name@email.com, phone: 000.000.0000) will be accepted.

Addresses

It is mandatory to have an up-to-date physical address for all users, as PO BOXES are not accepted for the ADDRESS document type. A valid USPS mailable address is required for all transactions and communications. This ensures compliance with our KYC/KYB requirements and facilitates direct and secure communication.

Value

Result

123 Fail Address, Fail City, FS 00000

Supplied address is invalid / Unable to verify address

1 Market Street Suite 1000, San Francisco, CA 94105

Validation is successful

325 S Santa Claus Ln North Pole, AK 99705

Validation successful. Will trigger an AVS exception when attempting to create an INTERCHANGE-US node (i.e. when attempting to link an external card in Sandbox).

Virtual Documents

Value

Result

2222

Validation Successful

Any other value

Validation Fails

Physical Documents

Value

Result

data:image/invalid;base64,SUQs==

Validation Fails

Any other value

Validation Successful

Social Documents

Type

Value

Result

EMAIL_2FA

123456

Validation Succesful

PHONE_NUMBER_2FA

123456

Validation Succesful

EMAIL

invalid@gmail.com

Validation Fails

IP

255.255.255.0

Validation Fails

FACEBOOK

https://www.facebook.com/invalid

Validation Fails

LINKEDIN

https://www.linkedin.com/invalid

Validation Fails

TWITTER

https://twitter.com/invalid

Validation Fails

PHONE_NUMBER

541-754-3010

Validation Fails

User Authentication

Fingerprint

Validation PIN

static_pin

123456

ID Score

Email

ID Score

Trust Score

Email containing @testlowidscore.com

0.2

Does not support

Email containing @lowtrustlevel.com

0.2

low

Email containing@medtrustlevel.com

0.6

med

Any other Email

0.9

high

Realtime SSN

Value

Failure Reason

9000

invalid_tin|not_issued

2225

invalid_tin|name_mismatch

0010

invalid_tin|duplicate_request

6666

invalid_tin|dmf

2220

invalid_tin|info_mismatch

2800

invalid_tin|reason_unknown

0005

invalid_tin|missing_info

Create OAuth Key

OAuth Details

Key
Type
Required
Description

refresh_token

String

Required during POST

Token used to generate an OAuth Object.

scope

Array of Strings

Required during POST

Fingerprints

As fingerprints are required for OAuth key generation calls, there are options to consider related to the users fingerprint.

Key
Type
Required
Description

is_active

Boolean

Optional

Will execute the MFA flow, to allow changing of is_protected fingerprint value.

is_protected

Boolean

Optional (Requires is_active:true)

OAuth

POST https://api.synapsefi.com/v3.1/oauth/:user_id

This endpoint allows you to generate an OAuth token for a specific user so that you can perform necessary actions on behalf of the user.

Path Parameters

Name
Type
Description

user_id

string

ID of the user you wish to generate an OAuth token for.

Headers

Name
Type
Description

X-SP-USER

string

OAuth key and device fingerprint of the user separated by a pipe. In this API call, only the device fingerprint is required.

X-SP-USER-IP

string

IP Address of the user device.

X-SP-GATEWAY

string

Your Client ID and Secret separated by a pipe.

Request Body

Name
Type
Description

validation_pin

string

In case of MFA verification, the code delivered to the phone_number.

phone_number

string

Phone number where the MFA code will be sent in an instance of a new fingerprint registration.

scope

array

Array of Scopes the OAuth key will allow. Go to Possible Scopes to learn more.

refresh_token

string

Refresh token associated with the user.

{
    "client_id": "589acd9ecb3cd400fa75ac06",
    "client_name": "SynapseFi",
    "expires_at": "1607975765",
    "expires_in": "7200",
    "oauth_key": "oauth_CA1PJ45ILl2kyhaKGbNgntDQHwe6EifOsvz807ZV",
    "refresh_expires_in": 9,
    "refresh_token": "refresh_ydA5vGjnbHh2SipakwIMJe0TUVmKg7Dt8rBC6N1R",
    "scope": [
        "USER|PATCH",
        "USER|GET",
        "NODES|POST",
        "NODES|GET",
        "NODE|GET",
        "NODE|PATCH",
        "NODE|DELETE",
        "TRANS|POST",
        "TRANS|GET",
        "TRAN|GET",
        "TRAN|PATCH",
        "TRAN|DELETE",
        "SUBNETS|POST",
        "SUBNETS|GET",
        "SUBNET|GET",
        "SUBNET|PATCH",
        "STATEMENTS|GET",
        "STATEMENT|GET",
        "STATEMENTS|POST",
        "CONVERSATIONS|POST",
        "CONVERSATIONS|GET",
        "CONVERSATION|GET",
        "CONVERSATION|PATCH",
        "MESSAGES|POST",
        "MESSAGES|GET"
    ],
    "user_id": "5faa6da8f8db933dac59bdc5"
}
{
    "error": {
        "en": "Fingerprint not registered. Please perform the MFA flow."
    },
    "error_code": "10",
    "http_code": "202",
    "phone_numbers": [
        "901.111.1111"
    ],
    "success": false
}
{
    "error_code": "10",
    "http_code": "202",
    "message": {
        "en": "MFA sent to 901.942.8167."
    },
    "success": true
}
{
    "error": {
        "code": "invalid_fingerprint",
        "en": "Fingerprint not registered."
    },
    "error_code": "300",
    "http_code": "401",
    "success": false
}

Example Request

POST /v3.1/oauth/5faa6da8f8db933dac59bdc5 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: |e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "refresh_token": "refresh_ydA5vGjnbHh2SipakwIMJe0TUVmKg7Dt8rBC6N1R",
  "scope": [
    "USER|PATCH",
    "USER|GET",
    "NODES|POST",
    "NODES|GET",
    "NODE|GET",
    "NODE|PATCH",
    "NODE|DELETE",
    "TRANS|POST",
    "TRANS|GET",
    "TRAN|GET",
    "TRAN|PATCH",
    "TRAN|DELETE",
    "SUBNETS|POST",
    "SUBNETS|GET",
    "SUBNET|GET",
    "SUBNET|PATCH",
    "STATEMENTS|GET",
    "STATEMENT|GET",
    "STATEMENTS|POST",
    "CONVERSATIONS|POST",
    "CONVERSATIONS|GET",
    "CONVERSATION|GET",
    "CONVERSATION|PATCH",
    "MESSAGES|POST",
    "MESSAGES|GET"
  ]
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/oauth/5faa6da8f8db933dac59bdc5' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: |e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "refresh_token":"refresh_ydA5vGjnbHh2SipakwIMJe0TUVmKg7Dt8rBC6N1R",
    "scope":[
        "USER|PATCH",
        "USER|GET",
        "NODES|POST",
        "NODES|GET",
        "NODE|GET",
        "NODE|PATCH",
        "NODE|DELETE",
        "TRANS|POST",
        "TRANS|GET",
        "TRAN|GET",
        "TRAN|PATCH",
        "TRAN|DELETE",
        "SUBNETS|POST",
        "SUBNETS|GET",
        "SUBNET|GET",
        "SUBNET|PATCH",
        "STATEMENTS|GET",
        "STATEMENT|GET",
        "STATEMENTS|POST",
        "CONVERSATIONS|POST",
        "CONVERSATIONS|GET",
        "CONVERSATION|GET",
        "CONVERSATION|PATCH",
        "MESSAGES|POST",
        "MESSAGES|GET"
    ]
}'

Update User

Please note that both POST and PATCH calls on the user document perform various asynchronous operations. So it's not recommended to make subsequent POST and then PATCH requests on the same user document as that can lead to various race conditions. We recommend submitting all documents at once vs performing subsequent operations on the same document.

User

PATCH https://api.synapsefi.com/v3.1/users/:user_id

This endpoint allows you to create a user document.

Headers

Name
Type
Description

X-SP-USER

string

OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fd7acfd8677040053ad486d",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d"
        }
    },
    "account_closure_date": null,
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "documents": [
        {
            "entity_scope": "Arts & Entertainment",
            "entity_type": "M",
            "id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
            "id_score": null,
            "is_active": true,
            "name": "Test User",
            "permission_scope": "UNVERIFIED",
            "physical_docs": [
                {
                    "document_type": "GOVT_ID",
                    "id": "6eccfe586819891542148c4d0f34692456e1013f936b2a06dc3533e498f04649",
                    "last_updated": 1607973508430,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "GOVT_ID_BACK",
                    "id": "968cdc737a7ea86b32f2068e96ed4cf2bdb3587237255c87dbe5808ffc52f1d5",
                    "last_updated": 1607973508618,
                    "status": "SUBMITTED|REVIEWING"
                }
            ],
            "required_edd_docs": [],
            "social_docs": [
                {
                    "document_type": "IP",
                    "id": "28d9177b22c127d9a51d8903893864accf6e553ac326704a4c0d585eaad2516a",
                    "last_updated": 1607973508963,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "ADDRESS",
                    "id": "c615c761d68c578a98fde8e73c490df405ff5d5e34fc11f029660d7e9743df21",
                    "last_updated": 1607973509058,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "EMAIL",
                    "id": "2c45158f6431ca874bbe82f63d5905567854dde4d8b81539944e5779e5eee741",
                    "last_updated": 1607973508501,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "DATE",
                    "id": "2b52edae636ca2fbe12ab1b08a344d381dabc3d2b92844cf7a8d8b6052b26d8e",
                    "last_updated": 1607973509079,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "PHONE_NUMBER",
                    "id": "fda60784d6375bc44edafaaeae149626c4c13dcb92e85a2a7a00eec2cdfd2b6f",
                    "last_updated": 1607973508587,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "MAILING_ADDRESS",
                    "id": "6f819c2ed951bb4ada08269582055a81908794e5db4522feb74918641cc7bfd9",
                    "info": {
                        "address_care_of": "Some User",
                        "address_city": "SAN FRANCISCO",
                        "address_country_code": "US",
                        "address_postal_code": "94105",
                        "address_street": "101 2ND ST STE 1500",
                        "address_subdivision": "CA"
                    },
                    "last_updated": 1607973508486,
                    "status": "SUBMITTED|VALID"
                }
            ],
            "virtual_docs": [
                {
                    "document_type": "TIN",
                    "id": "a55cc12f46e8091f741b978d5fa556b2f8772a75007a82aae10a2fd810f644cb",
                    "last_updated": 1607973508424,
                    "status": "SUBMITTED|REVIEWING"
                }
            ],
            "watchlists": "NO_MATCH"
        }
    ],
    "emails": [],
    "extra": {
        "cip_tag": 1,
        "date_joined": 1607970040391,
        "extra_security": false,
        "is_business": false,
        "is_trusted": false,
        "last_updated": 1607973507271,
        "public_note": null,
        "supp_id": "122eddfgbeafrfvbbb"
    },
    "flag": "NOT-FLAGGED",
    "flag_code": null,
    "is_hidden": false,
    "legal_names": [
        "Test User"
    ],
    "logins": [
        {
            "email": "test@synapsepay.com",
            "scope": "READ_AND_WRITE"
        }
    ],
    "permission": "UNVERIFIED",
    "permission_code": null,
    "phone_numbers": [
        "901.942.8167"
    ],
    "photos": [],
    "refresh_token": "refresh_EXexC9GsR4o35jO7lIrKhWVcZv6PmAzYpQfFtU0i",
    "watchlists": "NO_MATCH"
}
{
    "error": {
        "code": "missing_client_credentials",
        "en": "Client credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Add a new Base Document

PATCH /v3.1/users/5fd7acfd8677040053ad486d HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "documents": [
        {
            "email": "test@test.com",
            "phone_number": "901.111.1111",
            "ip": "::1",
            "name": "Test User",
            "alias": "Test",
            "entity_type": "M",
            "entity_scope": "Arts & Entertainment",
            "day": 2,
            "month": 5,
            "year": 1989,
            "address_street": "1 Market St.",
            "address_city": "SF",
            "address_subdivision": "CA",
            "address_postal_code": "94105",
            "address_country_code": "US",
            "virtual_docs": [
                {
                    "document_value": "2222",
                    "document_type": "TIN",
                    "meta": {
                        "country_code": "US"
                    }
                }
            ],
            "physical_docs": [
                {
                    "document_value": "data:image/gif;base64,SUQs==",
                    "document_type": "GOVT_ID",
                    "meta": {
                        "country_code": "US",
                        "state_code": "CA"
                    }
                },
                {
                    "document_value": "data:image/gif;base64,SUQs==",
                    "document_type": "GOVT_ID_BACK",
                    "meta": {
                        "country_code": "US",
                        "state_code": "CA"
                    }
                }
            ],
            "social_docs": [
                {
                    "document_value": "101 2nd St. STE 1500 SF CA US 94105",
                    "document_type": "MAILING_ADDRESS",
                    "meta": {
                        "address_street": "101 2nd St STE 1500",
                        "address_city": "SF",
                        "address_subdivision": "CA",
                        "address_postal_code": "94105",
                        "address_country_code": "US",
                        "address_care_of": "Some User"
                    }
                }
            ]
        }
    ]
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "documents": [
        {
            "email": "test@test.com",
            "phone_number": "901.111.1111",
            "ip": "::1",
            "name": "Test User",
            "alias": "Test",
            "entity_type": "M",
            "entity_scope": "Arts & Entertainment",
            "day": 2,
            "month": 5,
            "year": 1989,
            "address_street": "1 Market St.",
            "address_city": "SF",
            "address_subdivision": "CA",
            "address_postal_code": "94105",
            "address_country_code": "US",
            "virtual_docs": [
                {
                    "document_value": "2222",
                    "document_type": "TIN",
                    "meta": {
                        "country_code": "US"
                    }
                }
            ],
            "physical_docs": [
                {
                    "document_value": "data:image/gif;base64,SUQs==",
                    "document_type": "GOVT_ID",
                    "meta": {
                        "country_code": "US",
                        "state_code": "CA"
                    }
                },
                {
                    "document_value": "data:image/gif;base64,SUQs==",
                    "document_type": "GOVT_ID_BACK",
                    "meta": {
                        "country_code": "US",
                        "state_code": "CA"
                    }
                }
            ],
            "social_docs": [
                {
                    "document_value": "101 2nd St. STE 1500 SF CA US 94105",
                    "document_type": "MAILING_ADDRESS",
                    "meta": {
                        "address_street": "101 2nd St STE 1500",
                        "address_city": "SF",
                        "address_subdivision": "CA",
                        "address_postal_code": "94105",
                        "address_country_code": "US",
                        "address_care_of": "Some User"
                    }
                }
            ]
        }
    ]
}'

Update an Existing Base Document

PATCH /v3.1/users/5fd7acfd8677040053ad486d HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "documents": [
        {
            "id":"2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
            "email": "test@test.com",
            "phone_number": "901.111.1111",
            "virtual_docs": [
                {
                    "id":"a55cc12f46e8091f741b978d5fa556b2f8772a75007a82aae10a2fd810f644cb",
                    "document_value": "2222",
                    "document_type": "TIN",
                    "meta": {
                        "country_code": "US"
                    }
                }
            ],
            "physical_docs": [
                {
                    "id":"6eccfe586819891542148c4d0f34692456e1013f936b2a06dc3533e498f04649",
                    "document_value": "data:image/gif;base64,SUQs==",
                    "document_type": "GOVT_ID",
                    "meta": {
                        "country_code": "US",
                        "state_code": "CA"
                    }
                }
            ],
            "social_docs": [
                {
                    "id":"6f819c2ed951bb4ada08269582055a81908794e5db4522feb74918641cc7bfd9",
                    "document_value": "101 2nd St. STE 1500 SF CA US 94105",
                    "document_type": "MAILING_ADDRESS",
                    "meta": {
                        "address_street": "101 2nd St STE 1500",
                        "address_city": "SF",
                        "address_subdivision": "CA",
                        "address_postal_code": "94105",
                        "address_country_code": "US",
                        "address_care_of": "Some User"
                    }
                }
            ]
        }
    ]
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "documents": [
        {
            "id":"2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
            "email": "test@test.com",
            "phone_number": "901.111.1111",
            "virtual_docs": [
                {
                    "id":"a55cc12f46e8091f741b978d5fa556b2f8772a75007a82aae10a2fd810f644cb",
                    "document_value": "2222",
                    "document_type": "TIN",
                    "meta": {
                        "country_code": "US"
                    }
                }
            ],
            "physical_docs": [
                {
                    "id":"6eccfe586819891542148c4d0f34692456e1013f936b2a06dc3533e498f04649",
                    "document_value": "data:image/gif;base64,SUQs==",
                    "document_type": "GOVT_ID",
                    "meta": {
                        "country_code": "US",
                        "state_code": "CA"
                    }
                }
            ],
            "social_docs": [
                {
                    "id":"6f819c2ed951bb4ada08269582055a81908794e5db4522feb74918641cc7bfd9",
                    "document_value": "101 2nd St. STE 1500 SF CA US 94105",
                    "document_type": "MAILING_ADDRESS",
                    "meta": {
                        "address_street": "101 2nd St STE 1500",
                        "address_city": "SF",
                        "address_subdivision": "CA",
                        "address_postal_code": "94105",
                        "address_country_code": "US",
                        "address_care_of": "Some User"
                    }
                }
            ]
        }
    ]
}'

Delete an Existing Base Document

PATCH /v3.1/users/5fd7acfd8677040053ad486d HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "documents": [
        {
            "id":"2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
            "permission_scope":"DELETE_DOCUMENT"
        }
    ]
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "documents": [
        {
            "id":"2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
            "permission_scope":"DELETE_DOCUMENT"
        }
    ]
}'
//
//
//
//

Delete an Existing Sub Document

PATCH /v3.1/users/5fd7acfd8677040053ad486d HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "documents": [
    {
      "id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
      "social_docs": [
        {
          "id": "b5a4af45a00167bd44e43262ae89af7c1747ecb6b7292b3b9e92d8431f44e317",
          "document_value": "901-942-8167",
          "document_type": "DELETE_DOCUMENT"
        }
      ]
    }
  ]
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "documents": [
    {
      "id": "64b01b1bb5eb17ae27aec9cb486bdee2c83e28acd0f99b5f900ecedf44c00a17",
      "social_docs": [
        {
          "id": "4e8ffb81ab82dfd9f95341b9194bc430811a45782cf4ab4fa4e98b2eb4355782",
          "document_value": "4600 MUELLER BLVD APT 3005, AUSTIN, TX, US, 78723",
          "document_type": "DELETE_DOCUMENT"
        }
      ]
    }
  ]
}'
//
//
//
//

Update User Permissions

PATCH /v3.1/users/5fd7acfd8677040053ad486d HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "permission":"LOCKED",
  "permission_code":"KYC_FRAUD|BLOCKED_LIST"
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "permission":"LOCKED",
  "permission_code":"KYC_FRAUD|BLOCKED_LIST"
}'

Generate UBO Doc

Needed for Business Users Only.

UBO or Ultimate Beneficial Owner documents is used to declare who is the ultimate beneficial owner of a business or major shareholder.

Please note that both POST and PATCH calls on the user document perform various asynchronous operations. So it's not recommended to make subsequent POST and then PATCH requests on the same user document as that can lead to various race conditions. We recommend submitting all documents at once vs performing subsequent operations on the same document.

UBO

PATCH https://api.synapsefi.com/v3.1/users/:user_id/ubo

This endpoint allows you to create a user document.

Headers

Name
Type
Description

X-SP-USER

string

OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fd7acfd8677040053ad486d",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d"
        }
    },
    "account_closure_date": null,
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "documents": [
        {
            "entity_scope": "Arts & Entertainment",
            "entity_type": "M",
            "id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
            "id_score": null,
            "is_active": true,
            "name": "Test User",
            "permission_scope": "UNVERIFIED",
            "physical_docs": [
                {
                    "document_type": "GOVT_ID",
                    "id": "6eccfe586819891542148c4d0f34692456e1013f936b2a06dc3533e498f04649",
                    "last_updated": 1607973508430,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "GOVT_ID_BACK",
                    "id": "968cdc737a7ea86b32f2068e96ed4cf2bdb3587237255c87dbe5808ffc52f1d5",
                    "last_updated": 1607973508618,
                    "status": "SUBMITTED|REVIEWING"
                }
            ],
            "required_edd_docs": [],
            "social_docs": [
                {
                    "document_type": "IP",
                    "id": "28d9177b22c127d9a51d8903893864accf6e553ac326704a4c0d585eaad2516a",
                    "last_updated": 1607973508963,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "ADDRESS",
                    "id": "c615c761d68c578a98fde8e73c490df405ff5d5e34fc11f029660d7e9743df21",
                    "last_updated": 1607973509058,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "EMAIL",
                    "id": "2c45158f6431ca874bbe82f63d5905567854dde4d8b81539944e5779e5eee741",
                    "last_updated": 1607973508501,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "DATE",
                    "id": "2b52edae636ca2fbe12ab1b08a344d381dabc3d2b92844cf7a8d8b6052b26d8e",
                    "last_updated": 1607973509079,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "PHONE_NUMBER",
                    "id": "fda60784d6375bc44edafaaeae149626c4c13dcb92e85a2a7a00eec2cdfd2b6f",
                    "last_updated": 1607973508587,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "MAILING_ADDRESS",
                    "id": "6f819c2ed951bb4ada08269582055a81908794e5db4522feb74918641cc7bfd9",
                    "info": {
                        "address_care_of": "Some User",
                        "address_city": "SAN FRANCISCO",
                        "address_country_code": "US",
                        "address_postal_code": "94105",
                        "address_street": "101 2ND ST STE 1500",
                        "address_subdivision": "CA"
                    },
                    "last_updated": 1607973508486,
                    "status": "SUBMITTED|VALID"
                }
            ],
            "virtual_docs": [
                {
                    "document_type": "TIN",
                    "id": "a55cc12f46e8091f741b978d5fa556b2f8772a75007a82aae10a2fd810f644cb",
                    "last_updated": 1607973508424,
                    "status": "SUBMITTED|REVIEWING"
                }
            ],
            "watchlists": "NO_MATCH"
        }
    ],
    "emails": [],
    "extra": {
        "cip_tag": 1,
        "date_joined": 1607970040391,
        "extra_security": false,
        "is_business": false,
        "is_trusted": false,
        "last_updated": 1607973507271,
        "public_note": null,
        "supp_id": "122eddfgbeafrfvbbb"
    },
    "flag": "NOT-FLAGGED",
    "flag_code": null,
    "is_hidden": false,
    "legal_names": [
        "Test User"
    ],
    "logins": [
        {
            "email": "test@synapsepay.com",
            "scope": "READ_AND_WRITE"
        }
    ],
    "permission": "UNVERIFIED",
    "permission_code": null,
    "phone_numbers": [
        "901.942.8167"
    ],
    "photos": [],
    "refresh_token": "refresh_EXexC9GsR4o35jO7lIrKhWVcZv6PmAzYpQfFtU0i",
    "watchlists": "NO_MATCH"
}
{
    "error": {
        "code": "missing_client_credentials",
        "en": "Client credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Body Details

Key

Type

Required

Description

entity_info

Object

Yes

signer.document_id

String

Yes

signer.relationship_to_entity

String

Yes

Relationship of the signer with the entity. Eg. CEO, CRO, etc.

compliance_contact.document_id

String

Yes

compliance_contact.relationship_to_entity

String

Yes

Relationship of the compliance contact with the entity. Eg. CEO, CCO, etc.

primary_controlling_contact.document_id

String

Yes

primary_controlling_contact.relationship_to_entity

String

Yes

Relationship of the primary controlling contact with the entity. Eg. CEO, CCO, etc.

owners.document_id

String

Yes

owners.title

String

Yes

Relationship of the owner with the entity. Eg. CEO, CCO, etc.

owners.ownership

Number

Yes

Percentage ownership of the owner.

attested*

boolean

Yes

Certification and Agreement to Notify See below

  • *attested signifies the following statement is true: I certify that the following information was submitted to Platform for all beneficial owners (holding 25% or more ownership) and controlling persons & executives:

    • US Person(s): SSN + US Government Issued Photo ID

    • Foreign Person(s): Tax Identification Number (if available) + Passport Number & Country of Issuance. In lieu of passport number, foreign persons may also provide an alien identification card number, or number and country of issuance of any other government issued photo ID evidencing nationality or residence.

Entity Info Details

Key

Type

Required

Description

document_id

String

Yes

cryptocurrency

Boolean

Yes

Set as false if business is not involved with cryptocurrency.

msb.federal

Boolean

Yes

Set as false if business does not have Money Transmission Licenses (MTL) in any states.

msb.states

List of String

Yes

List of states that business has Money Transmission Licenses (MTL) in.

public_company

Boolean

Yes

Set as false if business is not a public company.

majority_owned_by_listed

String

Yes

Set as false if business is not majority owned (50% or more) by a public company.

registered_SEC

String

Yes

Set as false if business is not registered with U.S. Securities and Exchange Commission (SEC).

regulated_financial

String

Yes

Set as false if business is not a regulated financial company.

gambling

String

Yes

Set as false if business is not involved with the internet gambling business.

Example Request

PATCH /v3.1/users/5fd7acfd8677040053ad486d/ubo HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
   "entity_info": {
      "cryptocurrency": true,
      "msb": {
         "federal": true,
         "states": ["AL"]
      },
      "public_company": false,
      "majority_owned_by_listed": false,
      "registered_SEC": false,
      "regulated_financial": false,
      "gambling": false,
      "document_id": "0162ac7bf11e873b33f3718c200999e341f6ff8e89482e8ed50e0d53a4d7cefa"
   },
   "signer": {
      "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
      "relationship_to_entity": "CEO"
   },
   "compliance_contact": {
      "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
      "relationship_to_entity": "CEO"
   },
   "primary_controlling_contact": {
      "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
      "relationship_to_entity": "CEO"
   },
   "owners": [
      {
         "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
         "title": "CEO",
         "ownership": 95
      }
   ],
   "attested": true
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/ubo' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Z3YDaGPNz2CWpgVck8L9jIxKR7odTSui5eFEt10X|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
   "entity_info": {
      "cryptocurrency": true,
      "msb": {
         "federal": true,
         "states": ["AL"]
      },
      "public_company": false,
      "majority_owned_by_listed": false,
      "registered_SEC": false,
      "regulated_financial": false,
      "gambling": false,
      "document_id": "0162ac7bf11e873b33f3718c200999e341f6ff8e89482e8ed50e0d53a4d7cefa"
   },
   "signer": {
      "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
      "relationship_to_entity": "CEO"
   },
   "compliance_contact": {
      "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
      "relationship_to_entity": "CEO"
   },
   "primary_controlling_contact": {
      "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
      "relationship_to_entity": "CEO"
   },
   "owners": [
      {
         "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
         "title": "CEO",
         "ownership": 95
      }
   ]
}'

Create User

Please note that both POST and PATCH calls on the user document perform various asynchronous operations. So it's not recommended to make subsequent POST and then PATCH requests on the same user document as that can lead to various race conditions. We recommend submitting all documents at once vs performing subsequent operations on the same document.

User

POST https://api.synapsefi.com/v3.1/users

This endpoint allows you to create a user document.

Headers

Name
Type
Description

X-SP-USER

string

OAuth key and device fingerprint, separated by a pipe. For this request OAuth can be left blank since X-SP-GATEWAY will be used for authentication. But device fingerprint is still required.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5faa6d8304707a86251024e6",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5faa6d8304707a86251024e6"
        }
    },
    "account_closure_date": null,
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "documents": [
        {
            "entity_scope": "Arts & Entertainment",
            "entity_type": "M",
            "id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
            "id_score": null,
            "is_active": true,
            "name": "Test User",
            "permission_scope": "UNVERIFIED",
            "physical_docs": [
                {
                    "document_type": "GOVT_ID_BACK",
                    "id": "d17b740787a4311e74c9f5f8e5edeb726911bfeb5ed050de74c12f427265c0f9",
                    "last_updated": 1605004672416,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "GOVT_ID",
                    "id": "1612b3afdc2c0a531165aea84725341492df40af3088037ba9ca6c2fad8e76cd",
                    "last_updated": 1605004672385,
                    "status": "SUBMITTED|REVIEWING"
                }
            ],
            "required_edd_docs": [],
            "social_docs": [
                {
                    "document_type": "EMAIL",
                    "id": "2c45158f6431ca874bbe82f63d5905567854dde4d8b81539944e5779e5eee741",
                    "last_updated": 1605004672431,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "PHONE_NUMBER",
                    "id": "fda60784d6375bc44edafaaeae149626c4c13dcb92e85a2a7a00eec2cdfd2b6f",
                    "last_updated": 1605004672441,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "ADDRESS",
                    "id": "c615c761d68c578a98fde8e73c490df405ff5d5e34fc11f029660d7e9743df21",
                    "last_updated": 1605004672472,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "IP",
                    "id": "28d9177b22c127d9a51d8903893864accf6e553ac326704a4c0d585eaad2516a",
                    "last_updated": 1605004672457,
                    "status": "SUBMITTED|REVIEWING"
                },
                {
                    "document_type": "DATE",
                    "id": "2b52edae636ca2fbe12ab1b08a344d381dabc3d2b92844cf7a8d8b6052b26d8e",
                    "last_updated": 1605004672588,
                    "status": "SUBMITTED|REVIEWING"
                }
            ],
            "virtual_docs": [
                {
                    "document_type": "SSN",
                    "id": "ee596c2896dddc19b76c07a184fe7d3cf5a04b8e94b9108190cac7890739017f",
                    "last_updated": 1605004672365,
                    "status": "SUBMITTED|REVIEWING"
                }
            ],
            "watchlists": "PENDING"
        }
    ],
    "emails": [],
    "extra": {
        "cip_tag": 1,
        "date_joined": 1605004671094,
        "extra_security": false,
        "is_business": false,
        "is_trusted": false,
        "last_updated": 1605004671094,
        "public_note": null,
        "supp_id": "122eddfgbeafrfvbbb"
    },
    "flag": "NOT-FLAGGED",
    "flag_code": null,
    "is_hidden": false,
    "legal_names": [
        "Test User"
    ],
    "logins": [
        {
            "email": "test@synapsepay.com",
            "scope": "READ_AND_WRITE"
        }
    ],
    "permission": "UNVERIFIED",
    "permission_code": null,
    "phone_numbers": [
        "901.111.1111"
    ],
    "photos": [],
    "refresh_token": "refresh_fsUlnTdLVaXirmB0RuEDJzP9WyOSCIhF0543HQex",
    "watchlists": "PENDING"
}
{
    "error": {
        "code": "missing_client_credentials",
        "en": "Client credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

POST /v3.1/users HTTP/1.1
Host: https://uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: |e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

 {
  "logins": [
    {
      "email": "test@synapsepay.com",
      "password":"TestTest123$"
    }
  ],
  "phone_numbers": [
    "901.111.1111"
  ],
  "legal_names": [
    "Test User"
  ],
  "documents":[{
        "email":"test@test.com",
        "phone_number":"901.111.1111",
        "ip":"::1",
        "name":"Test User",
        "alias":"Test",
        "entity_type":"M",
        "entity_scope":"Arts & Entertainment",
        "day":2,
        "month":5,
        "year":1989,
        "address_street":"1 Market St.",
        "address_city":"SF",
        "address_subdivision":"CA",
        "address_postal_code":"94105",
        "address_country_code":"US",
        "virtual_docs":[{
            "document_value":"2222",
            "document_type":"TIN",
            "meta":{
                "country_code":"US"
            }
        }],
        "physical_docs":[{
            "document_value": "data:image/gif;base64,SUQs==",
            "document_type": "GOVT_ID",
            "meta":{
                "country_code":"US",
                "state_code":"CA"
            }
        },
        {
            "document_value": "data:image/gif;base64,SUQs==",
            "document_type": "GOVT_ID_BACK",
            "meta":{
                "country_code":"US",
                "state_code":"CA"
            }
        }],
        "social_docs":[{
            "document_value": "101 2nd St. STE 1500 SF CA US 94105",
            "document_type": "MAILING_ADDRESS",
            "meta":{
                "address_street":"101 2nd St STE 1500",
                "address_city":"SF",
                "address_subdivision":"CA",
                "address_postal_code":"94105",
                "address_country_code":"US",
                "address_care_of":"Some User"
            }
        }]
    }],
  "extra": {
    "supp_id": "122eddfgbeafrfvbbb",
    "cip_tag":1,
    "is_business": false
  }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: |e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw ' {
  "logins": [
    {
      "email": "test@synapsepay.com",
      "password":"TestTest123$"
    }
  ],
  "phone_numbers": [
    "901.111.1111"
  ],
  "legal_names": [
    "Test User"
  ],
  "documents":[{
        "email":"test@test.com",
        "phone_number":"901.111.1111",
        "ip":"::1",
        "name":"Test User",
        "alias":"Test",
        "entity_type":"M",
        "entity_scope":"Arts & Entertainment",
        "day":2,
        "month":5,
        "year":1989,
        "address_street":"1 Market St.",
        "address_city":"SF",
        "address_subdivision":"CA",
        "address_postal_code":"94105",
        "address_country_code":"US",
        "virtual_docs":[{
            "document_value":"2222",
            "document_type":"TIN",
            "meta":{
                "country_code":"US"
            }
        }],
        "physical_docs":[{
            "document_value": "data:image/gif;base64,SUQs==",
            "document_type": "GOVT_ID",
            "meta":{
                "country_code":"US",
                "state_code":"CA"
            }
        },
        {
            "document_value": "data:image/gif;base64,SUQs==",
            "document_type": "GOVT_ID_BACK",
            "meta":{
                "country_code":"US",
                "state_code":"CA"
            }
        }],
        "social_docs":[{
            "document_value": "101 2nd St. STE 1500 SF CA US 94105",
            "document_type": "MAILING_ADDRESS",
            "meta":{
                "address_street":"101 2nd St STE 1500",
                "address_city":"SF",
                "address_subdivision":"CA",
                "address_postal_code":"94105",
                "address_country_code":"US",
                "address_care_of":"Some User"
            }
        }]
    }],
  "extra": {
    "supp_id": "122eddfgbeafrfvbbb",
    "cip_tag":1,
    "is_business": false
  }
}'

Generate Refresh Token

Login

POST https://api.synapsefi.com/v3.1/oauth/:user_id/login

This endpoint allows you to generate a refresh token for the user linked to your client credentials.

Path Parameters

Name
Type
Description

user_id

string

ID of the user you wish to generate an OAuth token for.

Headers

Name
Type
Description

X-SP-USER

string

OAuth key and device fingerprint of the user separated by a pipe. In this API call, only the device fingerprint is required.

X-SP-USER-IP

string

IP Address of the user device.

X-SP-GATEWAY

string

Your Client ID and Secret separated by a pipe.

Request Body

Name
Type
Description

email

string

Email associated with the user login object.

password

string

Password associated with the same user login object.

{
    "_id": "5fd7acfe462ea84c7f58b822",
    "_v": 2,
    "change_in": 8,
    "client_id": "589acd9ecb3cd400fa75ac06",
    "client_name": "SynapseFi",
    "fp_registered": false,
    "is_active": true,
    "refresh_token": "refresh_EXexC9GsR4o35jO7lIrKhWVcZv6PmAzYpQfFtU0i",
    "scope": [
        "USER|PATCH",
        "USER|GET",
        "NODES|POST",
        "NODES|GET",
        "NODE|GET",
        "NODE|PATCH",
        "NODE|DELETE",
        "TRANS|POST",
        "TRANS|GET",
        "TRAN|GET",
        "TRAN|PATCH",
        "TRAN|DELETE",
        "SUBNETS|POST",
        "SUBNETS|GET",
        "SUBNET|GET",
        "SUBNET|PATCH",
        "STATEMENTS|GET",
        "STATEMENT|GET",
        "STATEMENTS|POST",
        "CONVERSATIONS|POST",
        "CONVERSATIONS|GET",
        "CONVERSATION|GET",
        "CONVERSATION|PATCH",
        "MESSAGES|POST",
        "MESSAGES|GET",
        "MESSAGE|GET",
        "MESSAGE|PATCH"
    ],
    "user_id": "5fd7acfd8677040053ad486d"
}
{
    "error": {
        "code": "invalid_username_password",
        "en": "Invalid username/password."
    },
    "error_code": "400",
    "http_code": "409",
    "success": false
}

Example Request

POST /v3.1/oauth/5fd7acfd8677040053ad486d/login HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: |e83cf6ddcf778e37bfe3d48fc78a6502062fc22
Content-Type: application/json

{
  "email": "test@synapsepay.com",
  "password":"test1234"
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/oauth/5fd7acfd8677040053ad486d/login' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: |e83cf6ddcf778e37bfe3d48fc78a6502062fc22' \
--header 'Content-Type: application/json' \
--data-raw '{
  "email": "test@synapsepay.com",
  "password":"test1234"
}'

Nodes

The idea behind this is quite simple: developers should be able to easily build around various liquidity accounts. Some hold deposits, some extend credit while some are external accounts that can be used for ACH, Wires, Checks etc.

Deposit Accounts

Credit Accounts

Payment Accounts

View all User Nodes

Get Nodes

GET https://api.synapsefi.com/v3.1/users/:user_id/nodes

This endpoint allows you to get all nodes linked to a user.

Query Parameters

Headers

Example Request

Update Node

Node

PATCH https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id

This endpoint allows you to create a node.

Path Parameters

Query Parameters

Headers

Update Node Status

Credit Account Specific Examples

Following are a few Credit specific update node examples:

Change Payment Node

Change Next Payment Date

Toggle Autopay

Terminate Revolving Loan

Please send the user their termination letter when terminating the loan. This can be found in the agreements value of the response.

ACH Specific Examples

Following are a few ACH specific update node examples:

Verify Micro Deposits

Micro-deposits are automatically initiated when a bank account is linked with Account/Routing, assuming the user's KYC is complete Within 1-2 business days, the user will see two small transactions (less than $1 each) on their bank account statement. The user must return to your application and submit the two micro-deposit amounts in any order. If the amounts are correct, the node will receive CREDIT-AND-DEBIT permissions.

Resend Micro Deposits

Please note that we set a limit of 3 micro-deposit attempts per ACH node. Any attempts past this limit will return a max_microdeposits_sent error.

Reauth Node

View Node

Node

GET https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id

This endpoint allows you to get a specific node document.

Path Parameters

Query Parameters

Headers

Example Request

Testing on UAT

ACH-US

Since ACH accounts can be linked two ways: either by supplying the account and routing number, or by supplying the bank login credentials, here are the best scenarios for both:

Bank Login Credentials

Testing Login Sync Errors in Sandbox

When adding a new node, append any of these values to the end of the password. When doing a force_refresh on the node, it will trigger the corresponding error.

Appending “_needs_relink” to the password (e.g. test1234_savings_needs_relink) will link a node that will return the 401/110 error message when you try doing a force_refresh. It falls in line with our current sandbox test values so you can add _needs_relink to the end of any of the passwords above.

Account Routing

Micro-Deposit Test Values

If a bank account is added with AC/RT numbers, we automatically send micro-deposits to the user's external bank account for verification. Here are the micro-deposit values for sandbox:

INTERCHANGE-US

Apple Pay Test Cards

WIRE-US

WIRE-INT

RPPS-US

CHECK-US

Any valid address will work for testing CHECK-US.

Create Node

Node

POST https://api.synapsefi.com/v3.1/users/:user_id/nodes

This endpoint allows you to create a node.

Path Parameters

Headers

Create Deposit Account

We require that you first generate a preview of the node agreement, display it to the user to get their consent and then create the account. To generate a preview, add "preview_only":true to the payload.

Create Cash Management Account

We require that you first generate a preview of the node agreement, display it to the user to get their consent and then create the account. To generate a preview, add "preview_only":true to the payload.

Create Credit Account

There are four types of credit accounts -- Repay, One-Time, Open and Revolving. Following are examples of opening all four:

Create Repay Account

We require that you first generate a preview of the node agreement, display it to the user to get their consent and then create the account. To generate a preview, add "preview_only":true to the payload.

Create One-Time Credit Account

We require that you first generate a preview of the node agreement, display it to the user to get their consent and then create the account. To generate a preview, add "preview_only":true to the payload.

If disbursement_node_id = reserve_node_id, no liquidity is needed in reserve_node_id to issue the loan. The enables you to build installment based credit building loans without needing an upfront capital commitment from the end-user.

You may also charge an initial fee for a one-time credit account by including a fee field within the interest object and ensuring payment_node_id is valid. However, the fee must not cause the calculated apr to exceed the state limits.

Create Open Credit Account

We require that you first generate a preview of the node agreement, display it to the user to get their consent and then create the account. To generate a preview, add "preview_only":true to the payload.

Create Revolving Credit Account

We require that you first generate a preview of the node agreement, display it to the user to get their consent and then create the account. To generate a preview, add "preview_only":true to the payload.

Booking an Adverse Action

Create ACH Account

There are two ways to link an ACH account with us:

Method #2: Link via Account Aggregation (with a 3rd Party Vendor) To link an ACH account using a 3rd party vendor, supply data from the 3rd party vendor in the following format. Please note that you will require 3 months minimum of the user's transaction data in order to skip micro-deposits. Please designate negative values with "debit" : true/false (boolean).

Create Interchange Account

Address Validation (AVS)

To enable additional address validation, please make a request via support or your growth manager, for an update to your platform configuration. AVS is configured per CIP tag. To fully utilize this service, you will need to provide:

The results of AVS validation include:

Create Wire Account

Create SWIFT Account

Create RPPS Account

Create Check Account

Allowed Document Types

Document Types

GET https://api.synapsefi.com/v3.1/users/document-types

This endpoint allows you to get and view all the avaliable document types.

Headers

Example Request

Cancel Transaction
Deposit Hub
funded
mobile wallet
shipped
virtual terminal
mobile wallet
shipped
virtual terminal

Unix timestamp (in ms) value of when the account will auto close. Only utilized in instances of a flagged account that needs to be closed. Go to to learn more.

CIP Tag associated with the user object. Go to to learn more.

The reason for user flag. Go to to learn more.

The current permission of the user object. Go to to learn more.

The reason for user flag. Go to to learn more.

Refresh token you will be using to the user.

Represents if the user is on a meaningful screenings list. Go to to learn more.

Ensure all KYC has been supplied and is marked as valid by us. Go to to learn more.

If this is an acceptable final permission, no additional steps needed. If you also wish to originate or authorize payments on behalf of the user, ensure all KYC has been supplied and is marked as valid by us. Go to to learn more.

User KYC review finished. User is allowed to operate the account as allowed by the spec sheet. Go to to learn more.

Unless your program is configured differently, all values except NO_MATCH and FALSE_POSITIVE will impact user permissions and will keep the as UNVERIFIED until further review.

We will automatically run sanctions screenings, you can poll GET user or use to be able to notified of the update.

Traverse through documents to see which base document is watchlists:SOFT_MATCH|PENDING_UPLOAD. If it's a business base doc, please upload a valid EIN_DOC. If individual base doc, please upload a valid GOVT_ID or DRIVER_LICENSE. Go to to learn more.

Lock user account for an appropriate . In this case that would beUNUSUAL_ACTIVITY|LEGAL_REQUEST.

Address city of the business location or individual's residence. If the user wishes to receive mail elsewhere, you can add that as a MAILING_ADDRESS social document. Go to to learn more. We recommend to prevent failure.

Desired scope for base document. Go to to learn more.

The key of the document you intend to submit. Go to to learn more.

The key of the document option you intend to submit. Go to to learn more.

The title of the document option you intend to submit. Go to to learn more.

Included for business user's business base document. Possible values: VALID, INVALID, REVIEWING. Go to to learn more.

Industry or profession of business or individual. Go to response section to see all the possible values.

Type of business or gender of the individual. Go to response section to see all the possible values.

Included for an individual's base document (either for business, joint or individual accounts). Value ranges from 0-1. Go to to learn more.

Included for an individual's base document (either for business, joint or individual accounts). Value can be low, med or high. Go to to learn more.

Permission scope of the base document. Go to to learn more.

Physical documents linked to the base document. Go to to learn more.

Documents required to decision a flagged user. Go to to learn more.

This object contains all the sanctions screenings lists the user has been run against. This object is just a detailed response that decides the value of watchlists. Our recommendation is not to pay attention to this field but just the watchlists key instead. Go to to learn more.

Represents if the document is on a meaningful screenings list. Go to to learn more.

Please note that not all sanctions lists will be appropriate for your use-case. Your spec sheet dictates which sanctions lists affect the . Go to to learn more.

Base Document is a soft or actual match on the screenings list. Final determination will happen at the level.

Type of virtual document being submitted. Go to response section to see all the possible values.

Status of the virtual document. Go to to learn more.

ISO Alpha-2 formatted Address country code of the issuing country of the virtual document. Go to response section to see which virtual documents require this field. This field will not be returned in any user responses.

Native government issued name or common name of the document type of issuing country of virtual document. eg for Brazil sole proprietors they may have a “CNPJ” number. This would be the meta.sub_type of BUS_REGISTRATION. Go to response section to see which virtual documents require this field. This field will not be returned in any user responses.

Type of social document being submitted. Go to response section to see all the possible values.

Status of the social document. Go to to learn more.

ISO Alpha-2 formatted Address country code of the issuing state of the virtual document. Go to response section to see which social documents require this field. This field will not be returned in any user responses.

ISO Alpha-2 formatted Address country code of the issuing country of the virtual document. Go to response section to see which social documents require this field. This field will not be returned in any user responses.

Type of physical document being submitted. Go to response section to see all the possible values. For additional details on passports click .

Value of the document. Physical documents must be encoded before being uploaded to our system. Please ensure that the image is clear, with all corners visible in case of a document with legible text. In case of videos, please ensure that the video is clear with ample light and audio is clear and without distortion or disturbance.

Status of the virtual document. Go to to learn more.

If the document status is SUBMITTED|INVALID, invalid_reasons describes the reasons for why the document was marked as invalid. Go to to learn more.

ISO Alpha-2 formatted state code of the issuing state of the physical document. Go to response section to see which physical documents require this field. This field will not be returned in any user responses.

ISO Alpha-2 formatted country code of the issuing country of the physical document. Go to response section to see which physical documents require this field. This field will not be returned in any user responses.

ID number associated with the physical document. Go to response section to see which physical documents require this field. This field will not be returned in any user responses.

Incorrect file type (e.g. not png, jpeg, jpg). Go to response section to see which file extensions are allowed per physical document.

Lock user account for an appropriate . In this case that would be KYC_FRAUD|FRAUDULENT_DOCS.

We will automatically or in rare instances, manually review [1] the document. You can poll GET user or use to get notified when the document is reviewed.

No. Default are all .

Scopes denote which API calls and actions the OAuth key is allowed to do. This field is worth customizing if you will be sending the OAuth key to the client device for certain actions reducing the damage a attack can do.

If you haven't done so already, to inform you when a user has been created, or permissions/statuses have changed.

Upon submitting KYC, the user's and statuses will change as documents get validated asynchronously.

To check for the former, look at the status of each submitted document and .

For more details about this process, please refer to .

After creating a user successfully, to perform actions for that user.

Please refer to the page for more details.

Physical documents are verified by our computer vision modules and are also periodically reviewed by the Synapse compliance and/or audit team. The manual audit may result from unusual or unexpected activity, or may be part of a regular sample audit to ensure that the documents provided to us fulfill the items listed in each platform’s spec sheet. The Synapse team may mark items “invalid” as appropriate should the document be determined to be insufficient. Please note that this may result in the user becoming unverified, it is important to ensure proper documents are provided to Synapse. Any document that does not have automated verification built will be marked as SUBMITTED on our system instead of SUBMITTED|VALID or SUBMITTED|INVALID. Go to to learn more.

Learn more about how to .

We return a weighted numerical score indicating our relative confidence in the captured KYC. For more information please refer to the .

We strive to always improve the quality of all our services. We are continuously launching enhancements for our KYC validation service and to our related micro-services. To keep track of these changes, then please look at .

For more details please go to .

In addition to automated processes for closing accounts due to and , we also have an enhanced due diligence (EDD) processes for flagging high-risk users for analysis, review, and closure.

A user subject to EDD review will be flagged (flag:FLAGGED) with a user flag code (flag_code) to indicate the reason the user was flagged (see to learn more). Along with this, if any additional documents are needed, you will see those show up under documents.required_edd_docs. The user will be expected to upload these documents to be able to unflag their account.

Please note, when a user is flagged for EDD, an account_closure_date is set as well. If an end-user fails to provide adequate documentation by that date, the account will be closed automatically. More details are provided under .

What KYC is required depends on which account types are being opened for your customers. We strive to keep the KYC burden as low as possible. Your KYC program is customized during the implementation process. If you are already a customer who wishes to further reduce the KYC requirements, please .

All users must accept Synapse's Privacy Policy which explains the data we collect and how we use such data. Synapse keeps aggregated and anonymized data for internal research and development, risk mitigation and machine learning purposes. Further information about how Synapse uses and stores its users’ data is available in .

To be able to generate a sample base64 string, you can go to . They make it very easy to generate a padded base64 string for any image. You can then use that base64 string to test with our APIs.

If you wish to automate testing , use the following values when creating a user to automate 2FA testing.

The following values can be used to trigger both EDD and Non-EDD flows for ID Score (See: ) on sandbox:

Please note the failure reasons and status codes below are only available on a and when Realtime SSN is included in your spec sheet.

Scopes denote which API calls and actions the OAuth key is allowed to do. This field is worth customizing if you will be sending the OAuth key to the client device for certain actions reducing the damage a attack can do.

Setting to true prevents a fingerprint from being removed once the is reached.

Go to to see all the required and optional body parameters allowed during user creation. Following are example requests:

Information about the business. Go to to learn more.

Document ID of the of the signer.

Document ID of the of the compliance contact.

Document ID of the of the primary controlling contact.

Document ID of the of the owner.

Document ID of the of the entity.

Go to to see all the required and optional body parameters allowed during user creation.

Verifying Addresses We validate addresses to ensure an address is mailable. Prior to submitting an address, we encourage you to . We also recommend that you use , the or similar tools to autocomplete addresses prior to verifying. This should reduce the risk of submitting improperly formatted addresses.

In most cases a refresh token is already present when you . In instances where a refresh token is not avaliable, it can be generated by using a Basic Auth by supplying the user's username and password. These combinations exist in the logins object of the user. Go to to learn more.

The node resource is used to create or link various types of liquidity accounts to the user. The purpose of this is to allow you to easily interface and build with , , asset or various .

The different accounts we offer have different characteristics, KYC requirements, regulatory restrictions, among other distinctions). This variety allows us to offer the best solution for each use case. To learn more, please go to product guide.

The different accounts we offer have different characteristics, KYC requirements, regulatory restrictions, among other distinctions). This variety allows us to offer the best solution for each use case. To learn more, please go to product guide.

We offer a variety of payment accounts, this allows us to provide you with the proper array of solutions unique to their respective use cases. Please refer to the pages of this section for more information on the general characteristics of our payment solutions and the specifics for each payment type. To learn more, please go to product guide.

Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description

Go to to see all the required and optional body parameters allowed during node updates. Following are some examples of most common update calls:

Go to and to learn more.

After Reauthorizing the ACH-US transaction node's status to CREDITand micro-deposits will be sent automatically. You will then need to change the node's status to CREDIT-AND-DEBIT.

Name
Type
Description
Name
Type
Description
Name
Type
Description

Please note that this is a subset of the cards provided by Apple (under "Test Cards for Apps and the Web" ).

Name
Type
Description
Name
Type
Description

Go to to see all the required and optional body parameters allowed during node creation. Following are a few examples of various nodes and how to create them:

In some instances, you will need to book in our system. Here is an example of how to do that:

Method #1: Link via Account/Routing Number May require if indicated in your spec sheet.

In the following example the card number and expiration date are encrypted. Go to to learn more.

Key
Type
Required
Description
Key
Type
Required
Description

Below is the minimum request body to create a WIRE-INT node, some countries will require additional information. Please refer to for other country specific required attributes.

In the following example the account number is encrypted. Go to to learn more.

Also go to to learn how to get biller_id.

Name
Type
Description
Subscribe to Webhooks
Create a User (with KYC)
View User
Issue OAuth Key
issue an OAuth key
Verify Address
manage duplicate users
ID Score page
our changelog
Synapse’s Privacy Policy
Base64 Image
user full dehydrate
User Object Details
User Object Details
Verify Address
Google Maps
USPS ZIP Code Lookup Tool
Deposit Hub
Credit Hub
Payment Accounts
permission
Intro to Spec Sheet
Possible Watchlists Values
permissions
sub-document
Sanctions Tiers and Watchlists Explained
Possible Sub-Document Status Values
Possible Watchlists Values
Possible Flag Codes
Possible Flag Codes
View a User
User Object Details
re-submit relevant documents
duplicate accounts
sanctions checks
contact us
2FA verification
ID Score
deposit
credit
payment accounts

type

string

Type of node you wish to query.

per_page

integer

Maximum documents to return per page. Default and max allowed is 20.

page

integer

Page number of the paginated request. Default is 1.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "error_code": "0",
    "http_code": "200",
    "limit": 20,
    "node_count": 3,
    "nodes": [
        {
            "_id": "5fd7e2b1039b95223d5f4fd4",
            "_links": {
                "self": {
                    "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd7e2b1039b95223d5f4fd4"
                }
            },
            "allowed": "CREDIT-AND-DEBIT",
            "allowed_status_code": null,
            "client": {
                "id": "589acd9ecb3cd400fa75ac06",
                "name": "SynapseFi"
            },
            "extra": {
                "note": null,
                "other": {
                    "access_token": "5fd7e2af04d29a00399532f7",
                    "micro_meta": {
                        "micro_attempts": 0,
                        "micro_sent_count": 0,
                        "skip_micro": false
                    },
                    "updated_on": 1608001792000
                },
                "supp_id": ""
            },
            "info": {
                "account_num": "8902",
                "address": "P.O. BOX 85139, RICHMOND, VA, US",
                "balance": {
                    "amount": "750.00",
                    "currency": "USD",
                    "updated_on": 1608001792000
                },
                "bank_code": "capone",
                "bank_hlogo": "https://cdn.synapsepay.com/bank_logos_v3p1/CapitalOne360_h.png",
                "bank_logo": "https://cdn.synapsepay.com/bank_logos_v3p1/CapitalOne360_v.png",
                "bank_long_name": "CAPITAL ONE  N A ",
                "bank_name": "CAPITAL ONE  N A ",
                "bank_url": "http://www.capitalone.com",
                "class": "SAVINGS",
                "match_info": {
                    "email_match": "match",
                    "name_match": "match",
                    "phonenumber_match": "no_match"
                },
                "name_on_account": " ",
                "nickname": "SynapsePay Test Savings Account - 8902",
                "routing_num": "0407",
                "type": "BUSINESS"
            },
            "is_active": true,
            "timeline": [
                {
                    "date": 1607983793123,
                    "note": "Node created."
                },
                {
                    "date": 1607983793993,
                    "note": "node_not_credit -- Unable to send micro deposits as node allowed is not CREDIT."
                }
            ],
            "type": "ACH-US",
            "user_id": "5fd7acfd8677040053ad486d"
        },
        {
            ...
        },
        {
            ...
        }
    ],
    "page": 1,
    "page_count": 1,
    "success": true
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
GET /v3.1/users/5fd7acfd8677040053ad486d/nodes?type=DEPOSIT-US&page=1&per_page=2 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_WFecuSPqxGgU027IRAjtOf35vrNCpQZE1DYohX9y|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes?type=DEPOSIT-US&page=1&per_page=2' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_WFecuSPqxGgU027IRAjtOf35vrNCpQZE1DYohX9y|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//

node_id

string

ID of the node.

user_id

string

ID of the user.

reauth

string

Set to YES if you wish to reauth a locked node. Currently only avaliable for ACH-US.

resend_micro

string

Set to YES if you wish to resend micro deposits.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "error_code": "0",
    "http_code": "200",
    "limit": 20,
    "node_count": 1,
    "nodes": [
        {
            "_id": "5fd7e43fe079bc3cc9c304fb",
            "_links": {
                "self": {
                    "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd7e43fe079bc3cc9c304fb"
                }
            },
            "allowed": "CREDIT-AND-DEBIT",
            "allowed_status_code": null,
            "client": {
                "id": "589acd9ecb3cd400fa75ac06",
                "name": "SynapseFi"
            },
            "extra": {
                "note": null,
                "other": {},
                "supp_id": ""
            },
            "info": {
                "agreements": [
                    {
                        "type": "NODE_AGREEMENT",
                        "url": "https://cdn.synapsepay.com/uploads/2020/12/14/n9o0LrdMmBITYQRKXgWFUS76k24eDZ8EGz5yP0jfHtC1hqaxup.pdf"
                    }
                ],
                "balance": {
                    "amount": 0.0,
                    "currency": "USD"
                },
                "bank_code": "EBT",
                "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
                "name_on_account": " ",
                "nickname": "My Deposit Account"
            },
            "is_active": true,
            "timeline": [
                {
                    "date": 1607984180124,
                    "note": "Node created."
                }
            ],
            "type": "DEPOSIT-US",
            "user_id": "5fd7acfd8677040053ad486d"
        }
    ],
    "page_count": 1,
    "success": true
}
{
    "error": {
        "code": "missing_client_credentials",
        "en": "Client credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "allowed":"LOCKED",
    "allowed_status_code":"USER_REQUESTED"
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "allowed":"LOCKED",
    "allowed_status_code":"USER_REQUESTED"
}'
//
//
//
//
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd906e520b3aa0bc5caee71 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "payment_node_id":"5fd91504cb0fca4d508af942"
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd906e520b3aa0bc5caee71' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "payment_node_id":"5fd91504cb0fca4d508af942"
}'
//
//
//
//
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd906e520b3aa0bc5caee71 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "next_payment":14
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd906e520b3aa0bc5caee71' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "next_payment":14
}'
//
//
//
//
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd906e520b3aa0bc5caee71 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "auto_pay":false
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd906e520b3aa0bc5caee71' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "auto_pay":false
}'
//
//
//
//
PATCH /v3.1/users/5bee5a51b68b62009b5ba59a/nodes/5bee5a89b95dfb00bfdc0a1b HTTP/1.1
Host: https://uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Td0nZBoqL6zghUyaAjsPuNYV8wQICH7OGbFRMf2m|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "allowed":"INACTIVE"
  "allowed_status_code": "ACCOUNT_CLOSED"
}
loan_id = "5bee11e7bab47500bc84a552"
body = {
  "next_payment":100
}

user.update_node(loan_id, body)
const loanNodeID = "5bee11e7bab47500bc84a552";
const body = {
  "next_payment":100
};

user.updateNode(loanNodeID, body);
$nodeid = '5bee11e7bab47500bc84a552';
$body = (object)[
   "next_payment" => 100
];
$user->update_node($nodeid, $body);
loan_id = "5bee11e7bab47500bc84a552"
body = {
  "next_payment":100
}

user.update_node(node_id: loan_id, payload: body)
nodeID := "5bee11e7bab47500bc84a552"
body := `{
  "next_payment":100
}`

data, err := user.UpdateNode(nodeID, body)
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "micro":[0.1,0.1]
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' 
--data-raw '{
  "micro":[0.1,0.1]
}'
//
//
//
//
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942?resend_micro=YES HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942?resend_micro=YES' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{}'
//
//
//
//
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942?reauth=YES HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942?reauth=YES' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{}'
//
//
//
//

node_id

string

ID of the node.

user_id

string

ID of the user.

tx_date_end

string

If performing force refresh this param can be used to specify the date range of transactions that should be pulled. Format: %Y-%m-%d.

tx_date_start

string

If performing force refresh this param can be used to specify the date range of transactions that should be pulled. Format: %Y-%m-%d.

force_refresh

string

Set to YES if you wish to refresh the ACH-US bank data. Only works for ACH accounts linked using Account Aggregation. Default is NO.

full_dehydrate

string

Set to YES if you wish to receive all node PII in the response. Default is NO.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fd91504cb0fca4d508af942",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942"
        }
    },
    "allowed": "LOCKED",
    "allowed_status_code": "USER_REQUESTED",
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "extra": {
        "note": null,
        "other": {
            "access_token": null,
            "micro_meta": {
                "micro_attempts": 0,
                "micro_sent_count": 1,
                "skip_micro": false
            },
            "updated_on": null
        },
        "supp_id": ""
    },
    "info": {
        "account_num": "2134",
        "address": "8001 VILLA PARK DRIVE, HENRICO, VA, US",
        "balance": {
            "amount": "0.00",
            "currency": "USD"
        },
        "bank_code": "bofa",
        "bank_hlogo": "https://cdn.synapsepay.com/bank_logos_v3p1/bankofamerica_h.png",
        "bank_logo": "https://cdn.synapsepay.com/bank_logos_v3p1/bankofamerica_v.png",
        "bank_long_name": "BANK OF AMERICA  N A ",
        "bank_name": "BANK OF AMERICA  N A ",
        "bank_url": "https://www.bankofamerica.com/",
        "class": "CHECKING",
        "match_info": {
            "email_match": "not_found",
            "name_match": "not_found",
            "phonenumber_match": "not_found"
        },
        "name_on_account": " ",
        "nickname": "Fake Account",
        "routing_num": "0017",
        "type": "PERSONAL"
    },
    "is_active": true,
    "timeline": [
        {
            "date": 1608062211651,
            "note": "Node created."
        },
        {
            "date": 1608062212574,
            "note": "Micro deposits initiated."
        },
        {
            "date": 1608065952868,
            "note": "Correct Micro Deposit amounts attempted. Node's 'allowed' changed to 'CREDIT-AND-DEBIT'"
        }
    ],
    "type": "ACH-US",
    "user_id": "5fd7acfd8677040053ad486d"
}
{
    "_id": "5fd91504cb0fca4d508af942",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd91504cb0fca4d508af942"
        }
    },
    "allowed": "LOCKED",
    "allowed_status_code": "USER_REQUESTED",
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "extra": {
        "note": null,
        "other": {
            "access_token": null,
            "info": {},
            "micro_meta": {
                "micro_attempts": 0,
                "micro_sent_count": 1,
                "skip_micro": false
            },
            "transactions": [],
            "updated_on": null
        },
        "supp_id": ""
    },
    "info": {
        "account_num": "12322134",
        "address": "8001 VILLA PARK DRIVE, HENRICO, VA, US",
        "balance": {
            "amount": "0.00",
            "currency": "USD"
        },
        "bank_code": "bofa",
        "bank_hlogo": "https://cdn.synapsepay.com/bank_logos_v3p1/bankofamerica_h.png",
        "bank_logo": "https://cdn.synapsepay.com/bank_logos_v3p1/bankofamerica_v.png",
        "bank_long_name": "BANK OF AMERICA  N A ",
        "bank_name": "BANK OF AMERICA  N A ",
        "bank_url": "https://www.bankofamerica.com/",
        "class": "CHECKING",
        "match_info": {
            "email_match": "not_found",
            "name_match": "not_found",
            "phonenumber_match": "not_found"
        },
        "name_on_account": " ",
        "nickname": "Fake Account",
        "routing_num": "051000017",
        "type": "PERSONAL"
    },
    "is_active": true,
    "timeline": [
        {
            "date": 1608062211651,
            "note": "Node created."
        },
        {
            "date": 1608062212574,
            "note": "Micro deposits initiated."
        },
        {
            "date": 1608065952868,
            "note": "Correct Micro Deposit amounts attempted. Node's 'allowed' changed to 'CREDIT-AND-DEBIT'"
        }
    ],
    "type": "ACH-US",
    "user_id": "5fd7acfd8677040053ad486d"
}
{
    "error": {
        "code": "missing_user_ip",
        "en": "User IP is missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
GET /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd906e520b3aa0bc5caee71 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd906e520b3aa0bc5caee71' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//

Username

Password

MFA

Bank Name

test_good

test1234

again For multiple MFAs. test_answerFor single MFA.

fake

synapse_good

test1234

again For multiple MFAs. test_answerFor single MFA.

fake

synapse_good

test1234_one

again For multiple MFAs. test_answerFor single MFA.

fake

synapse_good

test1234_checking

again For multiple MFAs. test_answerFor single MFA.

fake

synapse_good

test1234_savings

again For multiple MFAs. test_answerFor single MFA.

fake

synapse_good

test1234_random

again For multiple MFAs. test_answerFor single MFA.

fake

synapse_nomfa

test1234

No MFA necessary

fake

synapse_code_mfa

test1234

123456

fake

HTTP_CODE

ERROR_CODE

Append to Password

Description

503

503

_sync_unavailable

Refresh unavailable

400

410

_sync_not_allowed

Refresh not allowed

401

110

_needs_relink

Bad credentials

500

500

_sync_unknown_error

Unknown refresh error

Account Number

Routing Number

Any Number between 5-25 digits

Any Valid Routing Number

Micro-Deposit Amount 1 (in cents)

Micro-Deposit Amount 2 (in cents)

10

10

Number

Network

Card Type

Permission

9999999999999999 Exp: 202412

VISA

DEBIT

For testing duplicate card check functionality ONLY.

9401100999999992

VISA

DEBIT

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

9401101999999990

VISA

DEBIT

CREDIT

9401110999999991

VISA

DEBIT

DEBIT

9401113999999995

VISA

DEBIT

CREDIT-AND-DEBIT

9401200999999990

VISA

CREDIT

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

9401201999999998

VISA

CREDIT

CREDIT

9401210999999999

VISA

CREDIT

DEBIT

9401211999999997

VISA

CREDIT

CREDIT-AND-DEBIT

9401300999999998

VISA

PREPAID

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

9401301999999996

VISA

PREPAID

CREDIT

9401310999999997

VISA

PREPAID

DEBIT

9401311999999995

VISA

PREPAID

CREDIT-AND-DEBIT

9501100999999991

MASTERCARD

DEBIT

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

9951101999999994

MONEYSEND

DEBIT

CREDIT

9501110999999990

MASTERCARD

DEBIT

DEBIT

9501200999999999

MASTERCARD

CREDIT

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

9951201999999992

MONEYSEND

CREDIT

CREDIT

9501210999999998

MASTERCARD

CREDIT

DEBIT

9501300999999997

MASTERCARD

PREPAID

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

9951301999999990

MONEYSEND

PREPAID

CREDIT

9501310999999996

MASTERCARD

PREPAID

DEBIT

9601210999999997

DISCOVER

CREDIT

DEBIT

9601200999999998

DISCOVER

CREDIT

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

9810203999999999

DISCOVER

CREDIT

CREDIT

Card Number

Processor

Type

Permission

5204247750001471

Mastercard

Debit

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

5204247750001505

Mastercard

Debit

CREDIT

5204247750001497

Mastercard

Debit

DEBIT

5204247750001489

Mastercard

Debit

CREDIT-AND-DEBIT

5204247750001463

Mastercard

Credit

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

5204245250001496

Mastercard

Credit

CREDIT

5204245250001512

Mastercard

Credit

DEBIT

5204245250001504

Mastercard

Credit

CREDIT-AND-DEBIT

5204245250001488

Mastercard

Prepaid

CREDIT-AND-DEBIT

5204245250001470

Mastercard

Prepaid

DEBIT

4761120010000492

Visa

Debit

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

4761349750010326

Visa

Debit

CREDIT

4761209980011439

Visa

Debit

DEBIT

4761262260004228

Visa

Debit

CREDIT-AND-DEBIT

4051069302200121

Visa

Credit

NONE (which means both credits and debits have been disabled by cardholder. So adding this card would fail.)

4761369980320253

Visa

Credit

CREDIT

4622943120054839

Visa

Credit

DEBIT

4761229700150465

Visa

Credit

CREDIT-AND-DEBIT

4180620070230189

Visa

Prepaid

CREDIT-AND-DEBIT

4123400073320224

Visa

Prepaid

DEBIT

Account Number

Routing Number

Any Number between 5-25 digits

Any Valid Routing Number

Account Number

SWIFT Code

Any Number between 5-25 digits

Any Valid SWIFT Code

Account Number

Biller ID

Any Number between 5-25 digits

Any Valid Biller ID

user_id

string

ID of the user.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "error_code": "0",
    "http_code": "200",
    "limit": 20,
    "node_count": 1,
    "nodes": [
        {
            "_id": "5fd7e43fe079bc3cc9c304fb",
            "_links": {
                "self": {
                    "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd7e43fe079bc3cc9c304fb"
                }
            },
            "allowed": "CREDIT-AND-DEBIT",
            "allowed_status_code": null,
            "client": {
                "id": "589acd9ecb3cd400fa75ac06",
                "name": "SynapseFi"
            },
            "extra": {
                "note": null,
                "other": {},
                "supp_id": ""
            },
            "info": {
                "agreements": [
                    {
                        "type": "NODE_AGREEMENT",
                        "url": "https://cdn.synapsepay.com/uploads/2020/12/14/n9o0LrdMmBITYQRKXgWFUS76k24eDZ8EGz5yP0jfHtC1hqaxup.pdf"
                    }
                ],
                "balance": {
                    "amount": 0.0,
                    "currency": "USD"
                },
                "bank_code": "EBT",
                "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
                "name_on_account": " ",
                "nickname": "My Deposit Account"
            },
            "is_active": true,
            "timeline": [
                {
                    "date": 1607984180124,
                    "note": "Node created."
                }
            ],
            "type": "DEPOSIT-US",
            "user_id": "5fd7acfd8677040053ad486d"
        }
    ],
    "page_count": 1,
    "success": true
}
{
    "error": {
        "code": "missing_client_credentials",
        "en": "Client credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_WFecuSPqxGgU027IRAjtOf35vrNCpQZE1DYohX9y|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "type": "DEPOSIT-US",
  "info": {
    "nickname":"My Deposit Account",
    "document_id":"2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8"
  }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_WFecuSPqxGgU027IRAjtOf35vrNCpQZE1DYohX9y|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
--data-raw '{
  "type": "DEPOSIT-US",
  "info": {
    "nickname":"My Deposit Account",
    "document_id":"2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8"
  }
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_WFecuSPqxGgU027IRAjtOf35vrNCpQZE1DYohX9y|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "type": "CMA",
  "info": {
    "nickname":"My Cash Management Account",
    "document_id":"2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
    "custody" : "FDIC",
    "risk" : "MODERATE"
  }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_WFecuSPqxGgU027IRAjtOf35vrNCpQZE1DYohX9y|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
--data-raw '{
  "type": "DEPOSIT-US",
  "info": {
    "nickname":"My Deposit Account",
    "document_id":"2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
    "custody" : "FDIC",
    "risk" : "MODERATE"
  }
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "type": "REPAY-US",
    "info": {
        "loan_type": "ONE-TIME",
        "nickname": "My Loan",
        "credit_limit": {
            "amount": 5.2,
            "currency": "USD"
        },
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "payment_node_id": "5fd7e2b0039b95223d5f4fd3",
        "disbursement_node_id": "5fd7e2b0039b95223d5f4fd3",
        "auto_pay": true,
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "schedule": "MONTHLY",
        "next_payment": 30,
        "num_payments": 1,
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85"
    },
    "extra": {
        "supp_id": "xx123c"
    }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_WFecuSPqxGgU027IRAjtOf35vrNCpQZE1DYohX9y|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "REPAY-US",
    "info": {
        "loan_type": "ONE-TIME",
        "nickname": "My Loan",
        "credit_limit": {
            "amount": 5.2,
            "currency": "USD"
        },
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "payment_node_id": "5fd7e2b0039b95223d5f4fd3",
        "disbursement_node_id": "5fd7e2b0039b95223d5f4fd3",
        "auto_pay": true,
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "schedule": "MONTHLY",
        "next_payment": 30,
        "num_payments": 1,
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85"
    },
    "extra": {
        "supp_id": "xx123c"
    }
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
Cookie: __cfduid=de9ca185b34253012e30046d93e73cef91605826497
Content-Length: 730

{
    "type": "LOAN-US",
    "info": {
        "loan_type": "ONE-TIME",
        "nickname": "My Loan",
        "credit_limit": {
            "amount": 5.2,
            "currency": "USD"
        },
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "payment_node_id": "5fd7e2b0039b95223d5f4fd3",
        "disbursement_node_id": "5fd7e2b0039b95223d5f4fd3",
        "auto_pay": true,
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "schedule": "MONTHLY",
        "next_payment": 30,
        "num_payments": 10,
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85"
    },
    "extra": {
        "supp_id": "xx123c"
    }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_WFecuSPqxGgU027IRAjtOf35vrNCpQZE1DYohX9y|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "LOAN-US",
    "info": {
        "loan_type": "ONE-TIME",
        "nickname": "My Loan",
        "credit_limit": {
            "amount": 5.2,
            "currency": "USD"
        },
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "payment_node_id": "5fd7e2b0039b95223d5f4fd3",
        "disbursement_node_id": "5fd7e2b0039b95223d5f4fd3",
        "auto_pay": true,
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "schedule": "MONTHLY",
        "next_payment": 30,
        "num_payments": 10,
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85"
    },
    "extra": {
        "supp_id": "xx123c"
    }
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "type": "LOAN-US",
    "info": {
        "loan_type": "OPEN",
        "nickname": "My Loan",
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85",
        "schedule":"MONTHLY"
    },
    "extra": {
        "supp_id": "xx123c"
    }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "LOAN-US",
    "info": {
        "loan_type": "OPEN",
        "nickname": "My Loan",
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85",
        "schedule":"MONTHLY"
    },
    "extra": {
        "supp_id": "xx123c"
    }
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "type": "LOAN-US",
    "info": {
        "loan_type": "REVOLVING",
        "nickname": "My Loan",
        "credit_limit": {
            "amount": 50.2,
            "currency": "USD"
        },
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "schedule": "MONTHLY",
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85"
    },
    "extra": {
        "supp_id": "xx123c"
    }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--header 'Cookie: __cfduid=de9ca185b34253012e30046d93e73cef91605826497' \
--data-raw '{
    "type": "LOAN-US",
    "info": {
        "loan_type": "REVOLVING",
        "nickname": "My Loan",
        "credit_limit": {
            "amount": 50.2,
            "currency": "USD"
        },
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "schedule": "MONTHLY",
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85"
    },
    "extra": {
        "supp_id": "xx123c"
    }
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "type": "LOAN-US",
    "info": {
        "loan_type": "REVOLVING",
        "nickname": "My Loan",
        "credit_limit": {
            "amount": 500.2,
            "currency": "USD"
        },
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "payment_node_id": "5fd7e2b0039b95223d5f4fd3",
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "schedule": "MONTHLY",
        "next_payment": 30,
        "num_payments": 10,
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85"
    },
    "extra": {
        "supp_id": "xx123c",
        "note": "ACCOUNT|TOOSHORT"
    },
    "allowed": "REJECTED"
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--header 'Cookie: __cfduid=de9ca185b34253012e30046d93e73cef91605826497' \
--data-raw '{
    "type": "LOAN-US",
    "info": {
        "loan_type": "REVOLVING",
        "nickname": "My Loan",
        "credit_limit": {
            "amount": 500.2,
            "currency": "USD"
        },
        "interest": {
            "apr": 10,
            "cap": 5
        },
        "payment_node_id": "5fd7e2b0039b95223d5f4fd3",
        "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8",
        "schedule": "MONTHLY",
        "next_payment": 30,
        "num_payments": 10,
        "reserve_node_id": "5fd901bb20b3aa0bc7caee85"
    },
    "extra": {
        "supp_id": "xx123c",
        "note": "ACCOUNT|TOOSHORT"
    },
    "allowed": "REJECTED"
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "type": "ACH-US",
  "info": {
    "nickname": "Fake Account",
    "account_num": "12322134",
    "routing_num": "051000017",
    "type": "PERSONAL",
    "class": "CHECKING"
  }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "type": "ACH-US",
  "info": {
    "nickname": "Fake Account",
    "account_num": "12322134",
    "routing_num": "051000017",
    "type": "PERSONAL",
    "class": "CHECKING"
  }
}'
POST /v3.1/users/61281718f8db933279d02c3a/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_1rmOEzWCiwXG09Z7tefxY3AhKRQTaqDUMBpJPIV4|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
Content-Length: 1831

{
  "type": "ACH-US",
  "info": {
    "nickname": "Fake Account",
    "account_num": "1232225674134",
    "routing_num": "051000017",
    "type": "PERSONAL",
    "class": "CHECKING"
  },
  "extra": {
    "supp_id": "pJPM4LMBNQFrOwp0jqEyTwyxJQrQbgU6kq37k",
    "other": {
      "info": {
        "phone_numbers": [
          "1112223456",
          "1234567891"
        ],
        "addresses": [
          {
            "street": "1 Hobbit Way",
            "city": "The Shire",
            "state": "CA",
            "zipcode": "94108"
          }
        ],
        "names": [
          "Frodo Baggins",
          "Samwise Gamgee"
        ],
        "emails": [
          "frodo.baggins@hobbit.com"
        ]
      },
      "transactions": [
        {
          "current_balance": 2275.58,
          "description": "Apple Store",
          "amount": 2307.15,
          "date": 1403506800,
          "pending": false,
          "debit": true
        },
        {
          "current_balance": 2275.58,
          "description": "Golden Crepes",
          "amount": 12.74,
          "date": 1399878000,
          "pending": false,
          "debit": true
        },
        {
          "current_balance": 2275.58,
          "description": "Banana Republic",
          "amount": 118.23,
          "date": 1398495600,
          "pending": false,
          "debit": true
        },
        {
          "current_balance": 2275.58,
          "description": "Octane Coffee Bar and Lounge",
          "amount": 5.32,
          "date": 1397718000,
          "pending": false,
          "debit": true
        },
        {
          "current_balance": 2275.58,
          "description": "Papa Johns Pizza",
          "amount": 28.57,
          "date": 1397199600,
          "pending": false,
          "debit": true
        }
      ]
    }
  }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/61281718f8db933279d02c3a/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_1rmOEzWCiwXG09Z7tefxY3AhKRQTaqDUMBpJPIV4|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "type": "ACH-US",
  "info": {
    "nickname": "Fake Account",
    "account_num": "1232225674134",
    "routing_num": "051000017",
    "type": "PERSONAL",
    "class": "CHECKING"
  },
  "extra": {
    "supp_id": "pJPM4LMBNQFrOwp0jqEyTwyxJQrQbgU6kq37k",
    "other": {
      "info": {
        "phone_numbers": [
          "1112223456",
          "1234567891"
        ],
        "addresses": [
          {
            "street": "1 Hobbit Way",
            "city": "The Shire",
            "state": "CA",
            "zipcode": "94108"
          }
        ],
        "names": [
          "Frodo Baggins",
          "Samwise Gamgee"
        ],
        "emails": [
          "frodo.baggins@hobbit.com"
        ]
      },
      "transactions": [
        {
          "current_balance": 2275.58,
          "description": "Apple Store",
          "amount": 2307.15,
          "date": 1403506800,
          "pending": false,
          "debit": true
        },
        {
          "current_balance": 2275.58,
          "description": "Golden Crepes",
          "amount": 12.74,
          "date": 1399878000,
          "pending": false,
          "debit": true
        },
        {
          "current_balance": 2275.58,
          "description": "Banana Republic",
          "amount": 118.23,
          "date": 1398495600,
          "pending": false,
          "debit": true
        },
        {
          "current_balance": 2275.58,
          "description": "Octane Coffee Bar and Lounge",
          "amount": 5.32,
          "date": 1397718000,
          "pending": false,
          "debit": true
        },
        {
          "current_balance": 2275.58,
          "description": "Papa Johns Pizza",
          "amount": 28.57,
          "date": 1397199600,
          "pending": false,
          "debit": true
        }
      ]
    }
  }
}'
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "type": "INTERCHANGE-US",
  "info": {
    "nickname": "My BofA Card",
    "card_number": "UvW1n0FaSDjS/4h/u79hf7QF1pG6VuRMlSvoro5SDEt28YMkPaUJIVSBvIPSilFKYRX+jUw+nE0X7QxR/ZWAiLnkJHPo1R1KlolVBCvWefandgyBqc+8nmUw2gDqNV5XoOmUbraHIhhp3YxpBtlqljIcQvLyY6lnZij/UknLwU+QWltLkb4ppvOA1njwWHJWl795VoCsVHCab9gcU6dALH4xwIvezY9JXImQOsNQusT6OeagjDhjbTy/jfuu5aVOB+WqheW2r7TLR3Z0SAZsCm5vL0NjgP0Bi8dY9aZDsydEcqTQSn8+hLmdwnIoIw58xWHoIPFa3NfhCMPiPWyXzw==",
    "exp_date": "btnU+/L6NxZyd5dyl4BXK6raVMAp4ATGxST9KYN6KSOvY5IyfeKXfbwK5qCGk5071Tt0jst1yJShQNbSi4I+gUABmSTEZoBit13CT8C1uiRyT4sj8RhkMnyw/88eHIS5BKUXWib3wsfCxYac1Uq7lSdhReU1DHh8CoknDJt0GCFO1duxS0qLgrvB6WqkTgLQfYsRAZUDUO8O7sTUgGyoWdbu4CHoK1w+NJOQi3hWF5D90X60vaZaOxyEo4OljBZ6oAPiMf+L9IG58ADjsRm81TTwfhfzMObNRed+MEiDVzn7keR+0vniRzp1BPHO2aTxKKauhmZsRaWViIDah/tIbw==",
    "document_id": "6753aae40deb54eadee3d8272e6e1777337d34d52f71655c774a894fe3f6a1e0"
  }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "type": "INTERCHANGE-US",
  "info": {
    "nickname": "My BofA Card",
    "card_number": "Zoo8g2vBUjt7TwmEpRW8f6eQT3AOEEYePw2LkoxD+mO9lOT5OemHlGwgamgLGUbrmWu3DPwnEr2IqDy5YMFVgvQWP3w9nLOFzFFSW43auDgsVAqZScoRf8nI+6/B9KvOEV4XI8JeyXT+O+y3p3RtbiXGmYQNJ56Hy3hs2E5O+yn+3fpLfJQpVvNc38V+aE21VEsJuXFFNtS/8r4jJ6Dx/etTEaE/rtcEUEbwLLHFHjPiOWaHWZPuhXFLtyYrR9zG8FWSJVFwNTG/mEpv2O7We1iCB+9WoEKqdHyGwjjBcVgkUlU5huJIXv9xj53RGNvmHkDFTqgrlHpKkb0E/Ot0Zg==",
    "exp_date": "ctA4Zj1CP0WCiMefPYsyewVbIHNilfwA09X9NSCyWxft4WGwFZmZkhsBJh51QL751/iFkUHbd09ZpDYjS86PqyNPZ5LkBueGHDIghLwWyzH1l99RiIs8urOW9c4g3L1USD+kzzRAqG1DBkW47FAX6AhPSi3YgQd94ery1H+asaqDrP79ayzoJ+nRXeEqe83FIgNUk/J5+EcAz3JYnoBmp1sfz7a4zHkvk0eKCxQWLETdqvONyCZyXdC/4CkaCxJ/87VsN3i4+ToULtSluRv8xr1NpRhzipKiEKTYW1nvNDAaJQezTVP/+GxmTmQfnfpVNDpJbXjNrOTej1HgMFpg4w==",
    "document_id": "2a4a5957a3a62aaac1a0dd0edcae96ea2cdee688ec6337b20745eed8869e3ac8"
  }
}'
//
//
//
//

info.security_code

String

Yes

Used to complete AVS validation. This is the card CVV. NOTE: Use same encoding method as with card number and expiration date.

info.strict_avs_validation

Boolean

No

If AVS check fails, with this set to True, the node will not be created.

extra.other.avs.avs_match

Boolean

No

Address validated, or not.

extra.other.avs.result

String

No

When present, results will be DECLINED or NOT_DECLINED. NOTE: Results are filtered to avoid fraud. Reach out to support if additional detail is needed.

POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "type": "WIRE-US",
  "info":{
      "nickname": "Some Account",
      "account_num": "1235674342",
      "routing_num": "026009593"
    }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "type": "WIRE-US",
  "info":{
      "nickname": "Some Account",
      "account_num": "1235674342",
      "routing_num": "026009593"
    }
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "type": "WIRE-INT",
    "info": {
        "nickname": "Some Account",
        "account_num": "1235674342",
        "swift": "CCBPFRPPXXX"
    }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "WIRE-INT",
    "info": {
        "nickname": "Some Account",
        "account_num": "1235674342",
        "swift": "CCBPFRPPXXX"
    }
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "type": "RPPS-US",
    "info": {
        "nickname": "Fake Account",
        "account_num": "ihvwKkb0RrsRSqlOJo3xXCTX7hADg2eA+dN3nSVoFsulhypfDlFLoVrdM0I4T/7rX0ZPj7IdlHDUmkGFm/PwQ9Of/FDzg74h/hdIpS48KNAJR31ZZaGecTpL8AOYDM0oCWS2bnowOG+2pPNP7aa63d4DK5I+uzK9y95eIvWrcnM6GM9dYUFm2pIvW1WrXr2qVr+WpjRUSbfLAky0cNzvg3CQsjusLZfA3W2c7QKJjL4ICBRvzwLhb90m2U3uFGiS3xCdYy+tcXtEK1KZfvAq6Ic+Gxe//jDIOl/vQSW/aVxFA5Lz/wCf4zmFCB2HYKvg4wYAeXgyufaZZDwb6r/duQ==",
        "biller_id": "0311001621"
    }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "RPPS-US",
    "info": {
        "nickname": "Fake Account",
        "account_num": "ihvwKkb0RrsRSqlOJo3xXCTX7hADg2eA+dN3nSVoFsulhypfDlFLoVrdM0I4T/7rX0ZPj7IdlHDUmkGFm/PwQ9Of/FDzg74h/hdIpS48KNAJR31ZZaGecTpL8AOYDM0oCWS2bnowOG+2pPNP7aa63d4DK5I+uzK9y95eIvWrcnM6GM9dYUFm2pIvW1WrXr2qVr+WpjRUSbfLAky0cNzvg3CQsjusLZfA3W2c7QKJjL4ICBRvzwLhb90m2U3uFGiS3xCdYy+tcXtEK1KZfvAq6Ic+Gxe//jDIOl/vQSW/aVxFA5Lz/wCf4zmFCB2HYKvg4wYAeXgyufaZZDwb6r/duQ==",
        "biller_id": "0311001621"
    }
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "type": "CHECK-US",
  "info":{
      "nickname":"Rent",
      "payee_name":"Some Name",
      "payee_address":{
      	"address_street":"1 Market St",
      	"address_city":"San Francisco",
      	"address_subdivision":"CA",
      	"address_country_code":"US",
      	"address_postal_code":"94105"
      }
  }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_Bno93GavyeDfbzt0kpwmjZrQdS8IMUVH65AC21Og|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "type": "CHECK-US",
  "info":{
      "nickname":"Rent",
      "payee_name":"Some Name",
      "payee_address":{
      	"address_street":"1 Market St",
      	"address_city":"San Francisco",
      	"address_subdivision":"CA",
      	"address_country_code":"US",
      	"address_postal_code":"94105"
      }
  }
}'
//
//
//
//
Launch CMA Deposit Hub
Enable External ACH
Booking an Adverse Action
Link External ACH
interchange account
created
One-Time
Revolving
Open
Cash Advance
Launch Deposit Hub
Enable External ACH
Create ACH Account

X-SP-USER

string

Your OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "physical_docs": [
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Photo ID",
            "description": "A government issued photo ID (driver's license, state ID, or passport)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "GOVT_ID"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "International Photo ID",
            "description": "A government issued photo ID (driver's license, state ID, or passport) that is not in English",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "GOVT_ID_INT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Back of Photo ID",
            "description": "Back of a government issued photo ID (driver's license, state ID, or passport)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "GOVT_ID_BACK"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Back of International Photo ID",
            "description": "Back of a government issued photo ID (driver's license, state ID, or passport) that is not in English",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "GOVT_ID_INT_BACK"
        },
        {
            "allowed_file_types": [
                "mov",
                "mp4",
                "webm",
                "avi",
                "flv",
                "mkv",
                "ogg"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Video Authorization",
            "description": "A 5 second video authorizing this account",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "VIDEO_AUTHORIZATION"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Selfie",
            "description": "",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "SELFIE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Proof of address",
            "description": "Proof of residence at current address (utility bill or bank account statement)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "PROOF_OF_ADDRESS"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Proof of income",
            "description": "Proof of annual income (pay stub or tax returns)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "PROOF_OF_INCOME"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Proof of account",
            "description": "Proof of account ownership (bank account statement)",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "PROOF_OF_ACCOUNT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Authorization",
            "description": "A signed ACH authorization",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "AUTHORIZATION"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Social Security Card",
            "description": "Image of social security card issued by the Social Security Administration",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "SSN_CARD"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Employer Identification Number Document",
            "description": "Image of Form 147C issued to the business by the IRS",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "EIN_DOC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Employer Identification Number Application",
            "description": "Image of Form SS4 that is used by a business to apply for a TIN number",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "SS4_DOC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "W-9 Document",
            "description": "Image of W-9 document issued by the IRS (with EIN visible)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "W9_DOC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "W-8 Document",
            "description": "Image of W-8 document issued by the IRS (with SSN/TIN visible)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "W8_DOC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS",
                "PERSONAL"
            ],
            "common_name": "W-2 Document",
            "description": "Image of W-2 document issued by the Employer (with SSN/TIN visible)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "W2_DOC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Voided Check",
            "description": "Image of a voided check from the bank (with account number and name on account visible)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "VOIDED_CHECK"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Articles of Incorporation",
            "description": "Image/PDF of company's Articles of Incorporation (with name and address of company visible)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "AOI"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Company Bylaws",
            "description": "Image/PDF of company's Bylaws (with name, address of company and key shareholder information visible)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "BYLAWS_DOC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Letter of Engagement",
            "description": "Image/PDF of Letter of Engagement (with name and address visible)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "LOE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Certificate of Incumbency",
            "description": "Image/PDF of Certificate of Incumbency",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "COI"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Local Business Licenses",
            "description": "Image/PDF of Local Business Licenses",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "LBL"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "US Subsidiary or Domestic Presence on Business Documents",
            "description": "Image/PDF of US Subsidiary or Domestic Presence on Business Documents",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "SUBSIDIARY_DOC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "AML Policies",
            "description": "Image/PDF of AML Policies",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "AML_POLICY"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Detailed Business Plan",
            "description": "Image/PDF of Detailed Business Plan",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "BUSINESS_PLAN"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Money Transmission Licenses",
            "description": "Image or PDF of Money Transmission Licenses",
            "multiple_allowed": true,
            "required_meta": [
                "state_code"
            ],
            "type": "MTL"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "MSB / FINCEN Registration",
            "description": "Image/PDF of MSB / FINCEN Registration",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "MSB"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Security Audit",
            "description": "Image/PDF of Security Audit",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "SECURITY_AUDIT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "BSA Audit",
            "description": "Image/PDF of BSA Audit",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "BSA_AUDIT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "SOC Audit",
            "description": "Image/PDF of SOC Audit",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "SOC_AUDIT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "State Audit",
            "description": "Image/PDF of State Audit",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "STATE_AUDIT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Certificate of Business Insurance",
            "description": "Image/PDF of Certificate of Business Insurance",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "BUSINESS_INSURANCE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Sample Customer Contract + Summary of Fees",
            "description": "Image/PDF of Sample Customer Contract + Summary of Fees",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "TOS"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "KYC Policy",
            "description": "Image/PDF of KYC Policy",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "KYC_POLICY"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "CIP Document",
            "description": "Image/PDF of CIP Document",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "CIP_DOC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Subscription Agreement",
            "description": "Image/PDF of Subscription Agreement",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "SUBSCRIPTION_AGREEMENT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Promissory Note",
            "description": "Image/PDF of Promissory Note",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "PROMISSORY_NOTE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Legal Agreement",
            "description": "Image/PDF of Legal Agreement",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "LEGAL_AGREEMENT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Reg GG Form",
            "description": "Image/PDF of Reg GG Form",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "REG_GG"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS",
                "PERSONAL"
            ],
            "common_name": "Deposit Agreement",
            "description": "E-Signed version of the deposit agreement",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "DEPOSIT_AGREEMENT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "DBA Document",
            "description": "Image/PDF of DBA Document",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "DBA_DOC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Other",
            "description": "Other document upload",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "OTHER"
        },
        {
            "allowed_file_types": [
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Background Check",
            "description": "Background Check document upload",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "BG_CHECK"
        },
        {
            "allowed_file_types": [
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Background Check Consent",
            "description": "Background Check Consent document upload",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "BG_CHECK_CONSENT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Articles of Organization",
            "description": "A document filed with a government body that establishes the existence of a limited liability company",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "ARTICLES_ORGANIZATION"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Memorandum of Incorporation",
            "description": "A document that details the rights, duties and responsibilities of shareholders, directors and other persons involved in a company. Very similar to Articles of Incorporation in the US",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "MEMO_OF_INCORPORATION"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Passport Bio Data page",
            "description": "Biodata page of the User's passport, which includes photo, name, date of birth, passport number, expiration date, etc. ",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "PASSPORT_BIODATA"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Passport Information page",
            "description": "Information page of passport, such as the page with the passport holder’s address (e.g., Indian passports)",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "PASSPORT_INFO"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "VISA",
            "description": "Relevant visa in User's passport",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "VISA"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Business License (city or county)",
            "description": "Business license, issued at the city or county level for the physical location of the business",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "BUSINESS_LICENSE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Foreign Entity Registration",
            "description": "Foreign entity registration for a company doing business in a state which is not the state in which they are primarily registered. This document is an acceptable alternative to a business license in jurisdictions where a business license is not required for all business types (e.g., New York)",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "FOREIGN_ENTITY_REGISTRATION"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS",
                "PERSONAL"
            ],
            "common_name": "Proof of source of funds",
            "description": "Document showing the source of funds for a specific transaction. This may include paystubs, investment distributions, etc. ",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "POSOF"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Profit and Loss Statement",
            "description": "A company's financial statement detailing revenue and expenses for a given period of time",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "PROFIT_LOSS"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS",
                "PERSONAL"
            ],
            "common_name": "Bank Statement ",
            "description": "Periodic statement issued by a financial institution detailing activity through an account held at the FI",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "BANK_STATEMENT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "1099-MISC",
            "description": "Income statement issued by clients for an independent contractor",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "1099-MISC"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Paystub",
            "description": "Document issued to indicate payroll details for a given payroll period",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "PAYSTUB"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS",
                "PERSONAL"
            ],
            "common_name": "Invoice",
            "description": "Billing statement for goods or services provided between two parties ",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "INVOICE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Mortgage Statement",
            "description": "Document issued by a mortgage holder to the borrower detailing the terms of the mortgage loan",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "MORTGAGE_STATEMENT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS",
                "PERSONAL"
            ],
            "common_name": "Property Tax Receipt",
            "description": "Receipt for the payment of annual property taxes",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "PROPERTY_TAX_RECEIPT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS",
                "PERSONAL"
            ],
            "common_name": "Lease Agreement",
            "description": "Property rental agreement between a landlord and a tenant",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "LEASE_AGREEMENT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "University Lease",
            "description": "Property rental agreement between a University and a student",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "UNIVERSITY_LEASE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS",
                "PERSONAL"
            ],
            "common_name": "Utility Bill",
            "description": "A billing statement issued by a company provided utility services, this may include water, gas, or telecom services",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "UTILITY_BILL"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Form I-94",
            "description": "Record of travel history for individuals to and from the US, who are not citizens or permanent residents",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "FORM_I94"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Form I-20",
            "description": "Certificate of eligibility for nonimmigrant student status issued by a certified school",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "FORM_I20"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Form DS-2019",
            "description": "Document that allows the bearer to apply for the J-1 Visa as an Intern or Trainee in the USA",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "FORM_DS2019"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Form I-797A, I-797B, or I-797C",
            "description": "Receipt letter issued by the United States Citizenship and Immigration Services once they have received an application ",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "FORM_I797"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "EAD Card",
            "description": "Employment Authorization Card for immigrants to a certain country",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "EMPLOYMENT_AUTHORIZATION_CARD"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Permanent Resident Card",
            "description": "Issued to immigrants as evidence that the individual has been approved to reside in a given country permanently",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "PERMANENT_RESIDENT_CARD"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Back of Permanent Resident Card",
            "description": "Back of card issued to immigrants as evidence that the individual has been approved to reside in a given country permanently",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "PERMANENT_RESIDENT_CARD_BACK"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "National Identification Card",
            "description": "Photo ID issued by the relevant national authority",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "NATIONAL_ID"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Back of National Identification Card",
            "description": "Back of Photo ID issued by the relevant national authority",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "NATIONAL_ID_BACK"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Passport Card",
            "description": "Photo ID and limited travel card issued by the relevant government authority",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "PASSPORT_CARD"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Driver's License",
            "description": "Photo ID and authorization to operate a vehicle issued by the relevant government authority ",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "DRIVER_LICENSE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Back of Driver's License",
            "description": "Back of Photo ID and authorization to operate a vehicle issued by the relevant government authority ",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "DRIVER_LICENSE_BACK"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Voter Registration Card",
            "description": "Document confirming an individual is registered to vote in elections issued by the relevant government authority",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "VOTER_REGISTRATION_CARD"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Back of Voter Registration Card",
            "description": "Back of document confirming an individual is registered to vote in elections issued by the relevant government authority",
            "multiple_allowed": false,
            "required_meta": [
                "country_code",
                "id_number"
            ],
            "type": "VOTER_REGISTRATION_CARD_BACK"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Legal Opinion Letter",
            "description": "Image/PDF of Legal Opinion Letter",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "LEGAL_OPINION_LETTER"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "No Action Letter",
            "description": "Image/PDF of No Action Letter",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "NO_ACTION_LETTER"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Customers By Revenue",
            "description": "List of top four customers by revenue",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "CUSTOMERS_BY_REVENUE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Fraud Program",
            "description": "Image/PDF of Fraud Program",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "FRAUD_PROGRAM"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Complaints Support Audit",
            "description": "Third Party independent audit of complaints and end user support process",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "COMPLAINTS_SUPPORT_AUDIT"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Wolfsberg Questionnaire",
            "description": "Correspondent Banking Due Diligence Questionnaire",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "WOLFSBERG_QUESTIONNAIRE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Section 313 Foreign Bank Certificate",
            "description": "Certification completed by a foreign bank",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "SECTION_313_FOREIGN_BANK_CERTIFICATE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Cyber Liability Insurance",
            "description": "Image/PDF of Cyber Liability Insurance",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "CYBER_LIABILITY_INSURANCE"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "VCheck Content Form",
            "description": "International authorization form",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "VCHECK_CONTENT_FORM"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Resume",
            "description": "Image/PDF of resume",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "RESUME"
        },
        {
            "allowed_file_types": [
                "png",
                "jpg",
                "jpeg",
                "pdf"
            ],
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "501(C)(3) Notification",
            "description": "The official letter notifying that your organization is entitled to the federal tax exemption as a 501(c)(3) charity.",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "501_C_3_NOTIF"
        }
    ],
    "social_docs": [
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Facebook",
            "description": "Using Sign in with Facebook to verify identity",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "FACEBOOK"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "LinkedIn",
            "description": "Using Sign in with LinkedIn to verify identity",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "LINKEDIN"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Twitter",
            "description": "Using Sign in with Twitter to verify identity",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "TWITTER"
        },
        {
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Website",
            "description": "Website to verify identity",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "WEBSITE"
        },
        {
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Email via 2FA",
            "description": "Using two-factor authentication to verify email",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "EMAIL_2FA"
        },
        {
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Phone Number via 2FA",
            "description": "Using two-factor authentication to verify phone number",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "PHONE_NUMBER_2FA"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Employer's name",
            "description": "Name of Employer",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "EMPLOYER"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "University's name ",
            "description": "Name of University",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "UNIVERSITY"
        },
        {
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Other Social Media",
            "description": "Using other social media to verify identity",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "OTHER"
        },
        {
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Mailing Address",
            "description": "Using mailing address for shipping cards, checks and account closure",
            "multiple_allowed": true,
            "required_meta": [
                "address_street",
                "address_city",
                "address_subdivision",
                "address_country_code",
                "address_postal_code"
            ],
            "type": "MAILING_ADDRESS"
        }
    ],
    "virtual_docs": [
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Social Security Number",
            "description": "Social Security Number issued by the Social Security Administration",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "SSN"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Passport Number",
            "description": "Passport Number issued by the Country of Origin",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "PASSPORT"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Driver's License Number",
            "description": "Driver's License Number issued by the DMV",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "DRIVERS_LICENSE"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Personal Identification Number",
            "description": "Personal Identification Number issued by the Country of Origin",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "PERSONAL_IDENTIFICATION"
        },
        {
            "base_doc_types": [
                "BUSINESS",
                "PERSONAL"
            ],
            "common_name": "Tax Identification Number",
            "description": "Tax Idenfitication Number issued by the relevant government authority  (i.e., SSN in the US, CPF in Brazil, etc.)",
            "multiple_allowed": false,
            "required_meta": [
                "country_code"
            ],
            "type": "TIN"
        },
        {
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Business Registration",
            "description": "A secondary Tax Idenfitication Number issued by the relevant government authority  (i.e., TIN in the US, CNPJ in Brazil, etc.)",
            "multiple_allowed": false,
            "required_meta": [
                "sub_type"
            ],
            "type": "BUS_REGISTRATION"
        },
        {
            "base_doc_types": [
                "BUSINESS"
            ],
            "common_name": "Data Universal Numbering System (DUNS) Number",
            "description": "DUNS number assined to the company by Dun & Bradstreet",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "DUNS"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Country of Citizenship",
            "description": "The user's country of citizenship",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "CITIZENSHIP"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "State Identification Foreign",
            "description": "Foreign state level identification",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "STATE_IDENTIFICATION_FOREIGN"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Father Full Name",
            "description": "Document showing father's full name",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "FATHER_FULL_NAME"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Mother Full Name",
            "description": "Document showing mother's full name",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "MOTHER_FULL_NAME"
        },
        {
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "DTI",
            "description": "Debt-to-Income Ratio",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "DTI"
        },
        {
            "base_doc_types": [
                "PERSONAL"
            ],
            "common_name": "Nationality",
            "description": "Country of origin",
            "multiple_allowed": false,
            "required_meta": [],
            "type": "NATIONALITY"
        },
        {
            "base_doc_types": [
                "PERSONAL",
                "BUSINESS"
            ],
            "common_name": "Other Virtual Documents",
            "description": "Using other document to verify an individual or business",
            "multiple_allowed": true,
            "required_meta": [],
            "type": "OTHER"
        }
    ]
}
GET /v3.1/users/document-types HTTP/1.1
Host: uat-api.synapsefi.com
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/document-types'
//
//
//
//
Allowed Document Types

Allowed Node Types

Node Types

GET https://api.synapsefi.com/v3.1/nodes/types

This endpoint allows you to get and view all the avaliable node types.

Headers

Name
Type
Description

X-SP-USER

string

Your OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "types": [
        {
            "type": "DEPOSIT-US"
        },
        {
            "type": "IB-DEPOSIT-US"
        },
        {
            "type": "IC-DEPOSIT-US"
        },
        {
            "type": "LOAN-US"
        },
        {
            "type": "REPAY-US"
        },
        {
            "type": "SUBACCOUNT-US"
        },
        {
            "type": "IB-SUBACCOUNT-US"
        },
        {
            "type": "CARD-US"
        },
        {
            "type": "SUBCARD-US"
        },
        {
            "type": "RESERVE-US"
        },
        {
            "type": "LOAN-RESERVE-US"
        },
        {
            "type": "CLEARING-US"
        },
        {
            "type": "SYNAPSE-US"
        },
        {
            "type": "CUSTODY-US"
        },
        {
            "type": "TRIUMPH-SUBACCOUNT-US"
        },
        {
            "type": "ACH-US"
        },
        {
            "type": "CHECK-US"
        },
        {
            "type": "INTERCHANGE-US"
        },
        {
            "type": "WIRE-US"
        },
        {
            "type": "WIRE-INT"
        },
        {
            "type": "IOU"
        },
        {
            "type": "TRADE-US"
        }
    ]
}

Example Request

GET /v3.1/nodes/types HTTP/1.1
Host: uat-api.synapsefi.com
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/nodes/types'
//
//
//
//

View ATMs

ATMs

GET https://api.synapsefi.com/v3.1/nodes/atms

This endpoint allows you to get and view all the available ATMs around a location.

Query Parameters

Name
Type
Description

lat

number

Latitude of the location

lon

number

Longitude of the location

radius

integer

Radius of the geofence (miles) NOTE: green_dot does not support the use of radius as a parameter

page

integer

Page number of the paginated request. Default is 1.

per_page

number

Number of objects to return per page. Default is 20.

atm_network_type

string

Type of atm network. Options: all_point, money_pass or green_dot.

Headers

Name
Type
Description

X-SP-USER

string

Your OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "atms": [
        {
            "atmLocation": {
                "DistanceMeters": "156",
                "DistanceUnit": "miles",
                "LocationID": "1441562192",
                "LocationName": "Walgreens",
                "LocationType": "ATM",
                "LocationTypeLabel": "ATM",
                "MapIcon": "315.png",
                "MapUrl": "http://maps.google.com/maps/api/staticmap?center=37.793819,-122.395088&maptype=roadmap&markers=color:red%7Clabel:1%7C37.793819,-122.395088&markers=color:red%7Ccolor:red%7Clabel:2%7C37.79255,-122.3944&sensor=true",
                "SurchargeFree": "Surcharge Free",
                "address": {
                    "city": "San Francisco",
                    "country": "USA",
                    "postalCode": "94105",
                    "state": "CA",
                    "street": "88 Spear St"
                },
                "coordinates": {
                    "latitude": "37.79255",
                    "longitude": "-122.3944"
                }
            },
            "atm_network_type": "all_point",
            "distance": 0.1
        },
        .....
    ],
    "atms_count": 19,
    "error_code": "0",
    "http_code": "200",
    "limit": 20,
    "page": 1,
    "page_count": 1,
    "success": true
}

Example Request

GET /v3.1/nodes/atms?page=1&per_page=20&lat=37.793819&lon=-122.395088&radius=1&atm_network_type=all_point HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/nodes/atms?page=1&per_page=20&lat=37.793819&lon=-122.395088&raidius=1&atm_network_type=all_point' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'Content-Type: application/json'
//
//
//
//

View all Node Subnets

Get Subnets

GET https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets

This endpoint allows you to get all subnets linked to a node.

Path Parameters

Name
Type
Description

user_id

string

ID of the user.

string

ID of the node.

Query Parameters

Name
Type
Description

per_page

integer

Maximum documents to return per page. Default and max allowed is 20.

page

integer

Page number of the paginated request. Default is 1.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "error_code": "0",
    "http_code": "200",
    "limit": 20,
    "page": 1,
    "page_count": 1,
    "subnets": [
        {
            "_id": "5fdaa7d56387987e63f30d9e",
            "_links": {
                "self": {
                    "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fdaa7d56387987e63f30d9e"
                }
            },
            "abu_token": "5fdaa7d6e4428eb1b8b13c25",
            "account_class": "CARD",
            "agreements": [
                {
                    "type": "SUBNET_AGREEMENT",
                    "url": "https://cdn.synapsepay.com/uploads/2020/12/17/dF2fpTiX1uq9bOmVSYw3HM6NgeorP4zkUZA0JE7hQay08GLWIl.pdf"
                }
            ],
            "card_number": "6707",
            "card_style_id": null,
            "client": {
                "id": "589acd9ecb3cd400fa75ac06",
                "name": "SynapseFi"
            },
            "created_on": 1608165332508,
            "cvc": "***",
            "exp": "2024-12-16",
            "nickname": "My Debit Card",
            "node_id": "5fd901bb20b3aa0bc7caee85",
            "preferences": {
                "allow_cash_transactions": true,
                "allow_foreign_transactions": false,
                "daily_cash_limit": 100.0,
                "daily_transaction_limit": 1000.0
            },
            "status": "INACTIVE",
            "status_code": "USER_REQUESTED",
            "supp_id": null,
            "updated_on": 1608165334534,
            "user_id": "5fd7acfd8677040053ad486d"
        },
        {
            ...
        }
    ],
    "subnets_count": 2,
    "success": true
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

GET /v3.1/users/5fd7acfd8677040053ad486d/nodes/5bc0c76f4ca8c400aa8d4cbc/subnets HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5bc0c76f4ca8c400aa8d4cbc/subnets' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//
Intro to Risk
Intro to Spec Sheet
OAuth
Intro to Spec Sheet
Intro to Spec Sheet
Intro to Spec Sheet
Subscriptions
Intro to Spec Sheet
Intro to Spec Sheet
Intro to Spec Sheet
Intro to Spec Sheet
KYC, Risk and Compliance
Allowed Entity Scopes
Allowed Entity Types
ID Score
ID Score
Intro to Spec Sheet
Allowed Document Types
Allowed Document Types
Allowed Document Types
Allowed Document Types
Allowed Document Types
Passports
Allowed Document Types
Base64
Allowed Document Types
Allowed Document Types
Allowed Document Types
Allowed Document Types
Webhooks
man-in-the-middle
man-in-the-middle
fingerprint array capacity limit
Node Object Details
here
Node Object Details
micro-deposit verification
Node Object Details
View Billers
Possible Flag Codes
Possible User Permissions
Possible Permission Codes
Possible Watchlists Values
Physical Document Schema
Permission Code
verifying your address
Social Document Schema
Physical Document Schema
Possible Flag Codes
Screenings Results Details
Possible Watchlists Values
watchlists
Possible Sub-Document Status Values
Possible Sub-Document Status Values
Possible Sub-Document Status Values
Possible Invalid Reasons Values
Permission Code
base document
base document
base document
base document
base document
Possible Scopes
Entity Info Details
re-verify micro-deposits
Possible Allowed Status Codes
Possible Agreement Types
Create an Interchange Account
Possible Allowed Values
Create a Fedwire Account
Possible Allowed Values
Create a SWIFT Account
Possible Allowed Values
Create a RPPS Account
Possible Allowed Values
Create a Check Account
Possible Allowed Values
Possible Allowed Values
Possible Allowed Status Codes
Adverse Actions
Encryption Keys for Interchange
Encryption Keys for RPPS
Account Number Issuance
Issuing Cards

Node Object Details

Node Schema

Key

Type

Required

Description

_id

String

N.A. Included in API response.

Primary Key of the node object.

allowed

String

Depends. Only required if you are trying to verify micro-deposit or close a node.

allowed_status_code

String

Depends. Only required if you are trying to close a node.

is_active

Boolean

Only required when trying to unindex a node.

client.id

String

N.A. Included in API response.

The Primary Key that denotes your client object in our system.

client.name

String

N.A. Included in API response.

Your common name in our system.

extra.note

String

Only required when you are trying to register a loan rejection in our system.

extra.supp_id

String

No

You can use this field to store the Primary Key of this object in your system.

timeline.date

Number

N.A. Included in API response.

Unix timestamp (in ms) value of when the timeline object was created.

timeline.note

String

N.A. Included in API response.

Human readable notes associated with the timeline object.

info

Object

Some values Yes.

interest.fee

Number

No

Charges the user a loan origination fee. Is added as part of the APR and requires a payment_node_id.

Possible Loan Rejection Reasons

Reason

Description

Set By

INCOME|INSUFFICIENT

Income insufficient for amount of credit requested.

You

INCOME|NOINFO

Cash flow information is insufficient.

You

INCOME|UNVERIFIABLE

Unable to verify income.

You

ACCOUNT|TOOSHORT

Length of account is too short with you.

You

ASSETS|INSUFFICIENT

Loan rejected because the amount in their checking account is lower than the amount of their first installment.

You

ACCOUNT|OVERMAXLOANS

Us

ACCOUNT|OVERMAXAMOUNT

Us

ACCOUNT|WRONGTYPE

Us

USER|NOKYC

KYC is not finished on the user. Please finish KYC and try again.

Us

ASSETS|INSUFFICIENT

Loan rejected because the amount in your checkings account is lower than the amount of your first installment.

You

LOAN|INSUFFICIENT

This loan is intended to help you pay down your debt, and we have determined your approved loan amount is insufficient to cover your debts at this point in time.

You

USER|UNVERIFIABLE

Your request for a loan was not able to be processed because we were unable to validate your identity with the details and credentials provided.

You

Possible Allowed Values

Allowed

Description

Next Steps

CREDIT-AND-DEBIT

Funds can be debited or credited from this node.

No action required.

CREDIT

Funds can only be sent to this node. No Debits allowed.

If this node is ACH-US, next step could be micro-deposit verification. If not, no action required. This is the final allowed permission. For example, in instances of a check, you can only send money to it, cannot debit from a check node.

DEBIT

Funds can only be debited from this node. No Credits allowed.

This is a common allowed value for Interchange nodes in instances where push to card has not been enabled my the issuer of the card. If the user wishes to push to card, ask the user to link another card.

INACTIVE

Currently the node is not active and is unable to transact.

Currently only used for One-time Credit Accounts. These nodes are set to INACTIVE after 60 days of inactivity. You can also use this status to suspend a loan with a PATCH API call. If you have set allowed to INACTIVE, please ensure that the end user has been notified of this change. NOTE: Unable to set LOAN-US node of REVOLVING or OPEN types to INACTIVE if node age is under one month or any non-cancelled or returned transaction created during past month exists.

LOCKED

The node has been locked.

REJECTED

Loan request was rejected.

Possible Allowed Status Codes

Allowed Status Code

Description

Next Steps

USER_REQUESTED

User requested the allowed status change.

No action required.

ISSUER_DIRECTED

Issuer of the node requested status change. Mostly used when an ACH or Interchange account needs to be locked for suspicious activity or invalid details.

Please ensure that the end user has been notified of this outcome.

ACCOUNT_CLOSED

Since the user account was being closed, the node was closed as well.

Please ensure that the end user has been notified of this outcome.

ACCOUNT_LOCKED

Since the user account was bing locked, the node was locked as well.

Please ensure that the end user has been notified of this outcome.

NOT_KNOWN

Allowed status change reason unknown.

No next steps recommend here since legacy tag.

Info Schema

Info Schema of Deposit Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "Default Checking Account".

balance.amount

Number

N.A. Included in API response

Balance held in the deposit node.

balance.currency

String

N.A. Included in API response

Currency of the deposit node.

monthly_withdrawals_remaining

Integer

N.A. Included in API response

If the deposit node has withdrawal restrictions, this value will denote how many more withdrawals are allowed. This value resets every month.

document_id

String

Yes

bank_code

String

N.A. Included in API response

Code of the bank where this account resides. Since we have multiple partner banks, this code can vary based on the bank partner where this account was opened.

agreements.type

String

N.A. Included in API response

agreements.url

String

N.A. Included in API response

The PDF URL of the appropriate agreement. Each agreement contains the IP, Timestamp and Device Fingerprint of the user at the time of node creation.

Info Schema of IC-DEPOSIT-US and IB-DEPOSIT-US

Key
Type
Required
Description

info.balance.interest

Number

N.A. Included in API response

Daily interest accrual of interest (accumulator). Will zero out on the following month after interest rate payout to the user.

Info Schema of Cash Management Account Object

Key

Type

Required

agreements.type

String

N.A. Included in API response

agreements.url

String

N.A. Included in API response

The PDF URL of the appropriate agreement. Each agreement contains the IP, Timestamp and Device Fingerprint of the user at the time of node creation.

bank_code

String

N.A. Included in API response

Code of the bank where all the processing for this account will happen. Since we have multiple partner banks, this code can vary.

document_id

String

N.A. Included in API response

bank_code

String

N.A. Included in API response

Code of the bank where this account resides. Since we have multiple partner banks, this code can vary based on the bank partner where this account was opened.

custody

String

Yes

Custody values include: FDICor MMF.

risk

String

Yes

Risk values include: CONSERVATIVE, MODERATEor AGGRESSIVE. Please note, in case of FDIC custody, risk values currently do not change impact on which banks funds are swept to.

balances

Object

N.A. Included in API response

Object containing the balances in the CMA account. The key is the accounts currency and the value is the amount of funds per currency. Eg. for USD, the key-value pair would be USD:100.00.

Info Schema of Revolving Credit Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "Default Credit Account".

balance.amount

Number

N.A. Included in API response

Current Balance owed by the user on this credit node.

balance.currency

String

N.A. Included in API response

Currency of the credit node.

credit_limit.amount

Number

Yes

Max credit extended to the user.

credit_limit.currency

String

Yes

Currency of the credit node.

interest.apr

Number

Yes

Current APR rate in %.

interest.cap

Number

Yes

Max interest owed by the user in appropriate currency.

interest.accrued

Number

N.A. Included in API response

Interest accrued so far.

interest.fee

Number

No

Charges the user a loan origination fee. Is added as part of the APR and requires a payment_node_id.

agreements.type

String

N.A. Included in API response

agreements.url

String

N.A. Included in API response

The PDF URL of the appropriate agreement. Each agreement contains the IP, Timestamp and Device Fingerprint of the user at the time of node creation.

document_id

String

Yes

schedule

String

Yes.

Payment schedule associated with the credit node. Currently only MONTHLY allowed.

bank_code

String

N.A. Included in API response

Code of the bank where all the processing for this account will happen. Since we have multiple partner banks, this code can vary.

reserve_node_id

String

No

If the resolving loan is intended to be a secured loan. Reserve Node ID can be used to supply the ID of the collateral/reserve account associated with the secured loan.

split_ratio

Integer

No

If the only is partially secured, supplying this value will require only upto the supplied value split in the reserve_node_id. For instance if split_ratio is 30, that means only 30% of credit_limit needs to be in reserve_node_id.

Info Schema of Open Credit Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "Default Credit Account".

balance.amount

Number

N.A. Included in API response.

Current Balance owed by the user on this credit node.

balance.currency

String

N.A. Included in API response.

Currency of the credit node.

interest.apr

Number

Yes

Current APR rate in %.

interest.cap

Number

Yes

Max interest owed by the user in appropriate currency.

interest.accrued

Number

Yes

Interest accrued so far.

agreements.type

String

N.A. Included in API response.

agreements.url

String

N.A. Included in API response.

The PDF URL of the appropriate agreement. Each agreement contains the IP, Timestamp and Device Fingerprint of the user at the time of node creation.

document_id

String

Yes

schedule

String

Yes

Payment schedule associated with the credit node. Currently only MONTHLY allowed.

bank_code

String

N.A. Included in API response.

Code of the bank where all the processing for this account will happen. Since we have multiple partner banks, this code can vary.

reserve_node_id

String

Yes

ID of the collateral/reserve account associated with the open loan.

Info Schema of One-Time Credit Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "Default Credit Account".

balance.amount

String

N.A. Included in API response.

Current Balance owed by the user on this credit node.

balance.currency

String

N.A. Included in API response.

Currency of the credit node.

credit_limit.amount

Number

Yes

Max credit extended to the user.

credit_limit.currency

String

Yes

Currency of the credit node.

interest.apr

Number

Yes

Current APR rate in %.

interest.cap

Number

Yes

Max interest owed by the user in appropriate currency.

interest.accrued

Number

N.A. Included in API response.

Interest accrued so far.

agreements.type

String

N.A. Included in API response.

agreements.url

String

N.A. Included in API response.

The PDF URL of the appropriate agreement. Each agreement contains the IP, Timestamp and Device Fingerprint of the user at the time of node creation.

auto_pay

Boolean

No

If true, users will be charged automatically based on their payment schedule. Default is false.

payment_node_id

String

No

Node ID where the repayment would come from when auto_pay is set to true.

disbursement_node_id

String

Yes

Node ID where the loan should be disbursed.

document_id

String

Yes

schedule

String

Yes

Payment schedule associated with the credit node. Currently only MONTHLY allowed.

next_payment

Number

Yes

Unix timestamp (in ms) value of when the next payment is due. When creating the loan, you need to supply an int value of how many days from today the next payment should happen.

NOTE: next_payment is updated automatically if auto_pay is set to True, otherwise it must be updated manually

num_payments

Integer

Yes

Number of installments to break the repayment into.

installments.amount

Number

N.A. Included in API response.

Amount due for the installment.

installments.date

Number

N.A. Included in API response.

Unix timestamp (in ms) value of when the installment payment is due.

bank_code

String

N.A. Included in API response.

Code of the bank where all the processing for this account will happen. Since we have multiple partner banks, this code can vary.

reserve_node_id

String

No

ID of the collateral/reserve account associated with the open loan.

split_ratio

Integer

No

If the only is partially secured, supplying this value will require only upto the supplied value split in the reserve_node_id. For instance if split_ratio is 30, that means only 30% of credit_limit needs to be in reserve_node_id.

Info Schema of ACH Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "BofA Checking Account".

account_num

String

Yes

Account number of the bank account.

routing_num

String

Yes

Routing number of the bank account.

speeds

Array of Strings

N.A. Included in API response.

Returns possible speeds at which payments can be sent to this account. Possible values are NEXTDAY,SAMEDAY,RTP.

In all cases, whenNEXTDAY is supported, SAMEDAY is as well. So functional variance will be RTP support or not.

match_info.email_match

String

N.A. Included in API response.

If bank account is liked with our account aggregation feature, here you can see if email listed on the bank account is a match with the email on the base document. Possible values: not_found/match/no_match.

match_info.phonenumber_match

String

N.A. Included in API response.

If bank account is liked with our account aggregation feature, here you can see if email listed on the bank account is a match with the phone on the base document. Possible values: not_found/match/no_match.

match_info.name_match

String

N.A. Included in API response.

If bank account is liked with our account aggregation feature, here you can see if email listed on the bank account is a match with the name on the base document. Possible values: not_found/match/no_match.

type

String

Yes if not through our account aggregation feature.

Type of ACH account. Possible values: PERSONAL, BUSINESS.

class

String

Yes if link not happening through our account aggregation feature.

Class of ACH account. Possible Values: CHECKING, SAVINGS, GENERAL_LEDGER, LOAN.

bank_name

String

N.A. Included in API response.

Name of bank.

bank_long_name

String

N.A. Included in API response.

Full name of the bank. In most cased bank_name and bank_long_name have the same value.

bank_logo

String

N.A. Included in API response.

Logo of the bank.

address

String

N.A. Included in API response.

Non-normalized address of the bank.

bank_code

String

Yes if link happening through our account aggregation feature.

Bank code used by us to denote this bank.

bank_hlogo

String

N.A. Included in API response.

Horizontal orientation friendly logo of the bank.

bank_url

String

N.A. Included in API response.

URL of the banks's website.

bank_address.address_city

String

N.A. Included in API response.

Address city of the bank's primary location.

bank_address.address_country_code

String

N.A. Included in API response.

ISO Alpha-2 formatted Address country code of the bank's primary location.

bank_address.address_postal_code

String

N.A. Included in API response.

Address zip/postal code of the bank's primary location.

bank_address.address_street

String

N.A. Included in API response.

Address street of the bank's primary location.

bank_address.address_subdivision

String

N.A. Included in API response.

Address subdivision (state) of the bank's primary location.

Info Schema of Interchange Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "BofA Debit Card".

document_id

String

Yes

card_hash

String

N.A. Included in API response.

Hash of the card details. This value can help you identify if the same card is being linked again and again throughout your platform.

card_number

String

Yes. Not in response.

exp_date

String

Yes. Not in response.

is_international

Boolean

N.A. Included in API response.

If the card is a non-US based card.

network

String

N.A. Included in API response.

Card's primary network. Possible values: AMEX, CCPay, Discover, IntlMasterCard, IntlVisa, MasterCard, MasterCardSend, MoneySend, Visa, VisaFF.

type

String

N.A. Included in API response.

Type of card. Possible values: Debit, Credit, PrePaid.

Encryption Keys for Interchange

Please use PKCS1_v1_5 padding to encrypt your data.

-----BEGIN PUBLIC KEY-----

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2QTPfkJW2xvWQUqAWt5+Q0QXHKw1+Z1I8mMPPN+Dfw3PkANwfkPh+cWT1lexLhAyk6IdQY3g02p5fcCBvnjWlLtfNIgC7ZoVWnv+eE7kPPipzpZPtolCS8q2iNm3/0+tU+0Xtz/SfJFrvIgBJgElCNSHz7gv4jmUDPdkgH5jm1xw1ElDK6lHH9YxL581X3oLF4FjJqcn1xXOfRB/eW5Ebj0JuLz7g3sm02FJTi4qeJwTjjVX5UqdZrV4gEmzhU3kGr2Mq+w0tEAIUvud0sy3Yu5g9BRf/MLY8HQcMrbuZwely1/d8Xypas4VN5L8lWgklIRO9L+h9BVaxEzg2nKZCwIDAQAB

-----END PUBLIC KEY-----
-----BEGIN PUBLIC KEY-----

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArbpGgZBGUiafuBVH/p1H8UCFDv+sxmMX6HPZOh7feWYAz66NAg6OTG6LMR0Dl/Vt90NbI65d5dX7lR/cZUY2SkK1vWSRs1XVtphWW6Vlz0Ehr5Y3g9Xr9T22GaaWgEhUlo/5wAEfgDW5rybshaM+VqyEnETWhyt32iK6DAEWK66KEBoArCrbQTrtao/K1OLuKHose3JuGLXzXvzOj3FuLfVNdkB0a9l2iiCiAnUydcs1aq6WwTePB9HuCizcw+55xX8P5Gofir9eqhbf4zuvVPSSOofoCsx9ZgwC1KpodhrGOCHBusgWUlAQNiDc5+rjB9PxTuNNN0pmB6t2PNZVgwIDAQAB

-----END PUBLIC KEY-----

Info Schema of RPPS Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "Comcast Account".

account_num

String

Yes

biller_id

String

Yes

ID of the biller.

Encryption Keys for RPPS

Please use PKCS1_v1_5 padding to encrypt your data.

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0b1tpW5s6k/d7thDpmup
TlNMva9h+QQn17c0ypo2uzWM+zpj5OAXwkjz7TmmMl/Uiu1Wm7WThIcMBQ+KLzm4
590UXxSTWxzOSQXWWAEzp4YkpxICYsNHA1GpLtqdA+rGQcyx3TJkdh1+5SWRCcRJ
QikUa5wcApEs+L/NBm8AeKy/rqtDjb0BjAqZvoVPe4J2zJlPwwbxrIspuSCQmxle
bIHti97+maflGuy/9XV8aw1FhKbM5oeQxs9M0J49x1a7aqpIEuW3Z224UQwuGzRo
0vN3pP3YGS5cfFjVjlaQFX0Ezavl4G7u9G2IpmPky/A1eDWyC50K/F0NRCtYb4Uk
wwIDAQAB
-----END PUBLIC KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApxPCzjKUcjktcu6DTVvw
WtDymXCJOdBaMCFejObzTgQVYWgaR2WgO0DJ8guAK02tB3yKHu+RjygAcI9GTrtR
MkJzgGA0iZ+QktiCS0ooH115TvIiPKDh9aQVqFNx7FFuji4c+KpSiHHzLnpxcUFB
7U7rq8GIqP3SkDPSFQAWwM+lANAJIzNRJx1I56odTZ1zSgsXtwH9SHjg34Ptdeu/
RjX759oWTcUdMmnHtpLOPe1co89dEpJ6QqPyo7IUHdnRfMiu63XgDUEzsaTQEevy
LeWj+VDH86y0uJbWu6CVMdEkBnNkTZDGiAmdeI0Q8LdinLUHX3j+5tzxj36iOQQi
NQIDAQAB
-----END PUBLIC KEY-----

Info Schema of Check Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "Rent Check".

payee_name

String

Yes

Name of the individual or business who will be receiving the check

payee_address.address_street

String

Yes

Address street of the payee.

payee_address.address_city

String

Yes

Address city of the payee.

payee_address.address_subdivision

String

Yes

Address subdivision (state) of the payee.

payee_address.address_country_code

String

Yes

ISO Alpha-2 formatted Address country code of the payee.

payee_address.address_postal_code

String

Yes

Address zip/postal code of the payee.

Info Schema of FedWire (WIRE-US) Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "Chase Checking Account".

account_num

String

Yes

Account number of the bank account.

routing_num

String

Yes

Routing number of the bank account.

bank_name

String

N.A. Included in API response.

Name of bank.

bank_long_name

String

N.A. Included in API response.

Full name of the bank. In most cased bank_name and bank_long_name have the same value.

bank_logo

String

N.A. Included in API response.

Logo of the bank.

address

String

N.A. Included in API response.

Non-normalized address of the bank.

bank_code

String

N.A. Included in API response.

Bank code used by us to denote this bank.

bank_hlogo

String

N.A. Included in API response.

Horizontal orientation friendly logo of the bank.

bank_url

String

N.A. Included in API response.

URL of the banks's website.

bank_address.address_city

String

N.A. Included in API response.

Address city of the bank's primary location.

bank_address.address_country_code

String

N.A. Included in API response.

ISO Alpha-2 formatted Address country code of the bank's primary location.

bank_address.address_postal_code

String

N.A. Included in API response.

Address zip/postal code of the bank's primary location.

bank_address.address_street

String

N.A. Included in API response.

Address street of the bank's primary location.

bank_address.address_subdivision

String

N.A. Included in API response.

Address subdivision (state) of the bank's primary location.

correspondent_info.routing_num

String

No

Routing number of the correspondent bank.

correspondent_info.bank_name

String

No

Name of the correspondent bank.

correspondent_info.address

String

No

Address of the correspondent bank.

Info Schema of SWIFT Wire (WIRE-INT) Object

Key

Type

Required

Description

nickname

String

Yes

Common name you wish to assign to the node. Eg. "HSBC Checking Account".

account_num

String

Yes

Account number of the bank account. NOTE: some countries require the account number to be in IBAN format. Please contact Synapse for a full list of countries that require IBAN account numbers.

swift

String

Yes

Routing number of the bank account in SWIFT format.

bank_name

String

N.A. Included in API response.

Name of bank.

bank_long_name

String

N.A. Included in API response.

Full name of the bank. In most cased bank_name and bank_long_name have the same value.

bank_logo

String

N.A. Included in API response.

Logo of the bank.

address

String

N.A. Included in API response.

Non-normalized address of the bank.

bank_code

String

N.A. Included in API response.

Bank code used by us to denote this bank.

bank_hlogo

String

N.A. Included in API response.

Horizontal orientation friendly logo of the bank.

bank_url

String

N.A. Included in API response.

URL of the banks's website.

bank_address.address_city

String

N.A. Included in API response.

Address city of the bank's primary location.

bank_address.address_country_code

String

N.A. Included in API response.

ISO Alpha-2 formatted Address country code of the bank's primary location.

bank_address.address_postal_code

String

N.A. Included in API response.

Address zip/postal code of the bank's primary location.

bank_address.address_street

String

N.A. Included in API response.

Address street of the bank's primary location.

bank_address.address_subdivision

String

Included in API response.

Address subdivision (state / province) of the bank's primary location. Required for banks in Canada (CA).

correspondent_info.routing_num

String

No

Routing number of the correspondent bank.

correspondent_info.bank_name

String

No

Name of the correspondent bank.

correspondent_info.address

String

No

Address of the correspondent bank.

bsb_number

String

No

State branch of the bank. Only needed for banks in AU.

branch_code

String

No

Branch code of the bank. Only needed for banks in BR,ID,UY.

branch_name

String

No

Branch name of the bank. Only needed for banks in CN.

clabe

INT (18)

No

CLABE number of the bank. Only needed for banks in MX.

routing_number

String

No

Routing number of the bank. Only needed for banks in PH.

tax_number

String

No

Tax or Government ID number of the recipient. Required for some countries. AR , CO , CR , DO , GT , PE , RU .

Possible Agreement Types

Type

Description

NODE_AGREEMENT

Agreement associated with node creation. This is the agreement that was presented to the user before the node was created. Please ensure that the end user has access to a copy of this agreement.

ADVERSE_ACTION

TERMINATION_LETTER

Only used in case of Credit Accounts in instances when a credit account is terminated. Please ensure that the end user has been notified of this outcome.

Generate eCash Barcode

Barcode

POST https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/barcode

This endpoint allows you to generate a barcode for Greendot's eCash feature. Currently only avaliable for Deposit Accounts.

Path Parameters

Name
Type
Description

node_id

string

ID of the node.

user_id

string

ID of the user.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

Request Body

Name
Type
Description

amount.amount

number

The amount the user wishes to deposit.

amount.currency

string

The currency of the amount.

retailer_id

integer

Greendot supports eCash for a limited number of retailers. See IDs below: - 2481 for 7-Eleven

- 2433 for CVS - 2460 for Rite Aid - 2812 for Walmart

{
    "_id": "5f164328373b92fecffaadd3",
    "barcode": "629964901060000392300000000000",
    "barcode_base64": "iVBORw0KGgoAAAANSUhEUgAAAhQAAAEYCAIAAACLMvhUAAAOBElEQVR4nO3cW4iV5f7A8WepoylqnlJTQ/CQqaUdbupOFDU1TLKwwMIIrQipMLGoTKW7MLSbKKGTkGEGsUUrQcyyJLOsRMmzZOapsBwbczzM/2LtPXv2rJnx+cl/z55Yn89VrvVbz/O+77zNd86FmpqaBAARrf7XBwDA3494ABAmHgCEiQcAYeIBQJh4ABAmHgCEiQcAYeIBQJh4ABDW5r+3dKFQqP3v2j+CUnyw3t9EqTtZ+pLGBhqcrPeSBvetXa3ePxtcs4mtm16tib/7Um/NJs70Mg7jkg/W26uJq9f0sUWPMDXyVogecIPPNn3ATayTc/oN3ksNanq10jVLX5h/bDmrNfESq/2/rJbzP2+Da172C5s4i8beof2X/gaVzzwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACBMPAMLEA4Aw8QAgTDwACCvU1NT8r48BgL8Zn3kAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJBwBh4gFAmHgAECYeAISJx79VVVUtWLBg+PDhHTp06Nmz56xZsw4dOlT77NmzZ1euXDl58uQBAwa0a9euV69e99xzz7Zt2+otcvr06Xnz5g0ePLhdu3bdunWbNGnSli1bLmPmksdTz5IlSwqFQqFQ2Lt372XstXXr1ttvv/3KK6/s3Lnz2LFjN2/eXG+gsrLy/fffv//++7t3714oFO69994GD+OS62SeV846zTNz8eLFTz755MEHHxw6dOgVV1zRs2fPKVOmlK5zyeucc/9k7tWiro+Z8lVDTU1NTc3JkydHjhxZ7+JMnTq1dmDZsmWlV6+iomL16tW1M2fOnLnllltKZzZs2BCayTmeuo4fP96lS5fizJ49e6J7ffXVV+3atas389lnn9Wdefjhh+sOTJs2rfQwctbJOa+cdZptpsH3F61atVq5cmXoOufcPzl7tbTrU+Yz5Uw8/unBBx9MKfXu3XvVqlWVlZUnT55cvnz5U089VTuwfPnyu+66a9WqVXv27Kmqqtq+ffu4ceOKLzl37lxx5tVXX00p9enTZ+3atZWVlYcPH37uuedSSsOGDbt48WL+TM7x1PXQQw+NHDly6NCh6T/jkbnXzTffnFKaPn360aNHjx8//tBDD6WUhg8fXndm7ty5d99999tvv/3WW2+lRuKRs07OeeWs02wzW7ZsGTdu3IoVK3bv3n3mzJn9+/c/8sgjKaWrrroq9HbPuX9y9mpp16fMZ8qZeNTU1NQcPXq0devWrVu3/uabb/Jf9ccff3Ts2DGltG3btuIjU6dOTSm98cYbdccmTJiQUvr666/zZ0LHs3Xr1latWq1fv3748OH14pGz17fffptS6tev39mzZ4uPnDt3bsCAASmlL774onS71atXNxiPnHVyzitnneacaVBxZufOncV/5lznUqX3T85eLe36lPNMmfM9j5RSWrt27YULFyZPnlz8WCNT586dizfTxYsXi4/89ttvKaXrrruu7ljxqzSbNm3Kn8k/npqamtmzZ99xxx2jR48ufTZnr40bN6aUpkyZ0rZt2+Ijbdq0Kb433LBhQ9O715WzTs555azTnDMNKhQKKaXOnTsX/5lznUuV3j85e7W061POM2VOPFJK6fvvv08pTZo0KfSqs2fPHjx4sEuXLtdff33xke7du6eUdu3aVXfshx9+SCnVfh87Zyb/eN55552tW7e+9NJLDT6bs9fu3btTSjfccEPdmeI7vuJTmXLWyTmvnHWac6auc+fO7d69e+bMmfv27Rs7dmzfvn2Lj+dc51Kl90/OXi3t+pTzTJkTj5RSOnbsWEpp+PDhy5YtGzRoULt27QYMGDBnzpxTp0418arFixefOnVq3rx5tR+bjBkzJqX0/PPPr1u37vTp00eOHFmwYMH69etTSidPnsyfyTyeysrKp59++rHHHrv22msbPMKcvYofNffq1avuC3v27Fn7VKacdXLOK2ed5pwp2rt3b6FQaNu27ZAhQ959992ZM2d+8MEHtc/mXOdSpfdPzl4t7fqU80yZE4+UUqqqqkopffjhh7Nmzdq3b191dfWBAwdefvnlUaNGnT17tsGXbNy48YUXXhg1atTcuXNrH5wxY8aIESN+/vnn8ePHd+rUqU+fPgsXLpw9e3ZKqXadnJnM41m0aFF1dfX8+fMbO6+cvf7666+UUtu2bQ8fPjxgwID+/fvv37+/+EMmZ86cyb+GOevknFfOOs05U+rChQvV1dXnz58PXed6Grx/cvZqadennGfKnHiklFLxQ7+lS5cuXLjwl19+OXXq1Nq1a3v37r1t27Z33nmndP67776bMmXK4MGDP/jgg9atW9c+3r59+40bNz7++OP9+/evqKgYPHjwm2++OXHixJRShw4d8mdyjmfXrl1Lly5dsGBB165dGzuvnL2uuOKKlFJ1dfXFixfPnz9f/EmS4ru89u3b51/DnHVyzitnneacKRo0aFDxqZ07dz7wwANvv/326NGjL1y4kH+d62rs/snZq6Vdn3KeKXPikVJKxfe/EydOnD9//tVXX92pU6cJEyYsWrQopVT84kNdO3fuHDt27JVXXrlu3bpu3brVe7ZLly5Lliw5ePBgdXX17t27Z8yYsWPHjvSfn/9ecibneJ544omBAwc++uijTZ/aJfcqfr3+2LFj11xzzU8//XTo0KGBAwceP3689qlMOevknFfOOs05U1fbtm2HDh36+uuvT548+bvvvvvHP/6Rf51rNX3/XHKvlnZ9ynmmzIlHSikNGjQo/eu7YbWGDBmSSr6+uWvXrjFjxlRUVKxfv75fv345i69ZsyalNGLEiPyZnOP5+OOPf/zxx4qKisK/FN9bDR48uFAo/Prrr5l7Fb9fsn379rozxW/2NvatlAblrJNzXjnrNOdMg2699daUUvGCN6bBt/tl3D/19mpp16ecZ8pd8/5kcAv1+eefp5Lfc37ttddSSvfdd1/tI3v27Onbt2+PHj127NiRufLmzZsLhUKbNm1OnDiRP5NzPE2/WRvbrnSv5vw9j5zz+lv8LP/kyZNTSosXL25soMG3+2XcP6V7tbTrU84zZU48ampqas6fP1+8LV588cUjR45UVlYWvxaf6vzm1759+/r169e1a9emf6Vrzpw57733XnGRlStXFn88Y9asWaGZnOMpVfpLgpnHc+ONN6aUpk+ffuzYsRMnThR/k3bo0KEXLlwo3aWxeOSsk3leOcfTbDOzZ89+8sknN23adPTo0aqqqh07dhR/67tVq1Z1G3DJ65xz/2Tu1aKuT5nPlDPx+KePPvqo9FuXt912W3V1dXHg2WefTY1YsWJF7Tp33nlnvWdvuumm33//ve5eOTOXPJ5SDcYjZ68vv/yy3t/wadOmzaefflp3Zvny5Q2e+5133hlaJ+e8ctZptplp06Y1eOILFiwIXeec+ydzrxZ1fcp8ppyJx79t2rRp/PjxXbp0qaioGDRo0DPPPPPnn3/WPpsZjwMHDsyYMaNv377t27cfNmzYwoULq6qq6m2UM3PJ4ynVYDwy9yr+VaVOnTp17NhxzJgxpZ+Y58QjZ53M88pZp3lmTpw48corr4waNapfv34VFRU9evSYMGHCmjVr6i1yyeucc/9k7tWiro+ZslWoudRXzwGgHj9tBUCYeAAQJh4AhIkHAGHiAUCYeAAQJh4AhIkHAGHiAUCYeAAQJh4AhIkHAGHiAUCYeAAQJh4AhIkHAGH/B6BcN0Z7oGNpAAAAAElFTkSuQmCC"
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

POST /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/barcode HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "amount": {
        "amount": 100,
        "currency": "USD"
    },
    "retailer_id": 2481
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/barcode' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_isTNxF03CIy0btQDHzlhG82Owm4uonfVUjE9SpPe|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "amount": {
        "amount": 100,
        "currency": "USD"
    },
    "retailer_id": 2481
}'
//
//
//
//

View Green Dot Locations

Subnets

Account Number Issuance

Our account/routing numbers (subnets) are identical to those found at traditional banks and allow for the same functionality (e.g. the user crediting or debiting their deposit account on our system from an external bank via ACH). Users simply need to provide their assigned account and routing number to their external bank or third party software.

Card Number Issuance

We also have the capability to issue cards on top of our accounts. They follow the functionality of those issued by traditional banks (e.g. ATM access, consumer protection), and give access to the interchange rails (e.g. providing the ability to push funds to the card/account).

Subnet Object Details

Subnet Schema

Key

Type

Required

Description

_id

String

N.A. Included in API response.

Primary Key of the subnet object.

user_id

String

N.A. Included in API response.

ID of the user who owns this subnet.

node_id

String

N.A. Included in API response.

ID of the node who owns this subnet.

client.id

String

N.A. Included in API response.

The Primary Key that denotes your client object in our system.

client.name

String

N.A. Included in API response.

Your common name in our system.

nickname

String

Yes

Common name you wish to assign to the subnet. Eg. "Checking Account".

account_class

String

Yes

Account class of subnet. Allowed values: CHECKING, SAVINGS, CARD.

status

String

No

status_code

String

No

created_on

String

N.A. Included in API response.

Unix timestamp (in ms) value of when the subnet was created.

updated_on

String

N.A. Included in API response.

Unix timestamp (in ms) value of when the subnet was last updated.

supp_id

String

No

You can use this field to store the Primary Key of this object in your system.

agreements.type

String

N.A. Included in API response or async through webhook.

Type of agreement attached on the subnet. Possible values: SUBNET_AGREEMENT.

agreements.url

String

N.A. Included in API response or async through webhook.

The PDF URL of the appropriate agreement. Each agreement contains the IP, Timestamp and Device Fingerprint of the user at the time of subnet creation.

tokens.is_active

Boolean

No.

Current state of the linked card in the mobile wallet.

tokens.unique_reference

String or null

No.

The Mastercard unique token reference to the mobile wallet (Google Pay, Apple Pay, etc).

Additional Values for Cards

Key

Type

Required

Description

card_number

String

N.A. Included in API response.

Card number issued to the subnet.

cvc

String

N.A. Included in API response.

CVC associated with the subnet.

pin

String

No. Value not returned in the response.

exp

String

N.A. Included in API response.

Expiration date of card (in YYYY-MM-DD).

card_style_id

String

No

wallet_style_id

String

No

preferences.allow_foreign_transactions

Boolean

No

If True, foreign transactions will be enabled on card.

preferences.daily_transaction_limit

Number or null

No

Daily total transaction amount (in cents) allowed on the card. Datetime tracked in UTC.

When null, the card limits will default to your program limits.

preferences.daily_cash_limit

Number or null

No

Daily total amount in cash transactions (in cents) allowed on the card. Datetime tracked in UTC.

When null, the card limits will default to your program limits.

preferences.monthly_transaction_limit

Number or null

No

Currently in UAT Only

Monthly overall transactions allowed on the card. Datetime tracked in UTC.

When null, the card limits will default to your program limits.

preferences.monthly_cash_limit

Number or null

No

Currently in UAT Only

Monthly cash transactions allowed on the card. Datetime tracked in UTC.

When null, the card limits will default to your program limits.

Additional Values for Account Numbers

Key

Type

Required

Description

account_num

String

N.A. Included in API response.

Account number assigned to the subnet.

routing_num.wire

String

N.A. Included in API response.

Wire routing number assigned to the subnet.

routing_num.ach

String

N.A. Included in API response.

ACH routing number assigned to the subnet.

Encryption Keys for Subnet

Please use PKCS1_v1_5 padding to encrypt your data.

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0b1tpW5s6k/d7thDpmup
TlNMva9h+QQn17c0ypo2uzWM+zpj5OAXwkjz7TmmMl/Uiu1Wm7WThIcMBQ+KLzm4
590UXxSTWxzOSQXWWAEzp4YkpxICYsNHA1GpLtqdA+rGQcyx3TJkdh1+5SWRCcRJ
QikUa5wcApEs+L/NBm8AeKy/rqtDjb0BjAqZvoVPe4J2zJlPwwbxrIspuSCQmxle
bIHti97+maflGuy/9XV8aw1FhKbM5oeQxs9M0J49x1a7aqpIEuW3Z224UQwuGzRo
0vN3pP3YGS5cfFjVjlaQFX0Ezavl4G7u9G2IpmPky/A1eDWyC50K/F0NRCtYb4Uk
wwIDAQAB
-----END PUBLIC KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApxPCzjKUcjktcu6DTVvw
WtDymXCJOdBaMCFejObzTgQVYWgaR2WgO0DJ8guAK02tB3yKHu+RjygAcI9GTrtR
MkJzgGA0iZ+QktiCS0ooH115TvIiPKDh9aQVqFNx7FFuji4c+KpSiHHzLnpxcUFB
7U7rq8GIqP3SkDPSFQAWwM+lANAJIzNRJx1I56odTZ1zSgsXtwH9SHjg34Ptdeu/
RjX759oWTcUdMmnHtpLOPe1co89dEpJ6QqPyo7IUHdnRfMiu63XgDUEzsaTQEevy
LeWj+VDH86y0uJbWu6CVMdEkBnNkTZDGiAmdeI0Q8LdinLUHX3j+5tzxj36iOQQi
NQIDAQAB
-----END PUBLIC KEY-----

Possible Status Values

Allowed

Description

INACTIVE

Currently the subnet is not active and unable to transact except for force posts.

TERMINATED

The subnet has been terminated and unable to transact except for force posts.

ACTIVE

Subnet is active and ready for use.

Possible Status Codes

Allowed Status Code

Description

Next Steps

USER_REQUESTED

User requested the allowed status change. Subnet will remain inactive upon account reopen.

No action required.

FRAUD_ALERT

Either the network, Synapse or you changed the status due to fraud concerns. Subnet will remain inactive upon account reopen.

Please ensure that the end user has been notified of this update.

ACCOUNT_CLOSED

Since the user account was being closed, the subnet was closed as well. When the user account opens, the subnet will go back to active.

Please ensure that the end user has been notified of this outcome.

ACCOUNT_LOCKED

Since the user account was locked, the subnet was locked as well. When the user account opens, the subnet will go back to active.

Please ensure that the end user has been notified of this outcome.

NOT_KNOWN

Allowed status change reason unknown. When the user account opens, the subnet will go back to active.

No next steps recommend here since legacy tag.

Testing on UAT

Shipments

View Subnet

Subnet

GET https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets/:subnet_id

This endpoint allows you to get a specific subnet document.

Path Parameters

Query Parameters

Headers

Example Request

Create Subnet

Subnets

POST https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets

This endpoint allows you to create a subnet.

Path Parameters

Headers

Issue Account Number

Issue Card

We require that you first generate a preview of the subnet agreement, display it to the user to get their consent and then create the subnet. To generate a preview, add "preview_only":true to the payload.

If you are approved to issue various bins with us in any given cip_tag, you can choose to supply the BIN as bin in the payload to be able explicitly pick the BIN you wish to issue from.

Update Subnet

Subnet

PATCH https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets/:subnet_id

This endpoint allows you to update a subnet.

Path Parameters

Headers

Update Subnet Status

Set Card Subnet PIN

Set Card Subnet Preferences

Note: When patching subnet preferences, use USD amounts. When viewing the subnet object using a GET call, the amounts will be shown in cUSD (cents).

Shipment Object Details

Shipment Schema

Possible delivery Values

Possible delivery_carrier Values

Possible status Values

Push to Wallet

Mobile Wallets are digital wallets held on mobile devices that transact with merchants by turning Native Card Primary Account Numbers (PANs) into digital tokens (e.g. for use with Apple Pay, G

Push

POST https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets/:subnet_id/push

This endpoint allows you generate a token to push card to digital wallet.

Path Parameters

Headers

Request Body

Example Request

Notes on Apple Pay

Below is an overview of the data you must pass from Synapse's API response to Apple's PKAddPaymentPassRequest:

  • activationData: This is the activation_data returned in Synapse's API response.

  • encryptedPassData: This is the encrypted_data returned in Synapse's API response.

  • ephemeralPublicKey: This is the public_key returned in Synapse's API response.

Notes on Google Pay

The Opaque Payment Card ('OPC') object is a combination of the encrypted_data and activation_data returned in Synapse's API response, and can be constructed as follows:

Here is an example:

Once you have the OPC object, you should encode it as Base64. The above object would be:

Finally, this is the call your app would make to Google:

The current allowed permissions of the node object. Go to to learn more.

The reason for the current allowed value. Go to to learn more.

If false, the node will not be shown in response. This feature is used to remove old accounts from a user list call if the user is not intending to use them anymore, usually used for old . If you wish to update the transaction ability of a node, please review the allowed field. Toggling is_active does not impact the ability of a node to transact.

This value stores the loan rejection reasons. Go to to learn more.

Go to to learn more.

They have reached the maximum number of loans that can be offered at one time. This is defined in your spec sheet. Go to to learn more.

The amount requested is higher than what can be offered. This is defined in your spec sheet. Go to to learn more.

Wrong loan type being requested. This is defined in your spec sheet. Go to to learn more.

If this is set by you, please ensure that a proper allowed status code has been supplied with it. Go to to learn more. Please ensure that the end user has been notified of this change.

Currently used for credit accounts, this code denotes that the loan request was rejected. This can be done by you when calling POST node API call or our internal rules could cause a rejection as well. The score card is documented on your spec sheet. Go to to learn more. Please ensure that the end user has been notified of this outcome.

The node resource is used to create or link various types of liquidity accounts to the user. The purpose of this is to allow you to easily interface and build with , or . For that reason, various types of nodes have various types of information avaliable inside the info object.

ID of the who is the primary owner of this node.

Type of agreement attached on the node. Go to to learn more.

Type of agreement attached on the node. Go to to learn more.

ID of the who is the primary owner of this node.

Type of agreement attached on the node. Go to to learn more.

ID of the who is the primary owner of this node.

Type of agreement attached on the node. Go to to learn more.

ID of the who is the primary owner of this node.

Type of agreement attached on the node. Go to to learn more.

ID of the who is the primary owner of this node.

ID of the who is the primary owner of this node.

Encrypted card number. Go to .

Encrypted expiration date in YYYYMM format. Go to .

Encrypted account number. .

Only used in case of Credit Accounts, this is an . Go to to learn more. Please ensure that the end user has been notified of this outcome.

To view available Green Dot Locations, use our endpoint. This endpoint shows locations that participate in both of Green Dot's available features: eCash and/or Swipe to Deposit.

Subnet Object issues external facing “addresses” for Synapse Wallets ( and ), which enable Synapse Wallets to interface with the outside world. The idea is pretty simple, by default all Synapse Wallets are closed loop, issuing subnets should give them a public address that can be used by other networks to interoperate with these wallets. Currently we support issuing Account Numbers that enable ACH and Wire interoperability and also Card Numbers that enable Interchange based interoperability.

Accounts don't automatically come with subnets - that is optional so you have the ability to create closed-looped systems. However, we encourage you to use account number issuance to receive funds, as there is little return risk for credits. This is especially helpful with large transactions or risky payment flows. We also recommend using account number issuance to set up direct deposit for payroll (when applicable). Please note that check issuance from these account/routing numbers is not supported. If you require check issuance, we recommend looking into our .

Cards can be issued on top of our and products. They can be virtual or physical and for businesses or individuals. We can issue debit BINs (cards that are used in the card networks' "debit card" payment network) and credit BINs (only available when the card is used for a account; makes use of the card networks' "credit card" payment network).

Status of the subnet. Go to to learn more.

Reason for status update. Go to to learn more.

Encrypted 4 digit card PIN. See . Some terminals will require a pin for debit transactions. Setting one is recommended.

Style ID of card. Used when a card is shipped. Go to to learn more.

Style ID of card when loaded on to a wallet. You can only set up pre approved wallet style ids like card style ids. Approved wallet style ids will be avaliable in your spec sheet. Go to to learn more.

Testing for Subnets on UAT mostly focuses on testing Subnet transactions. To test Card Subnet transactions, please go to . While to test Account Number Subnet transactions, please go to .

If you wish to add custom decisioning rules for subnet withdrawals, please also review add .

Shipment Objects manage all the shipping requests submitted to us. Currently we support printing and shipping a .

Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description

Go to to see all the required and optional body parameters allowed during subnet creation. Following are a few examples of various subnets and how to create them:

Name
Type
Description
Name
Type
Description

Go to to see all the required and optional body parameters allowed during node updates. Following are some examples of most common update calls:

Go to and to learn more.

In the following example the pin is encrypted. Go to to learn more.

Name
Type
Description
Name
Type
Description
Name
Type
Description

Please review Apple's for additional information on how to implement push provisioning in your iOS app. Apple has 3 different "Payment Data Configurations" - Synapse uses Configuration 1.

Please review Google's for additional information on how to implement push provisioning in your Android app.

deposit
credit
payment
View ATMs
Deposit Hub
Credit Hub
check issuance feature
deposit
credit
credit
Virtual Terminal
Dummy Transactions
Transaction Decisioning

subnet_id

string

ID of the subnet.

node_id

string

ID of the node.

user_id

string

ID of the user.

full_dehydrate

string

Set to YES if you wish to receive all subnet PII in the response. Default is NO.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fdaa7d56387987e63f30d9e",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fdaa7d56387987e63f30d9e"
        }
    },
    "abu_token": "5fdaa7d6e4428eb1b8b13c25",
    "account_class": "CARD",
    "agreements": [
        {
            "type": "SUBNET_AGREEMENT",
            "url": "https://cdn.synapsepay.com/uploads/2020/12/17/dF2fpTiX1uq9bOmVSYw3HM6NgeorP4zkUZA0JE7hQay08GLWIl.pdf"
        }
    ],
    "card_number": "6707",
    "card_style_id": null,
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "created_on": 1608165332508,
    "cvc": "***",
    "exp": "2024-12-16",
    "nickname": "My Debit Card",
    "node_id": "5fd901bb20b3aa0bc7caee85",
    "preferences": {
        "allow_cash_transactions": true,
        "allow_foreign_transactions": false,
        "daily_cash_limit": 100.0,
        "daily_transaction_limit": 1000.0
    },
    "status": "INACTIVE",
    "status_code": "USER_REQUESTED",
    "supp_id": null,
    "updated_on": 1608165334534,
    "user_id": "5fd7acfd8677040053ad486d"
}
{
    "_id": "5fdaa7d56387987e63f30d9e",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fdaa7d56387987e63f30d9e"
        }
    },
    "abu_token": "5fdaa7d6e4428eb1b8b13c25",
    "account_class": "CARD",
    "agreements": [
        {
            "type": "SUBNET_AGREEMENT",
            "url": "https://cdn.synapsepay.com/uploads/2020/12/17/dF2fpTiX1uq9bOmVSYw3HM6NgeorP4zkUZA0JE7hQay08GLWIl.pdf"
        }
    ],
    "card_number": "5119130013186707",
    "card_style_id": null,
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "created_on": 1608165332508,
    "cvc": "273",
    "exp": "2024-12-16",
    "nickname": "My Debit Card",
    "node_id": "5fd901bb20b3aa0bc7caee85",
    "preferences": {
        "allow_cash_transactions": true,
        "allow_foreign_transactions": false,
        "daily_cash_limit": 100.0,
        "daily_transaction_limit": 1000.0
    },
    "status": "INACTIVE",
    "status_code": "USER_REQUESTED",
    "supp_id": null,
    "updated_on": 1608165334534,
    "user_id": "5fd7acfd8677040053ad486d",
    'tokens': [{
        'is_active': True,
        'unique_reference' : "DAPLMC00002...8deee71d8f'
        }]
    }
}
{
    "error": {
        "code": "missing_user_ip",
        "en": "User IP is missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
GET /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fdaa7d56387987e63f30d9e HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fdaa7d56387987e63f30d9e' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//

node_id

string

ID of the node.

user_id

string

ID of the user.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fdaa7d0d608d8b2ea80a6e4",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fdaa7d0d608d8b2ea80a6e4"
        }
    },
    "account_class": "CHECKING",
    "account_num": "9826994713",
    "agreements": [],
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "created_on": 1608165328800,
    "nickname": "Test AC/RT",
    "node_id": "5fd901bb20b3aa0bc7caee85",
    "routing_num": {
        "ach": "084106768",
        "wire": "084106768"
    },
    "status": "ACTIVE",
    "status_code": null,
    "supp_id": null,
    "updated_on": 1608165328806,
    "user_id": "5fd7acfd8677040053ad486d"
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
	"nickname":"Test AC/RT"
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
--data-raw '{
	"nickname":"Test AC/RT"
}'
//
//
//
//
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
	"nickname":"My Debit Card",
	"account_class":"CARD"
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_0YFNLHvg2c0mjGopszQ45yOBiqSUl8xruCRfaZXw|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
	"nickname":"My Debit Card",
	"account_class":"CARD"
}'
//
//
//
//
Enable Direct Debit and Credit
Issue a Card
Issue a Card
Enable Direct Debit and Credit
Issue a Card

subnet_id

string

ID of the subnet.

node_id

string

ID of the node.

user_id

string

ID of the user.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fe28e3e7dac291e78cb4d74",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe28e3e7dac291e78cb4d74"
        }
    },
    "abu_token": "5fe28e3fd50242edf01b0a5e",
    "account_class": "CARD",
    "agreements": [
        {
            "type": "SUBNET_AGREEMENT",
            "url": "https://cdn.synapsepay.com/uploads/2020/12/23/6kVEz9x2Wi7R5DcqsGZd1uOlXSKBhafH0Cbnv34ojMNYIgptJQ.pdf"
        }
    ],
    "card_number": "1976",
    "card_style_id": null,
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "created_on": 1608683069618,
    "cvc": "***",
    "exp": "2024-12-22",
    "nickname": "My Debit Card",
    "node_id": "5fd901bb20b3aa0bc7caee85",
    "preferences": {
        "allow_cash_transactions": true,
        "allow_foreign_transactions": false,
        "daily_cash_limit": 100.0,
        "daily_transaction_limit": 1000.0
    },
    "status": "ACTIVE",
    "status_code": null,
    "supp_id": null,
    "updated_on": 1608683075046,
    "user_id": "5fd7acfd8677040053ad486d"
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe28e3e7dac291e78cb4d74 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_A0GrzQJKInyljsCtNV37MbeF4ZTYxau9o1WSkdpq|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
	"status":"ACTIVE"
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe28e3e7dac291e78cb4d74' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_A0GrzQJKInyljsCtNV37MbeF4ZTYxau9o1WSkdpq|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
	"status":"ACTIVE"
}'
//
//
//
//
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe28e3e7dac291e78cb4d74 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_A0GrzQJKInyljsCtNV37MbeF4ZTYxau9o1WSkdpq|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
	"pin": "VJu4gc4mWlXdBXxtdUnZTIqjK+oEGAJAvbk822A7U3tLtwKJmdhk4WpyJaCxUBe7+LuOasnCpVlOcJbL0okopRrNN2sw4w5XEFhhJ2hbTBsWw2u7hC2SZF58W0zpzJKuWjvdandeGVMXWw17ZHZ2QRDX3jd5Yc6ndtzC2ebPPw/D0d9bOAQYEanD+PBHqI0/O0CHxEqxMobHa/iyLElnQ5/mrB01g9+WIJhOSDCIq2OH1XHSo1upX8KGScxOFOd7XuMvNocWWKP1ILrLrmAPEIRfghInCjPPdJh/9nBTVh3qrUu/3dovCNDN5nUs0ljN/6qp5VxXAI79kYq/8vtTlA=="
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe28e3e7dac291e78cb4d74' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_A0GrzQJKInyljsCtNV37MbeF4ZTYxau9o1WSkdpq|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
	"pin": "VJu4gc4mWlXdBXxtdUnZTIqjK+oEGAJAvbk822A7U3tLtwKJmdhk4WpyJaCxUBe7+LuOasnCpVlOcJbL0okopRrNN2sw4w5XEFhhJ2hbTBsWw2u7hC2SZF58W0zpzJKuWjvdandeGVMXWw17ZHZ2QRDX3jd5Yc6ndtzC2ebPPw/D0d9bOAQYEanD+PBHqI0/O0CHxEqxMobHa/iyLElnQ5/mrB01g9+WIJhOSDCIq2OH1XHSo1upX8KGScxOFOd7XuMvNocWWKP1ILrLrmAPEIRfghInCjPPdJh/9nBTVh3qrUu/3dovCNDN5nUs0ljN/6qp5VxXAI79kYq/8vtTlA=="
}'
//
//
//
//
PATCH /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe28e3e7dac291e78cb4d74 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_A0GrzQJKInyljsCtNV37MbeF4ZTYxau9o1WSkdpq|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
	"preferences": {
		"allow_foreign_transactions":false,
		"daily_transaction_limit":2000,
		"daily_cash_limit":500
	}
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe28e3e7dac291e78cb4d74' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_A0GrzQJKInyljsCtNV37MbeF4ZTYxau9o1WSkdpq|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
	"preferences": {
		"allow_foreign_transactions":false,
		"daily_transaction_limit":99,
		"daily_cash_limit":99.99
	}
}'
//
//
//
//
instantly activated
instantly activated
instantly activated

Value

Description

STANDARD

Shipment will go through regular mail.

STANDARD|TRACKING

Shipment will go through regular mail with tracking.

EXPEDITE

Shipment will be expedited for faster delivery.

OVERNIGHT

Shipment will be spent overnight.

Value

Description

USPS

Delivery Carrier for this shipment is USPS.

FEDEX

Delivery Carrier for this shipment is FedEx.

UPS

Delivery Carrier for this shipment is UPS.

Value

Description

CREATED

Shipment has been created but not shipped yet.

BATCHED

Shipment has been issued to the card printer.

ACCEPTED

Shipment has been accepted by our card printer.

SHIPPED

Shipment has been shipped.

RETURNED

Shipment was shipped but returned.

CANCELED

Shipment was canceled and not shipped.

subnet_id

string

ID of the subnet.

node_id

string

ID of the node.

user_id

string

ID of the user.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

type

string

Instant provisioning type. Can be set as APPLE_PUSH, GOOGLE_PUSH, or SAMSUNG_PUSH.

nonce

string

Base64-encoded nonce provided by Apple.

nonce_signature

string

Base64-encoded nonce signature provided by Apple.

certificates

string

Array of 2 certificates provided by Apple.

{
    "data": {
        "authentication": {
            "activation_data": "eyJ2ZXJzaW9uIjogIjMiLCAic2lnbmF0dXJlQWxnb3JpdGhtIjogIlJTQS1TSEEyNTYiLCAiZGF0YVZhbGlkVW50aWxUaW1lc3RhbXAiOiAiMjAyMC0xMi0yM1QwMTozMTo0NloiLCAiaW5jbHVkZWRGaWVsZHNJbk9yZGVyIjogImRhdGFWYWxpZFVudGlsVGltZXN0YW1wfGFjY291bnROdW1iZXJ8YWNjb3VudEV4cGlyeSIsICJzaWduYXR1cmUiOiAiZXZ1bmVvc0M1ZEVwMG1OaFpxWkVsaWJvV2tHSkJ5N005Mm00YXRNeVE1S1JJMDI0MTR5UFFyWUhGYXZqWk1FRDd5VXcxR21ETzZlMHF1bk91VGRuY2l3STljYmxRd01IQ3NNSWlwdGF6UWcwTCtVcEIweXEzUzRLSm5OQVlkZGR4cGJHbnU5WjZMSjZWSnVjSXJvbUovVXFkYnc3ajV0TTJka3RKZWt6L3pWZHpORXlyOUJJeklhb2NCMmVPSzk2OHFFNTkxWTYwdTZmVFNQK0ZSYUZaZVZGLzQyTnNWdTFMYmkzK1NUK001RnREWHJqL2luUXd2dnFYYXNzNlhKVVNIbDBKb1hBZXhSRXdHdlVoUHdvMmU4amRxZTBpdzhkQ0J6bUpxNS80bkJHWEQ4NEtFTkpLNER0ZmF6cmxucFZLK2VucHp1cE43T1BxdlQrSlU3Ykl3PT0ifQ==",
            "encrypted_data": "Iy/xjUlfaKoSqqDs9sQW2JZA6FwFZai0ynNFt6V4XVYps6X89DAUVNEkuH1xj9Qxj0KgRiyNCJJ4Cx5TQzLx+05pZbZjPKLlX+WVrBessL43U9nQqoTfTELuufFr8Z/Aq554izOPHsB4jgddRsJYl9pNm2kWL26Yx9aNEIcytrTWH4bWeTKkBUll+jk9I8qfoUj0Ugk695k1/bmUzJftGyR7XvuaeLMCdEyt/n7OGJRYmwiaW+ilUq03JumsrVHsPFJ3VVohMaTPps1VStsuER/qWGxPAdWU3lMOp+sJgc3DL5v1MymvjG+4n55mKXgXa+RWWwcbwUlGLZo9AU6/EYVuKS7Uv9A6gqZ7LJVeFmnY+SUNcRTPodNBskfKHt6EbtpSvwNYrcjag+SDaRYF7VEacGl7",
            "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaAxkO4AsRV+t6Jybi54dbGAJmoQ2dDFChptj+OaARbtEUP+ET7RsX5xd6O9dxuIyBtqDwBr61ncYi+t5AQXTSw=="
        }
    },
    "error": {},
    "success": true
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
POST /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe28e3e7dac291e78cb4d74/push HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_A0GrzQJKInyljsCtNV37MbeF4ZTYxau9o1WSkdpq|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "type": "APPLE_PUSH",
  "nonce": "RH0jOQ==",
  "nonce_signature": "QNyNZuyDOO3yu5ymQacY8TjecyYOZP/HraOrc6X4FzNfXZNWG+Om/ocPGg/mQxnmYi2ldudvtny57rLOsiWa5zelzdjUnq0sgpz8kgkEFg/Q",
  "certificates": [
    "MIICzDCCAnKgAwIBAgICEAEwCgYIKoZIzj0EAwIwcDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExEDAOBgNVBAoMB1N5bmFwc2UxOjA4BgNVBAMMMVN5bmFwc2UgSW50ZXJtZWRpYXRlIENlcnRpZmljYXRlIEF1dGhvcml0eSAoVGVzdCkwHhcNMjAwNTEwMTY0MDAyWhcNMjEwNTEwMTY0MDAyWjBjMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEQMA4GA1UECgwHU3luYXBzZTEtMCsGA1UEAwwkU3luYXBzZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKFRlc3QpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnYyH0+ctc8rB60T7NFiokvseIlKqXaCNfxr0ui4WBZymQ/5K7+BGJy0hBtLKxOowqXvQB0jhX1NJsfzEpuZoN6OCAQcwggEDMIGYBgNVHSMEgZAwgY2hgYakgYMwgYAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRAwDgYDVQQKDAdTeW5hcHNlMTIwMAYDVQQDDClTeW5hcHNlIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChUZXN0KYICEAAwHQYDVR0OBBYEFDDO+VuBY5zOYtENt17gsbfkp2upMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgTwMC8GA1UdEQQoMCaCJFN5bmFwc2UgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChUZXN0KTAKBggqhkjOPQQDAgNIADBFAiB1PZEBcjildMm7Htmxym0wCPubW5TdoVNly5xK2QopKQIhAP9gxYLy4hsRCmgAmu2zLVEc50UQYETpgV5Ugv+C+2k+",
    "MIIB8TCCAZegAwIBAgICEAAwCgYIKoZIzj0EAwIwgYAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRAwDgYDVQQKDAdTeW5hcHNlMTIwMAYDVQQDDClTeW5hcHNlIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChUZXN0KTAeFw0yMDA1MTAxNjQwMDJaFw0yMTA1MTAxNjQwMDJaMHAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRAwDgYDVQQKDAdTeW5hcHNlMTowOAYDVQQDDDFTeW5hcHNlIEludGVybWVkaWF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKFRlc3QpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYw824ov/grw4wHSBOZIJOwiY5TEKpRYCaRKt6E0T/XQnUgwNbiSfiAlIuQ48lTpBizjKU5Xb64veLjqW/xa476MQMA4wDAYDVR0TBAUwAwEB/zAKBggqhkjOPQQDAgNIADBFAiAXzh7aHIWLMgJGl1P4haaekp0HZDWJ7bYzgu3uCy6u/gIhAMTAkXwMlm+9iGLSj+ofgsMXPIIz5+LOQgC1OM/8OPQ7"
  ]
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe28e3e7dac291e78cb4d74/push' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_A0GrzQJKInyljsCtNV37MbeF4ZTYxau9o1WSkdpq|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--header 'Cookie: __cfduid=d8d8fd4abbd2cc9946b8f9e91b46812cc1608683042' \
--data-raw '{
  "type": "APPLE_PUSH",
  "nonce": "RH0jOQ==",
  "nonce_signature": "QNyNZuyDOO3yu5ymQacY8TjecyYOZP/HraOrc6X4FzNfXZNWG+Om/ocPGg/mQxnmYi2ldudvtny57rLOsiWa5zelzdjUnq0sgpz8kgkEFg/Q",
  "certificates": [
    "MIICzDCCAnKgAwIBAgICEAEwCgYIKoZIzj0EAwIwcDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExEDAOBgNVBAoMB1N5bmFwc2UxOjA4BgNVBAMMMVN5bmFwc2UgSW50ZXJtZWRpYXRlIENlcnRpZmljYXRlIEF1dGhvcml0eSAoVGVzdCkwHhcNMjAwNTEwMTY0MDAyWhcNMjEwNTEwMTY0MDAyWjBjMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEQMA4GA1UECgwHU3luYXBzZTEtMCsGA1UEAwwkU3luYXBzZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKFRlc3QpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnYyH0+ctc8rB60T7NFiokvseIlKqXaCNfxr0ui4WBZymQ/5K7+BGJy0hBtLKxOowqXvQB0jhX1NJsfzEpuZoN6OCAQcwggEDMIGYBgNVHSMEgZAwgY2hgYakgYMwgYAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRAwDgYDVQQKDAdTeW5hcHNlMTIwMAYDVQQDDClTeW5hcHNlIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChUZXN0KYICEAAwHQYDVR0OBBYEFDDO+VuBY5zOYtENt17gsbfkp2upMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgTwMC8GA1UdEQQoMCaCJFN5bmFwc2UgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChUZXN0KTAKBggqhkjOPQQDAgNIADBFAiB1PZEBcjildMm7Htmxym0wCPubW5TdoVNly5xK2QopKQIhAP9gxYLy4hsRCmgAmu2zLVEc50UQYETpgV5Ugv+C+2k+",
    "MIIB8TCCAZegAwIBAgICEAAwCgYIKoZIzj0EAwIwgYAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRAwDgYDVQQKDAdTeW5hcHNlMTIwMAYDVQQDDClTeW5hcHNlIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChUZXN0KTAeFw0yMDA1MTAxNjQwMDJaFw0yMTA1MTAxNjQwMDJaMHAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRAwDgYDVQQKDAdTeW5hcHNlMTowOAYDVQQDDDFTeW5hcHNlIEludGVybWVkaWF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKFRlc3QpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYw824ov/grw4wHSBOZIJOwiY5TEKpRYCaRKt6E0T/XQnUgwNbiSfiAlIuQ48lTpBizjKU5Xb64veLjqW/xa476MQMA4wDAYDVR0TBAUwAwEB/zAKBggqhkjOPQQDAgNIADBFAiAXzh7aHIWLMgJGl1P4haaekp0HZDWJ7bYzgu3uCy6u/gIhAMTAkXwMlm+9iGLSj+ofgsMXPIIz5+LOQgC1OM/8OPQ7"
  ]
}'
//
//
//
//
{
    <encrypted_data>,
    "tokenizationAuthenticationValue": <activation_data>
}
{
    "fundingAccountInfo": {
        "encryptedPayload": {
            "encryptedData": "e471f285c5",
            "encryptedKey": "a0d1746cf0d110abae",
            "iv": "7777606a400",
            "oaepHashingAlgorithm": "SHA256",
            "publicKeyFingerprint": "e980877c757"
        }
    },
    "tokenizationAuthenticationValue": "activation_data"
}
eyJmdW5kaW5nQWNjb3VudEluZm8iOiB7ImVuY3J5cHRlZFBheWxvYWQiOiB7ImVuY3J5cHRlZERhdGEiOiAiZTQ3MWYyODVjNSIsICJlbmNyeXB0ZWRLZXkiOiAiYTBkMTc0NmNmMGQxMTBhYmFlIiwgIml2IjogIjc3Nzc2MDZhNDAwIiwgIm9hZXBIYXNoaW5nQWxnb3JpdGhtIjogIlNIQTI1NiIsICJwdWJsaWNLZXlGaW5nZXJwcmludCI6ICJlOTgwODc3Yzc1NyJ9fSwgInRva2VuaXphdGlvbkF1dGhlbnRpY2F0aW9uVmFsdWUiOiAiYWN0aXZhdGlvbl9kYXRhIn0=
UserAddress userAddress = UserAddress.newBuilder()
  .setAddress1("123 Mission St.")
  .setAddress2("#100")
  .setCountryCode("US")
  .setLocality("San Francisco")
  .setAdministrativeArea("CA")
  .setName("Synabot")
  .setPhoneNumber("4155550000")
  .setPostalCode("94105")
  .build();

# this is the Base64 encoded JSON object we created above
string opc_string = “eyJmdW5kaW5nQWNjb3VudEluZm8iOiB7ImVuY3J5cHRlZFBheWxvYWQiOiB7ImVuY3J5cHRlZERhdGEiOiAiZTQ3MWYyODVjNSIsICJlbmNyeXB0ZWRLZXkiOiAiYTBkMTc0NmNmMGQxMTBhYmFlIiwgIml2IjogIjc3Nzc2MDZhNDAwIiwgIm9hZXBIYXNoaW5nQWxnb3JpdGhtIjogIlNIQTI1NiIsICJwdWJsaWNLZXlGaW5nZXJwcmludCI6ICJlOTgwODc3Yzc1NyJ9fSwgInRva2VuaXphdGlvbkF1dGhlbnRpY2F0aW9uVmFsdWUiOiAiYWN0aXZhdGlvbl9kYXRhIn0=”

byte [] opc = opc_string.getBytes()
PushTokenizeRequest pushTokenizeRequest =
                    new PushTokenizeRequest.Builder()
                            .setOpaquePaymentCard(opc)
                            .setNetwork(TapAndPay.CARD_NETWORK_MASTERCARD)
                            .setTokenServiceProvider(TapAndPay.TOKEN_PROVIDER_MASTERCARD)
                            .setDisplayName(“My Synapse Card")
                            .setLastDigits(“1234")
                            .setUserAddress(userAddress)
                            .build();

Statement Object Details

Statement Schema

Key

Type

Required

Description

_id

String

N.A. Included in API response

Primary Key of the user object.

client.id

String

N.A. Included in API response

The Primary Key that denotes your client object in our system.

client.name

String

N.A. Included in API response

Your common name in our system.

ending_balance

Number

N.A. Included in API response

Ending balance of the node for this statement cycle.

opening_balance

String

N.A. Included in API response

Starting balance of the node for this statement cycle.

end_date

Number

Yes

Unix timestamp (in ms) value of the end date of cycle for this statement cycle.

start_date

Number

Yes

Unix timestamp (in ms) value of the start date of cycle for this statement cycle.

urls.csv

String

N.A. Included in API response

URL of the csv version of the statement.

urls.pdf

String

N.A. Included in API response

URL of the pdf version of the statement.

urls.json

String

N.A. Included in API response

URL of the json version of the statement.

type

String

N.A. Included in API response

Type of statement. Possible types:

  • On Demand Requests (ex:ONDEMAND_STATEMENT)

  • Monthly Statements (ex: JANUARY_2021_STATEMENT)

  • 1099-INT Tax Forms (ex: 1099_INT_2020)

View all Subnet Shipments

Shipments

GET https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets/:subnet_id/ship

This endpoint allows you to get all shipments linked to a subnet.

Path Parameters

Name
Type
Description

subnet_id

string

ID of Subnet.

node_id

string

ID of Node.

user_id

string

ID of User.

Query Parameters

Name
Type
Description

per_page

integer

Maximum documents to return per page. Default and max allowed is 20.

page

integer

Page number of the paginated request. Default is 1.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
   "error_code": "0",
   "http_code": "200",
   "limit": 20,
   "page": 1,
   "page_count": 1,
   "ship_count": 1,
   "ships": [
      {
         "_id": "5fe29cfb900ce3002d55e745",
         "address": {
            "address_care_of": "Some User",
            "address_city": "SAN FRANCISCO",
            "address_country_code": "US",
            "address_postal_code": "94105",
            "address_street": "101 2ND ST STE 1500",
            "address_subdivision": "CA"
         },
         "card_style_id": "555",
         "created_on": 1608686843900,
         "delivery": "STANDARD",
         "delivery_carrier": "6070 Poplar Avenue, Suite 100 Memphis, Tennessee 38119",
         "name": "Test User",
         "secondary_label": false,
         "status": "CREATED",
         "subnet_id": "5fe29cf56a72f3b1e1179931",
         "tracking": null
      }
   ],
   "success": true
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

GET /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe29cfb900ce3002d55e745/ship HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_5FhywpZgtn0GPqkMidJCazIKmSc0UjQ1bW8VEYOL|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe29cfb900ce3002d55e745/ship' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_5FhywpZgtn0GPqkMidJCazIKmSc0UjQ1bW8VEYOL|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
node_id = '594e606212e17a002f2e3251'
subn_id = '59c9f77cd412960028b99d2b'
page = 1
per_page = 10
user.view_all_card_shipments(node_id,subn_id,per_page=per_page,page=page)
node_id = '594e606212e17a002f2e3251'
subn_id = '59c9f77cd412960028b99d2b'
page = 1
per_page = 10
user.getAllCardShipments(node_id, subn_id, {
  per_page: per_page,
  page = page
})
//
//

View Shipment

Shipment

GET https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets/:subnet_id/ship/:ship_id

This endpoint allows you to get a specific shipment.

Path Parameters

Name
Type
Description

ship_id

string

ID of the shipment.

subnet_id

string

ID of the subnet.

node_id

string

ID of the node.

user_id

string

ID of the user.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fe393ccbc382e002d9c40f8",
    "address": {
        "address_care_of": "Some User",
        "address_city": "SAN FRANCISCO",
        "address_country_code": "US",
        "address_postal_code": "94105",
        "address_street": "101 2ND ST STE 1500",
        "address_subdivision": "CA"
    },
    "card_style_id": "555",
    "created_on": 1608750028716,
    "delivery": "STANDARD",
    "delivery_carrier": "6070 Poplar Avenue, Suite 100 Memphis, Tennessee 38119",
    "name": "Test User",
    "secondary_label": false,
    "status": "CREATED",
    "subnet_id": "5fe393cac55b7036478223be",
    "tracking": null
}
{
    "error": {
        "code": "missing_user_ip",
        "en": "User IP is missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

GET /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe393cac55b7036478223be/ship/5fe393ccbc382e002d9c40f8 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_5FhywpZgtn0GPqkMidJCazIKmSc0UjQ1bW8VEYOL|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe393cac55b7036478223be/ship/5fe393ccbc382e002d9c40f8' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_5FhywpZgtn0GPqkMidJCazIKmSc0UjQ1bW8VEYOL|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
node_id = '594e606212e17a002f2e3251'
subnet_id = '59c9f77cd412960028b99d2b'
ship_id = '6101f4062846db14581f19e6'
user.cancel_card_shipment(node_id,subnet_id,ship_id)
let node_id = '594e606212e17a002f2e3251'
let subnet_id = '59c9f77cd412960028b99d2b'
let shipment_id = '6101f4062846db14581f19e6' 
user.getCardShipment(node_id, subnet_id, shipment_id)
//
//
View all User Nodes
Payment Accounts
Intro to Spec Sheets
Intro to Spec Sheets
Intro to Spec Sheets
Intro to Spec Sheets
Intro to Spec Sheets
Intro to Spec Sheets
documentation
documentation
Possible Allowed Values
Possible Allowed Status Codes
Possible Loan Rejection Reasons
Info Schema
Possible Allowed Status Codes
Possible Agreement Types
Possible Agreement Types
Possible Agreement Types
Possible Agreement Types
Possible Agreement Types
Encryption Keys for Interchange
Encryption Keys for Interchange
Go to Encryption Keys for RPPS
aversion action notice
Possible Loan Rejection Reasons
base document
base document
base document
base document
base document
base document
Possible Status Values
Possible Status Codes
Encryption Keys for Subnet
Subnet Object Details
Subnet Object Details
Possible Status Values
Possible Status Codes
Encryption Keys for Subnet
Card Number Subnet

Key

Type

Required

Description

_id

String

N.A. Included in API response

Primary Key of the user object.

card_style_id

String

Yes

fee_node_id

String

Yes. Not included in response.

ID of the node where the shipment fee should be charged. This can only be a node that is linked to your user ID or the end user's user ID.

name

String

No

secondary_label

String

No

Optional field to include with as an additional line beneath the cardholder name (e.g. a business name).

address.address_line_1

String

N.A. Included in API response

address.address_city

String

N.A. Included in API response

address.address_state

String

N.A. Included in API response

address.address_zipcode

String

N.A. Included in API response

address.address_country_code

String

N.A. Included in API response

address.address_care_of

String

N.A. Included in API response

When address taken from MAILING_ADDRESSand address_care_of field is supplied there it auto-populates here.

subnet_id

String

N.A. Included in API response

Subnet ID associated with the shipment.

delivery

String

Yes

delivery_carrier

String

N.A. Included in API response

tracking

String

N.A. Included in API response

Tracking number of the shipment. Only avaliable if delivery is STANDARD|TRACKING, EXPEDITE or OVERNIGHT.

created_on

String

N.A. Included in API response

Unix timestamp (in ms) value of when the shipment was created.

status

String

N.A. Included in API response

Statements

Account Type

Statement Availability

Deposit

15th of every month (EOD) for the previous month.

Credit

7th of every month (EOD) for the previous month

Cancel Shipment

Shipment

DELETE https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets/:subnet_id/ship/:ship_id

This endpoint allows you to cancel a specific shipment.

Path Parameters

Name
Type
Description

ship_id

string

ID of the shipment.

subnet_id

string

ID of the subnet.

node_id

string

ID of the node.

user_id

string

ID of the user.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fe393ccbc382e002d9c40f8",
    "address": {
        "address_care_of": "Some User",
        "address_city": "SAN FRANCISCO",
        "address_country_code": "US",
        "address_postal_code": "94105",
        "address_street": "101 2ND ST STE 1500",
        "address_subdivision": "CA"
    },
    "card_style_id": "555",
    "created_on": 1608750028716,
    "delivery": "STANDARD",
    "delivery_carrier": "6070 Poplar Avenue, Suite 100 Memphis, Tennessee 38119",
    "name": "Test User",
    "secondary_label": false,
    "status": "CANCELED",
    "subnet_id": "5fe393cac55b7036478223be",
    "tracking": "cancelled_on_request -- transaction cancelled by platform on 1608751186000."
}
{
    "error": {
        "code": "missing_user_ip",
        "en": "User IP is missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

DELETE /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe393cac55b7036478223be/ship/5fe393ccbc382e002d9c40f8 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_5FhywpZgtn0GPqkMidJCazIKmSc0UjQ1bW8VEYOL|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{}
curl --location --request DELETE 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe393cac55b7036478223be/ship/5fe393ccbc382e002d9c40f8' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_5FhywpZgtn0GPqkMidJCazIKmSc0UjQ1bW8VEYOL|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{}'
node_id = '594e606212e17a002f2e3251'
subn_id = '59c9f77cd412960028b99d2b'
ship_id = '6101f4062846db14581f19e6'
user.cancel_card_shipment(node_id,subn_id,ship_id)
node_id = '594e606212e17a002f2e3251'
subnet_id = '59c9f77cd412960028b99d2b'
ship_id = '6101f4062846db14581f19e6'
user.deleteCardShipment(node_id, subnet_id, ship_id)
//
//

Create Shipment

Shipments

POST https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets/:subnet_id/ship

This endpoint allows you to create a shipment.

Path Parameters

Name
Type
Description

subnet_id

string

ID of the subnet.

node_id

string

ID of the node.

user_id

string

ID of the user.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fdaa7d0d608d8b2ea80a6e4",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fdaa7d0d608d8b2ea80a6e4"
        }
    },
    "account_class": "CHECKING",
    "account_num": "9826994713",
    "agreements": [],
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "created_on": 1608165328800,
    "nickname": "Test AC/RT",
    "node_id": "5fd901bb20b3aa0bc7caee85",
    "routing_num": {
        "ach": "084106768",
        "wire": "084106768"
    },
    "status": "ACTIVE",
    "status_code": null,
    "supp_id": null,
    "updated_on": 1608165328806,
    "user_id": "5fd7acfd8677040053ad486d"
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

POST /v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe393cac55b7036478223be/ship HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_5FhywpZgtn0GPqkMidJCazIKmSc0UjQ1bW8VEYOL|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "fee_node_id": "5fd901bb20b3aa0bc7caee85",
    "delivery": "STANDARD",
    "card_style_id": "660"
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fd7acfd8677040053ad486d/nodes/5fd901bb20b3aa0bc7caee85/subnets/5fe393cac55b7036478223be/ship' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_5FhywpZgtn0GPqkMidJCazIKmSc0UjQ1bW8VEYOL|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "fee_node_id": "5fd901bb20b3aa0bc7caee85",
    "delivery": "STANDARD",
    "card_style_id": "660"
}'
//
//
//
//

Transactions

We offer a variety of transaction features, this allows us to provide you with the proper array of solutions unique to their respective use cases.

View all User Statements

Statements

GET https://api.synapsefi.com/v3.1/users/:user_id/statements

This endpoint allows you to get all statements linked to a user.

Path Parameters

Query Parameters

Headers

Example Request

Style ID of card. Go to to learn more.

Name of the card holder. By default grabbed from the .

Address street where the shipment was sent. By default grabbed from the unless MAILING_ADDRESS is avaliable on social_docs.

Address city where the shipment was sent. By default grabbed from the unless MAILING_ADDRESS is avaliable on social_docs.

Address state where the shipment was sent. By default grabbed from the unless MAILING_ADDRESS is avaliable on social_docs.

Address zipcode where the shipment was sent. By default grabbed from the unless MAILING_ADDRESS is avaliable on social_docs.

ISO Alpha-2 formatted Address country code where the shipment was sent. By default grabbed from the unless MAILING_ADDRESS is avaliable on social_docs.

Delivery speed of the shipment. Go to .

Carrier of the shipment. Go to .

Status of the shipment. Go to .

Monthly statements must be issued to the end user for all their and nodes.

Statements can be viewed at the or at the . Here is schedule for statements availability:

The goal with the statements endpoint is to enable you to easily fetch statements for all the accounts that are opened and managed using our APIs. We require that you send an email to the end users every month to deliver their monthly statements to them to comply with and .

Please note that the Shipment has to be in CREATED status for cancellation to work. Go to to learn more.

Go to to see all the required and optional body parameters allowed during shipment creation.

To learn more about all Transaction types we support, please go to . Outside of payment accounts, we also support internal transfers between and Hubs.

Name
Type
Description
Name
Type
Description
Name
Type
Description
Intro to Spec Sheets
Deposit
Credit
user level
node (account) level
Reg E
Reg Z
Shipment Object Details
base document
base document
base document
base document
base document
base document
Possible delivery Values
Possible delivery_carrier Values
Possible status Values
Possible Status Values

user_id

string

ID of User.

per_page

integer

Maximum documents to return per page. Default and max allowed is 20.

page

integer

Page number of the paginated request. Default is 1.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "error_code": "0",
    "http_code": "200",
    "limit": 20,
    "page": 1,
    "page_count": 1,
    "statements": [
        {
            "_id": "5fe96574002e2e01443f6281",
            "client": {
                "id": "589acd9ecb3cd400fa75ac06",
                "name": "SynapseFi"
            },
            "date_end": 1556755199999,
            "date_start": 1556582400000,
            "end_date": 1556755199999,
            "ending_balance": 0.0,
            "node_id": "5fe96562c54d7b7bcda9b9da",
            "opening_balance": 0.0,
            "type": "ONDEMAND_STATEMENT",
            "urls": {
                "csv": "https://cdn.synapsepay.com/uploads/2020/12/28/ATw3x9oyCLGkB1uJmYbI0XfDMQWn8N5r2UcHV6iszR7ZPe0OdF.csv",
                "json": "https://cdn.synapsepay.com/uploads/2020/12/28/mwNRF3ahz2TI0At0uiogB9ZMP6fxS7OYXGyp1J4lQHUkdcqb8W.json",
                "pdf": "https://cdn.synapsepay.com/uploads/2020/12/28/FKupyRJik0hPc6VMSCHb2Q8ZOYxvN5nedsolgrWBazI4AD1Ejt.pdf"
            },
            "user_id": "5fe50a777562960078d3a5c6"
        }
    ],
    "statements_count": 1,
    "success": true
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
GET /v3.1/users/5fe50a777562960078d3a5c6/statements HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_J6ciReHx79dWna8lvzFIoyfKGt1YujX2LqN54Q0r|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/statements' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_J6ciReHx79dWna8lvzFIoyfKGt1YujX2LqN54Q0r|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' 
//
//
//
//

View all User Transactions

Transactions

GET https://api.synapsefi.com/v3.1/users/:user_id/trans

This endpoint allows you to get all transactions linked to a user.

Path Parameters

Name
Type
Description

user_id

string

ID of User.

Query Parameters

Name
Type
Description

per_page

integer

Maximum documents to return per page. Default and max allowed is 20.

page

integer

Page number of the paginated request. Default is 1.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
   "error_code": "0",
   "http_code": "200",
   "limit": 20,
   "page": 1,
   "page_count": 1,
   "success": true,
   "trans": [
      {
         "_id": "5fe9656638707c7ccff07747",
         "_v": 2,
         "amount": {
            "amount": 500.1,
            "currency": "USD"
         },
         "client": {
            "id": "589acd9ecb3cd400fa75ac06",
            "name": "SynapseFi"
         },
         "extra": {
            "asset": null,
            "created_on": 1609131366079,
            "group_id": null,
            "ip": "255.127.79.76",
            "latlon": "unknown,unknown",
            "location": {
               "address_city": null,
               "address_country_code": null,
               "address_postal_code": null,
               "address_subdivision": null,
               "lat": 0,
               "lon": 0
            },
            "note": "Test transaction",
            "other": {
               "affect_limits": true,
               "attachments": [],
               "chargeback_disputed": false,
               "dispute_form": null,
               "dispute_meta": {},
               "dispute_reason": null,
               "disputed": false,
               "is_provisional_credit": false
            },
            "process_on": 1609131366079,
            "rate": null,
            "rate_limit": null,
            "same_day": false,
            "settlement_delay": 0,
            "supp_id": "",
            "tracking_number": null
         },
         "fees": [
            {
               "fee": 0.5,
               "note": "Synapse Facilitator Fee",
               "to": {
                  "id": "55b3f8c686c2732b4c4e9df6"
               }
            }
         ],
         "from": {
            "id": null,
            "meta": {
               "account_number": "",
               "amount": "",
               "back_signature": false,
               "check_back": "",
               "check_front": "",
               "check_number": "",
               "check_quality_bucket_num": null,
               "front_signature": false,
               "is_check": true,
               "is_endorsed": false,
               "name": "",
               "original_check_back": "https://cdn.synapsepay.com/uploads/2020/12/28/K4yOZmVhBSYx0eFCkGjvnasWipblH1EAt62QTMcof0D8gLIwu7.gif",
               "original_check_front": "https://cdn.synapsepay.com/uploads/2020/12/28/gMuhZos8CR30am16N5jDELf9lAyHzbqUB0iSxKO7ncVwGXQIve.gif",
               "routing_number": ""
            },
            "nickname": null,
            "type": "RDC",
            "user": {
               "_id": null,
               "legal_names": []
            }
         },
         "recent_status": {
            "date": 1609131671606,
            "note": "Next",
            "status": "SETTLED",
            "status_id": "4"
         },
         "timeline": [
            {
               "date": 1609131366079,
               "note": "Transaction Created.",
               "status": "CREATED",
               "status_id": "1"
            },
            {
               "date": 1609131525193,
               "note": "Next",
               "status": "PROCESSING-DEBIT",
               "status_id": "2"
            },
            {
               "date": 1609131593564,
               "note": "Next",
               "status": "PROCESSING-CREDIT",
               "status_id": "3"
            },
            {
               "date": 1609131671606,
               "note": "Next",
               "status": "SETTLED",
               "status_id": "4"
            }
         ],
         "to": {
            "id": "5fe96562c54d7b7bcda9b9da",
            "nickname": "My Deposit Account",
            "type": "DEPOSIT-US",
            "user": {
               "_id": "5fe50a777562960078d3a5c6",
               "legal_names": [
                  "Test User"
               ]
            }
         }
      },
      {
         ...
      },
      ...
   ],
   "trans_count": 3
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

GET /v3.1/users/5fe50a777562960078d3a5c6/trans?page=1&per_page=2 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/trans?page=1&per_page=2' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//

View all Node Statements

Statements

GET https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/statements

This endpoint allows you to get all statements linked to a node.

Path Parameters

Name
Type
Description

node_id

string

ID of Node.

user_id

string

ID of User.

Query Parameters

Name
Type
Description

per_page

integer

Maximum documents to return per page. Default and max allowed is 20.

page

integer

Page number of the paginated request. Default is 1.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "error_code": "0",
    "http_code": "200",
    "limit": 20,
    "page": 1,
    "page_count": 1,
    "statements": [
        {
            "_id": "5fe96574002e2e01443f6281",
            "client": {
                "id": "589acd9ecb3cd400fa75ac06",
                "name": "SynapseFi"
            },
            "date_end": 1556755199999,
            "date_start": 1556582400000,
            "end_date": 1556755199999,
            "ending_balance": 0.0,
            "node_id": "5fe96562c54d7b7bcda9b9da",
            "opening_balance": 0.0,
            "type": "ONDEMAND_STATEMENT",
            "urls": {
                "csv": "https://cdn.synapsepay.com/uploads/2020/12/28/ATw3x9oyCLGkB1uJmYbI0XfDMQWn8N5r2UcHV6iszR7ZPe0OdF.csv",
                "json": "https://cdn.synapsepay.com/uploads/2020/12/28/mwNRF3ahz2TI0At0uiogB9ZMP6fxS7OYXGyp1J4lQHUkdcqb8W.json",
                "pdf": "https://cdn.synapsepay.com/uploads/2020/12/28/FKupyRJik0hPc6VMSCHb2Q8ZOYxvN5nedsolgrWBazI4AD1Ejt.pdf"
            },
            "user_id": "5fe50a777562960078d3a5c6"
        }
    ],
    "statements_count": 1,
    "success": true
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

GET /v3.1/users/5fe50a777562960078d3a5c6/statements HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_J6ciReHx79dWna8lvzFIoyfKGt1YujX2LqN54Q0r|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/statements' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_J6ciReHx79dWna8lvzFIoyfKGt1YujX2LqN54Q0r|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//
Payment Accounts
Deposit
Credit

Testing on UAT

ACH Transactions

Interchange Transactions

Wire Transactions

RPPS Transactions

RDC Transactions

View Transaction

Transaction

GET https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/trans/:tran_id

This endpoint allows you to get details of a user transaction.

Path Parameters

Headers

Example Request

Name
Type
Description
Name
Type
Description

Amount (in USD)

Type

Return Code

222.22

DEBIT

R01 -- Insufficient Funds

222.23

CREDIT

R02 -- Account Closed

222.24

CREDIT-AND-DEBIT

R03 -- No Account/Unable to Locate Account

222.25

CREDIT-AND-DEBIT

R04 -- Invalid Account Number

222.26

CREDIT

R06 -- Returned Per ODFI's Request

222.27

DEBIT

R07 -- Authorization Revoked by Customer

222.28

DEBIT

R08 -- Payment Stopped

222.29

DEBIT

R09 -- Uncollected Funds

222.30

DEBIT

R10 -- Customer Advises Not Authorized

222.31

CREDIT-AND-DEBIT

R11 -- Check Safekeeping Entry Return

222.32

CREDIT-AND-DEBIT

R12 -- Branch Sold To Another DFI

222.33

CREDIT

R13 -- RDFI Not Qualified to Participate

222.34

CREDIT-AND-DEBIT

R14 -- Account Holder Deceased

222.35

CREDIT-AND-DEBIT

R16 -- Account Frozen

222.36

CREDIT-AND-DEBIT

R17 -- File Record Edit Criteria

222.37

CREDIT-AND-DEBIT

R20 -- Non-Transaction Account

222.38

CREDIT-AND-DEBIT

R21 -- Invalid Company Identification

222.39

CREDIT-AND-DEBIT

R22 -- Invalid Individual ID Number

222.40

CREDIT

R23 -- Credit Refused by Receiver

222.41

CREDIT-AND-DEBIT

R24 -- Duplicate Entry

222.42

DEBIT

R29 -- Corporate Customer Advises Not Authorized

222.43

CREDIT-AND-DEBIT

R31 -- Permissible Return Entry

222.44

CREDIT-AND-DEBIT

R33 -- Return of XCK Entry

222.45

CREDIT-AND-DEBIT

R34 -- Limited participation DFI

Amount (in USD)

‌Type ‌

Response

222.55

CREDIT-AND-DEBIT

IR05 -- Suspicious activity; do not honor this card's transactions

222.56

CREDIT-AND-DEBIT

IR14 -- Card number does not exist

222.57

CREDIT-AND-DEBIT

IR15 -- Card issuer does not exist

222.58

CREDIT-AND-DEBIT

IR17 -- Customer cancelled/reversed payment

222.59

CREDIT-AND-DEBIT

IR18 -- The customer reversed the transaction: chargeback

222.60

CREDIT-AND-DEBIT

IR33 -- Expired card, pick-up

222.61

CREDIT-AND-DEBIT

IR36 -- Restricted card, pick-up

222.62

CREDIT-AND-DEBIT

IR38 -- PIN tried too many times; request a new card or try again later

222.63

CREDIT-AND-DEBIT

IR41 -- Lost card: request a new card

222.64

CREDIT-AND-DEBIT

IR43 -- Stolen card: request a new card

222.65

CREDIT-AND-DEBIT

IR54 -- Card Expired: request a new card

222.66

CREDIT-AND-DEBIT

IR56 -- No record of the validity of the card

222.67

CREDIT-AND-DEBIT

IR57 -- Transaction not permitted to cardholder

222.68

CREDIT-AND-DEBIT

IR58 -- Transaction denied by acceptor(Potential chargeback detected)

222.69

CREDIT-AND-DEBIT

IR59 -- Suspected Fraud

222.70

CREDIT-AND-DEBIT

IR63 -- Card information compromised(Potential chargeback detected)

222.71

CREDIT-AND-DEBIT

IR66 -- Merchant must contact the card acquirer

222.72

CREDIT-AND-DEBIT

IR67 -- Hard capture

222.73

CREDIT-AND-DEBIT

IR75 -- Allowable number of PIN tries exceeded

222.74

CREDIT-AND-DEBIT

IR79 -- Invalid digital signature

222.75

CREDIT-AND-DEBIT

IR86 -- Cannot verify PIN

222.76

CREDIT-AND-DEBIT

IR88 -- Card information not on file

222.77

CREDIT-AND-DEBIT

IR89 -- Security code verification failed

222.78

CREDIT-AND-DEBIT

IR93 -- Transaction is in violation of the law and will not be completed

222.79

CREDIT-AND-DEBIT

IR132 -- Country of the card issuer is blocked by this merchant

222.80

CREDIT-AND-DEBIT

IR140 -- Card product code is blocked

222.81

CREDIT-AND-DEBIT

IR144 -- CARD_ID is not valid

222.82

CREDIT-AND-DEBIT

IR150 -- Transaction declined by merchant to security code mismatch

222.83

CREDIT-AND-DEBIT

IR151 -- Transaction not allowed as per a validation rule

222.84

CREDIT-AND-DEBIT

IR156 -- Fraudulent transaction prior to embossed valid date

222.85

CREDIT-AND-DEBIT

IR158 -- Allowable PAN entries warning -- approved

222.86

CREDIT-AND-DEBIT

IR160 -- Security code is invalid

222.87

CREDIT-AND-DEBIT

IR174 -- Item suspected for stop pay

222.88

CREDIT-AND-DEBIT

IR174 -- Item suspected for stop pay

222.89

CREDIT-AND-DEBIT

IR175 -- Account associated with card was closed

222.90

CREDIT-AND-DEBIT

IR176 -- Account associated with card is ineligible for the transaction

222.91

CREDIT-AND-DEBIT

IR178 -- No account associated with card on file

222.92

CREDIT-AND-DEBIT

IR179 -- Unable to locate card

222.93

CREDIT-AND-DEBIT

IR189 -- Bad security code

222.94

CREDIT-AND-DEBIT

IR190 -- Transaction ordered to be stopped

222.95

CREDIT-AND-DEBIT

IR191 -- Transaction authorization revoked"

222.96

CREDIT-AND-DEBIT

IR193 -- Card lost: do not honor

222.97

CREDIT-AND-DEBIT

IR194 -- Account associated with the card is closed

222.98

DEBIT

IR201 -- Incorrect Expiration date

222.99

DEBIT

IR202 -- Card declined due to an unknown reason

223.00

DEBIT

IR203 -- Card card declined due to unsupported card type

223.01

DEBIT

IR204 -- Card declined due to an unknown reason

223.02

DEBIT

IR205 -- Card declined due to an unknown Reason

223.03

DEBIT

IR206 -- Card transaction request has an unknown status

224.01

DEBIT

IR999 -- Unauthorized Chargeback return

Amount (in USD)

Response

223.04

WR01 -- Return per customer request

223.05

WR02 -- Return per platform request

223.06

WR03 -- UTA - Account closed/frozen

223.07

WR04 -- UTA - Additional documents required

223.08

WR05 -- UTA - Country not allowed

223.09

WR06 -- UTA - Exceeds limits

223.10

WR07 -- UTA - Information mismatch

223.11

WR08 -- UTA - No Account/Unable to Locate Account

Amount (in USD)

Response

223.53

R02 - Account Closed

223.54

R03 - Account Number Invalid / no longer valid

223.55

R04 - Wrong account number

223.56

R05 - Pre-notification Error

223.57

R06 - Originator Requested Return

223.58

R07 - Authorization Revoked

223.59

R08 - Payment stopped settlement

223.60

R09 - Uncollected Funds

223.61

R10 - Advised unauthorized

223.62

R12 - Branch Sold

223.63

R14 - payee deceased

223.64

R15 - Beneficiary deceased

223.65

R16 - account frozen

223.66

R17- File Edit -record criteria

223.67

R18 - Wrong Entry Date

223.68

R19 - Account Error

223.69

R20 - Non Transaction Account

223.70

R21 - Wrong BillerId

223.71

R22 - Account Number Mistake

223.72

R23 - Payment refused by Biller

223.73

R24 - Duplicate Entry

223.74

R25 - Fair share Amount

223.75

R29 - Advised Unauthorized

223.76

R31 - Permissible Return Entry

223.77

R42 - Routing Number Error / Check Digit Error

223.78

R43 - DFI account Number

223.79

R61 - Misrouted Return

223.80

R62 - Trace number Error

223.81

R63 - Dollar Amount Mismatch

223.82

R64 - Individual Identification

223.83

R65 - Invalid Transaction Code

223.84

R66 - Invalid Company Identification

223.85

R67 - Duplicate Return

223.86

R68 - Untimely Return

223.87

R69 - Multiple Errors

223.88

R70 - Permissible Return Entry not Accepted

223.89

R71 - Misrouted Dishonored return

223.90

R72 - Untimely Dishonored Timely

223.91

R73 - Timely Original Return

223.92

R74 - Corrected Return

223.93

R80 - Cross Border Payment coding Error

223.94

R81 - Non-Cross Border Participant

223.95

R82 - Foreigner Receiver ID

223.96

R83 - Unable to Settle

223.97

R84 - Not Processed

223.98

R85 - Fair Share Rebate

Amount (in USD)

Response

223.12

CHR01 -- NSF – customer does not have sufficient funds to cover the item

223.13

CHR02 -- UCF – uncollected funds hold

223.14

CHR03 -- Stop payment – a stop payment has been placed on the item

223.15

CHR05 -- Closed account – the item’s account has been closed

223.16

CHR06 -- UTLA – unable to locate account

223.17

CHR07 -- Frozen/blocked account – account has restrictions placed by customer or bank

223.18

CHR08 -- Stale dated – the date on the item is more than 6 months old

223.19

CHR09 -- Post dated – the date on the item is in the future ‘I’ Endorsement missing

223.20

CHR10 -- Endorsement irregular

223.21

CHR11 -- Signature(s) missing

223.22

CHR12 -- Signature(s) irregular, suspected forgery

223.23

CHR13 -- Non-cash item (non negotiable)

223.24

CHR14 -- Altered/fictitious item/Suspected counterfeit/Counterfeit

223.25

CHR15 -- Unable to process

223.26

CHR16 -- Items exceeds stated max value

223.27

CHR17 -- Not authorized RCC

223.28

CHR18 -- Branch/account sold (Wrong Bank)

223.29

CHR19 -- Refer to Maker

223.30

CHR20 -- Item cannot be re-presented (exceeds allowable number of presentments

223.31

CHR21 -- unusable image

223.32

CHR22 -- Cannot determine amount

223.33

CHR23 -- Refer to image – return reason is contained within the image of the item

223.34

CHR24 -- Duplicate presentment

223.35

CHR25 -- Forgery – an affidavit shall be available upon request

223.36

CHR26 -- Warranty breach (includes Rule 8 & 9 claims)

223.37

CHR27 -- RCC warranty breach

223.38

CHR28 -- Forged and counterfeit warranty breach (Rule 9)

223.39

CHR29 -- Retired/ineligible routing number

223.40

CHR30 -- Image Missing

223.41

CHR31 -- Ineligible Item

223.42

CHR32 -- Item cannot be re-presented (exceeds number of allowable times for presentment)

223.43

CHR33 -- Unusable Image

223.44

CHR34 -- Image fails security check

223.45

CHR35 -- Duplicate presentment

223.46

CHR36 -- Does not conform with ANS X9.100-181

223.47

CHR37 -- Does not conform to the Industry’s Universal Companion Document

223.48

CHR38 -- Warranty Breach (includes Rule 8 & Rule 9 claims)

223.49

CHR39 -- RCC Warranty Breach (Rule 8)

223.50

CHR40 -- Forged and Counterfeit Warranty Breach (Rule 9)

223.51

CHR41 -- Retired/Ineligible Routing Number

tran_id

string

ID of Transaction.

node_id

string

ID of Node.

user_id

string

ID of User.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fe9656638707c7ccff07747",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans/5fe9656638707c7ccff07747"
        }
    },
    "_v": 2,
    "amount": {
        "amount": 500.1,
        "currency": "USD"
    },
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "extra": {
        "asset": null,
        "created_on": 1609131366079,
        "group_id": null,
        "ip": "255.127.79.76",
        "latlon": "unknown,unknown",
        "location": {
            "address_city": null,
            "address_country_code": null,
            "address_postal_code": null,
            "address_subdivision": null,
            "lat": 0,
            "lon": 0
        },
        "note": "Test transaction",
        "other": {
            "affect_limits": true,
            "attachments": [],
            "chargeback_disputed": false,
            "dispute_form": null,
            "dispute_meta": {},
            "dispute_reason": null,
            "disputed": false,
            "is_provisional_credit": false
        },
        "process_on": 1609131366079,
        "rate": null,
        "rate_limit": null,
        "same_day": false,
        "settlement_delay": 0,
        "supp_id": "",
        "tracking_number": null
    },
    "fees": [
        {
            "fee": 0.5,
            "note": "Synapse Facilitator Fee",
            "to": {
                "id": "55b3f8c686c2732b4c4e9df6"
            }
        }
    ],
    "from": {
        "id": null,
        "meta": {
            "account_number": "",
            "amount": "",
            "back_signature": false,
            "check_back": "",
            "check_front": "",
            "check_number": "",
            "check_quality_bucket_num": null,
            "front_signature": false,
            "is_check": true,
            "is_endorsed": false,
            "name": "",
            "original_check_back": "https://cdn.synapsepay.com/uploads/2020/12/28/K4yOZmVhBSYx0eFCkGjvnasWipblH1EAt62QTMcof0D8gLIwu7.gif",
            "original_check_front": "https://cdn.synapsepay.com/uploads/2020/12/28/gMuhZos8CR30am16N5jDELf9lAyHzbqUB0iSxKO7ncVwGXQIve.gif",
            "routing_number": ""
        },
        "nickname": null,
        "type": "RDC",
        "user": {
            "_id": null,
            "legal_names": []
        }
    },
    "recent_status": {
        "date": 1609131671606,
        "note": "Next",
        "status": "SETTLED",
        "status_id": "4"
    },
    "timeline": [
        {
            "date": 1609131366079,
            "note": "Transaction Created.",
            "status": "CREATED",
            "status_id": "1"
        },
        {
            "date": 1609131525193,
            "note": "Next",
            "status": "PROCESSING-DEBIT",
            "status_id": "2"
        },
        {
            "date": 1609131593564,
            "note": "Next",
            "status": "PROCESSING-CREDIT",
            "status_id": "3"
        },
        {
            "date": 1609131671606,
            "note": "Next",
            "status": "SETTLED",
            "status_id": "4"
        }
    ],
    "to": {
        "id": "5fe96562c54d7b7bcda9b9da",
        "nickname": "My Deposit Account",
        "type": "DEPOSIT-US",
        "user": {
            "_id": "5fe50a777562960078d3a5c6",
            "legal_names": [
                "Test User"
            ]
        }
    }
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
GET /v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans/5fe9656638707c7ccff07747 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans/5fe9656638707c7ccff07747' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//

Create Batch Transactions

Batch Transactions

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

This endpoint allows you to create up-to 500 transactions (100 in sandbox) from one node at once.

Path Parameters

Name
Type
Description

node_id

string

ID of the node.

user_id

string

ID of the user.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

Request Body

Name
Type
Description

transactions

array

Go to Transaction Object Details to see all the required and optional body parameters allowed during transaction creation

{
    "error_code": "0",
    "http_code": "200",
    "page_count": 1,
    "success": true,
    "trans": [
        {
            "_id": "5f6b96672ecd0aa63709d21e",
            "_links": {
                "self": {
                    "href": "https://uat-api.synapsefi.com/v3.1/users/5f6b8ae599c8e5007852a2ed/nodes/5f6b965de079bc5b16ac0d65/trans/5f6b96672ecd0aa63709d21e"
                }
            },
            "_v": 2,
            "amount": {
                "amount": 34.0,
                "currency": "USD"
            },
            "client": {
                "id": "5da6466cf49fd1019aa1f828",
                "name": "* Stella Liang"
            },
            "extra": {
                "asset": null,
                "created_on": 1600886375194,
                "group_id": null,
                "ip": "127.0.0.1",
                "latlon": "unknown,unknown",
                "location": {
                    "address_city": null,
                    "address_country_code": null,
                    "address_postal_code": null,
                    "address_subdivision": null,
                    "lat": 0,
                    "lon": 0
                },
                "note": "Banking Fees",
                "other": {
                    "affect_limits": true,
                    "attachments": [],
                    "chargeback_disputed": false,
                    "dispute_form": null,
                    "disputed": false,
                    "is_provisional_credit": false
                },
                "process_on": 1600886375194,
                "rate": null,
                "rate_limit": null,
                "same_day": false,
                "settlement_delay": 0,
                "supp_id": "",
                "tracking_number": null
            },
            "fees": [
                {
                    "fee": 0.0,
                    "note": "Facilitator Fee",
                    "to": {
                        "id": "None"
                    }
                }
            ],
            "from": {
                "id": "5f6b965de079bc5b16ac0d65",
                "nickname": "SynapsePay Test Checking Account - 8901",
                "type": "ACH-US",
                "user": {
                    "_id": "5f6b8ae599c8e5007852a2ed",
                    "legal_names": [
                        "Ja To"
                    ]
                }
            },
            "recent_status": {
                "date": 1600886375194,
                "note": "Transaction Created.",
                "status": "CREATED",
                "status_id": "1"
            },
            "timeline": [
                {
                    "date": 1600886375194,
                    "note": "Transaction Created.",
                    "status": "CREATED",
                    "status_id": "1"
                }
            ],
            "to": {
                "id": "5f69275098021636016189ad",
                "nickname": "Pos balance with doc ID",
                "type": "DEPOSIT-US",
                "user": {
                    "_id": "5f63dada04707a00550464ba",
                    "legal_names": [
                        "Ja To"
                    ]
                }
            }
        },
        {
            "_id": "5f6b96676fb4a2d20665f479",
            "_links": {
                "self": {
                    "href": "https://uat-api.synapsefi.com/v3.1/users/5f6b8ae599c8e5007852a2ed/nodes/5f6b965de079bc5b16ac0d65/trans/5f6b96676fb4a2d20665f479"
                }
            },
            "_v": 2,
            "amount": {
                "amount": 34.0,
                "currency": "USD"
            },
            "client": {
                "id": "5da6466cf49fd1019aa1f828",
                "name": "* Stella Liang"
            },
            "extra": {
                "asset": null,
                "created_on": 1600886375805,
                "group_id": null,
                "ip": "127.0.0.1",
                "latlon": "unknown,unknown",
                "location": {
                    "address_city": null,
                    "address_country_code": null,
                    "address_postal_code": null,
                    "address_subdivision": null,
                    "lat": 0,
                    "lon": 0
                },
                "note": "Banking Fees",
                "other": {
                    "affect_limits": true,
                    "attachments": [],
                    "chargeback_disputed": false,
                    "dispute_form": null,
                    "disputed": false,
                    "is_provisional_credit": false
                },
                "process_on": 1600886375805,
                "rate": null,
                "rate_limit": null,
                "same_day": false,
                "settlement_delay": 0,
                "supp_id": "",
                "tracking_number": null
            },
            "fees": [
                {
                    "fee": 0.0,
                    "note": "Facilitator Fee",
                    "to": {
                        "id": "None"
                    }
                }
            ],
            "from": {
                "id": "5f6b965de079bc5b16ac0d65",
                "nickname": "SynapsePay Test Checking Account - 8901",
                "type": "ACH-US",
                "user": {
                    "_id": "5f6b8ae599c8e5007852a2ed",
                    "legal_names": [
                        "Ja To"
                    ]
                }
            },
            "recent_status": {
                "date": 1600886375805,
                "note": "Transaction Created.",
                "status": "CREATED",
                "status_id": "1"
            },
            "timeline": [
                {
                    "date": 1600886375805,
                    "note": "Transaction Created.",
                    "status": "CREATED",
                    "status_id": "1"
                }
            ],
            "to": {
                "id": "5f69275098021636016189ad",
                "nickname": "Pos balance with doc ID",
                "type": "DEPOSIT-US",
                "user": {
                    "_id": "5f63dada04707a00550464ba",
                    "legal_names": [
                        "Ja To"
                    ]
                }
            }
        },
        {
            "_id": "5f6b96673b5ef95d4a66a0a6",
            "_links": {
                "self": {
                    "href": "https://uat-api.synapsefi.com/v3.1/users/5f6b8ae599c8e5007852a2ed/nodes/5f6b965de079bc5b16ac0d65/trans/5f6b96673b5ef95d4a66a0a6"
                }
            },
            "_v": 2,
            "amount": {
                "amount": 34.0,
                "currency": "USD"
            },
            "client": {
                "id": "5da6466cf49fd1019aa1f828",
                "name": "* Stella Liang"
            },
            "extra": {
                "asset": null,
                "created_on": 1600886375811,
                "group_id": null,
                "ip": "127.0.0.1",
                "latlon": "unknown,unknown",
                "location": {
                    "address_city": null,
                    "address_country_code": null,
                    "address_postal_code": null,
                    "address_subdivision": null,
                    "lat": 0,
                    "lon": 0
                },
                "note": "Banking Fees",
                "other": {
                    "affect_limits": true,
                    "attachments": [],
                    "chargeback_disputed": false,
                    "dispute_form": null,
                    "disputed": false,
                    "is_provisional_credit": false
                },
                "process_on": 1600886375811,
                "rate": null,
                "rate_limit": null,
                "same_day": false,
                "settlement_delay": 0,
                "supp_id": "",
                "tracking_number": null
            },
            "fees": [
                {
                    "fee": 0.0,
                    "note": "Facilitator Fee",
                    "to": {
                        "id": "None"
                    }
                }
            ],
            "from": {
                "id": "5f6b965de079bc5b16ac0d65",
                "nickname": "SynapsePay Test Checking Account - 8901",
                "type": "ACH-US",
                "user": {
                    "_id": "5f6b8ae599c8e5007852a2ed",
                    "legal_names": [
                        "Ja To"
                    ]
                }
            },
            "recent_status": {
                "date": 1600886375811,
                "note": "Transaction Created.",
                "status": "CREATED",
                "status_id": "1"
            },
            "timeline": [
                {
                    "date": 1600886375811,
                    "note": "Transaction Created.",
                    "status": "CREATED",
                    "status_id": "1"
                }
            ],
            "to": {
                "id": "5f69275098021636016189ad",
                "nickname": "Pos balance with doc ID",
                "type": "DEPOSIT-US",
                "user": {
                    "_id": "5f63dada04707a00550464ba",
                    "legal_names": [
                        "Ja To"
                    ]
                }
            }
        }
    ],
    "trans_count": 3
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Node Balance Race Conditions

When creating batch transactions, multiple transactions are processed simultaneously. Please make sure the withdrawal node has sufficient funds to process all of the transactions or the node may be depleted to a negative balance.

Support for Idempotency

To enable idempotency controls per transaction, add extra.idempotency_keyinside each transaction object. Example:

{
  "transactions": [
    {
      "to": {
        "type": "DEPOSIT-US",
        "id": "5f69275098021636016189ad"
      },
      "amount": {
        "amount": 34,
        "currency": "USD"
      },
      "extra": {
        "ip": "127.0.0.1",
        "note": "Banking Fees",
        "idempotency_key": "testidp1"
      }
    }
  ]
}

Example Request

POST /v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe50b2dab6ce7004340c43a/batch-trans HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "transactions": [
    {
      "to": {
        "type": "DEPOSIT-US",
        "id": "5f69275098021636016189ad"
      },
      "amount": {
        "amount": 34,
        "currency": "USD"
      },
      "extra": {
        "ip": "127.0.0.1",
        "note": "Banking Fees"
      }
    },
    {
      "to": {
        "type": "DEPOSIT-US",
        "id": "5f69275098021636016189ad"
      },
      "amount": {
        "amount": 34,
        "currency": "USD"
      },
      "extra": {
        "ip": "127.0.0.1",
        "note": "Banking Fees"
      }
    },
    {
      "to": {
        "type": "DEPOSIT-US",
        "id": "5f69275098021636016189ad"
      },
      "amount": {
        "amount": 34,
        "currency": "USD"
      },
      "extra": {
        "ip": "127.0.0.1",
        "note": "Banking Fees"
      }
    }
  ]
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe50b2dab6ce7004340c43a/batch-trans' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
--data-raw '{
  "transactions": [
    {
      "to": {
        "type": "DEPOSIT-US",
        "id": "5f69275098021636016189ad"
      },
      "amount": {
        "amount": 34,
        "currency": "USD"
      },
      "extra": {
        "ip": "127.0.0.1",
        "note": "Banking Fees"
      }
    },
    {
      "to": {
        "type": "DEPOSIT-US",
        "id": "5f69275098021636016189ad"
      },
      "amount": {
        "amount": 34,
        "currency": "USD"
      },
      "extra": {
        "ip": "127.0.0.1",
        "note": "Banking Fees"
      }
    },
    {
      "to": {
        "type": "DEPOSIT-US",
        "id": "5f69275098021636016189ad"
      },
      "amount": {
        "amount": 34,
        "currency": "USD"
      },
      "extra": {
        "ip": "127.0.0.1",
        "note": "Banking Fees"
      }
    }
  ]
}'
//
//
//
//

View all Node Transactions

Transactions

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

This endpoint allows you to get all transactions linked to a node.

Path Parameters

Name
Type
Description

node_id

string

ID of Node.

user_id

string

ID of User.

Query Parameters

Name
Type
Description

per_page

integer

Maximum documents to return per page. Default and max allowed is 20.

page

integer

Page number of the paginated request. Default is 1.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "error_code": "0",
    "http_code": "200",
    "limit": 1,
    "page": 1,
    "page_count": 1,
    "success": true,
    "trans": [
        {
            "_id": "5fe9656638707c7ccff07747",
            "_links": {
                "self": {
                    "href": "https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans/5fe9656638707c7ccff07747"
                }
            },
            "_v": 2,
            "amount": {
                "amount": 500.1,
                "currency": "USD"
            },
            "client": {
                "id": "589acd9ecb3cd400fa75ac06",
                "name": "SynapseFi"
            },
            "extra": {
                "asset": null,
                "created_on": 1609131366079,
                "group_id": null,
                "ip": "255.127.79.76",
                "latlon": "unknown,unknown",
                "location": {
                    "address_city": null,
                    "address_country_code": null,
                    "address_postal_code": null,
                    "address_subdivision": null,
                    "lat": 0,
                    "lon": 0
                },
                "note": "Test transaction",
                "other": {
                    "affect_limits": true,
                    "attachments": [],
                    "chargeback_disputed": false,
                    "dispute_form": null,
                    "dispute_meta": {},
                    "dispute_reason": null,
                    "disputed": false,
                    "is_provisional_credit": false
                },
                "process_on": 1609131366079,
                "rate": null,
                "rate_limit": null,
                "same_day": false,
                "settlement_delay": 0,
                "supp_id": "",
                "tracking_number": null
            },
            "fees": [
                {
                    "fee": 0.5,
                    "note": "Synapse Facilitator Fee",
                    "to": {
                        "id": "55b3f8c686c2732b4c4e9df6"
                    }
                }
            ],
            "from": {
                "id": null,
                "meta": {
                    "account_number": "",
                    "amount": "",
                    "back_signature": false,
                    "check_back": "",
                    "check_front": "",
                    "check_number": "",
                    "check_quality_bucket_num": null,
                    "front_signature": false,
                    "is_check": true,
                    "is_endorsed": false,
                    "name": "",
                    "original_check_back": "https://cdn.synapsepay.com/uploads/2020/12/28/K4yOZmVhBSYx0eFCkGjvnasWipblH1EAt62QTMcof0D8gLIwu7.gif",
                    "original_check_front": "https://cdn.synapsepay.com/uploads/2020/12/28/gMuhZos8CR30am16N5jDELf9lAyHzbqUB0iSxKO7ncVwGXQIve.gif",
                    "routing_number": ""
                },
                "nickname": null,
                "type": "RDC",
                "user": {
                    "_id": null,
                    "legal_names": []
                }
            },
            "recent_status": {
                "date": 1609131671606,
                "note": "Next",
                "status": "SETTLED",
                "status_id": "4"
            },
            "timeline": [
                {
                    "date": 1609131366079,
                    "note": "Transaction Created.",
                    "status": "CREATED",
                    "status_id": "1"
                },
                {
                    "date": 1609131525193,
                    "note": "Next",
                    "status": "PROCESSING-DEBIT",
                    "status_id": "2"
                },
                {
                    "date": 1609131593564,
                    "note": "Next",
                    "status": "PROCESSING-CREDIT",
                    "status_id": "3"
                },
                {
                    "date": 1609131671606,
                    "note": "Next",
                    "status": "SETTLED",
                    "status_id": "4"
                }
            ],
            "to": {
                "id": "5fe96562c54d7b7bcda9b9da",
                "nickname": "My Deposit Account",
                "type": "DEPOSIT-US",
                "user": {
                    "_id": "5fe50a777562960078d3a5c6",
                    "legal_names": [
                        "Test User"
                    ]
                }
            }
        }
    ],
    "trans_count": 1
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

GET /v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans?per_page=1&page=1 HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans?per_page=1&page=1' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//
create a transaction
create a transaction
create a transaction
create a transaction
create a transaction
create a transaction
Create an RDC Transfer
Create Transaction
Possible Transaction Statuses

Create Transaction

Transactions

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

This endpoint allows you to create a transaction.

Path Parameters

Name
Type
Description

node_id

string

ID of the node.

user_id

string

ID of the user.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fea57e174a834ac69203672",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe50b2dab6ce7004340c43a/trans/5fea57e174a834ac69203672"
        }
    },
    "_v": 2,
    "amount": {
        "amount": 100.1,
        "currency": "USD"
    },
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "* SynapseFi"
    },
    "extra": {
        "asset": null,
        "created_on": 1609193441254,
        "group_id": null,
        "ip": "255.127.79.76",
        "latlon": "unknown,unknown",
        "location": {
            "address_city": null,
            "address_country_code": null,
            "address_postal_code": null,
            "address_subdivision": null,
            "lat": 0,
            "lon": 0
        },
        "note": "Test transaction",
        "other": {
            "affect_limits": true,
            "attachments": [],
            "chargeback_disputed": false,
            "dispute_form": null,
            "dispute_meta": {},
            "dispute_reason": null,
            "disputed": false,
            "is_provisional_credit": false
        },
        "process_on": 1609193441254,
        "rate": null,
        "rate_limit": null,
        "same_day": false,
        "settlement_delay": 0,
        "supp_id": "",
        "tracking_number": null
    },
    "fees": [
        {
            "fee": 0.0,
            "note": "Facilitator Fee",
            "to": {
                "id": "None"
            }
        }
    ],
    "from": {
        "id": "5fe50b2dab6ce7004340c43a",
        "nickname": "SynapsePay Test Checking Account - 8901",
        "type": "ACH-US",
        "user": {
            "_id": "5fe50a777562960078d3a5c6",
            "legal_names": [
                "Test User"
            ]
        }
    },
    "recent_status": {
        "date": 1609193441254,
        "note": "Transaction Created.",
        "status": "CREATED",
        "status_id": "1"
    },
    "timeline": [
        {
            "date": 1609193441254,
            "note": "Transaction Created.",
            "status": "CREATED",
            "status_id": "1"
        }
    ],
    "to": {
        "id": "5fe96562c54d7b7bcda9b9da",
        "nickname": "My Deposit Account",
        "type": "DEPOSIT-US",
        "user": {
            "_id": "5fe50a777562960078d3a5c6",
            "legal_names": [
                "Test User"
            ]
        }
    }
}
{
    "error": {
        "code": "missing_user_credentials",
        "en": "User credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Create Transactions between Nodes

POST /v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe50b2dab6ce7004340c43a/trans HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "to": {
    "type": "DEPOSIT-US",
    "id": "5fe96562c54d7b7bcda9b9da"
  },
  "amount": {
    "amount": 100.1,
    "currency": "USD"
  },
  "extra": {
    "ip": "255.127.79.76",
    "note": "Test transaction"
  }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe50b2dab6ce7004340c43a/trans' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
--data-raw '{
  "to": {
    "type": "DEPOSIT-US",
    "id": "5fe96562c54d7b7bcda9b9da"
  },
  "amount": {
    "amount": 100.1,
    "currency": "USD"
  },
  "extra": {
    "ip": "255.127.79.76",
    "note": "Test transaction"
  }
}'
//
//
//
//

Create RDC Transactions

POST /v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "from":{
  	"type":"RDC",
  	"meta":{
  		"check_front":"data:image/gif;base64,SUQs==",
  		"check_back":"data:image/gif;base64,SUQs=="
  	}
  },
  "to": {
    "type": "DEPOSIT-US",
    "id": "5fe96562c54d7b7bcda9b9da"
  },
  "amount": {
    "amount": 500.1,
    "currency": "USD"
  },
  "extra": {
    "ip": "255.127.79.76",
    "note": "Test transaction"
  }
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "from":{
  	"type":"RDC",
  	"meta":{
  		"check_front":"data:image/gif;base64,SUQs==",
  		"check_back":"data:image/gif;base64,SUQs=="
  	}
  },
  "to": {
    "type": "DEPOSIT-US",
    "id": "5fe96562c54d7b7bcda9b9da"
  },
  "amount": {
    "amount": 500.1,
    "currency": "USD"
  },
  "extra": {
    "ip": "255.127.79.76",
    "note": "Test transaction"
  }
}'
//
//
//
//

For a submitted RDC transaction to be processed, we also look for the following:

  • The image is clear enough to read all of the text on the front and back of the check. (i.e no glare, shadows on the check images) and all corners of the check are visible.

  • The check does not have “VOID” or “VOIDED” written on it.

  • The check is not a traveler’s check or substitute check.

  • The check amount is in U.S. dollars (USD).

  • The two amounts written on the check are for the same amount.

  • The routing number in the MIRC line has 9 digits.

  • The handwriting on the check looks consistent in all fields.

  • The payee’s name is the same as the Synapse account holder’s name.

  • The check number in the MICR line is the same as the check number in the top right corner.

  • The check written date is in the past.

  • The payer’s bank information has a logo and name.

  • The check has security features: microprinting on the signature line, security screen on the back of the check, and/or the words “original document” on the back of the check.

  • The check signature does not have any stains or gaps around it, nor a digitized appearance (pixelated), or unnecessary up and down pen strokes.

  • Nothing on either the front or back of the check appears forged or altered.

  • The check is signed on the back in the “Endorse here” section.

  • The signature on the back is different from the signature on the front.

  • “For mobile deposit only” is written on the back of the check.

Please Note: Attempt to deposit in person before remote submittal will cause check to be declined.

If it is a cashier’s check:

  • The payee’s name is printed onto the check.

  • The bank phone number is shown on the check.

If it is a Deluxe or e-check:

  • The check does not include any confirmation requirement prior to depositing it.

Covering Transaction Fees

By default, fees are deducted from the fund recipient. This means if you send $1, the fund recipient will receive $1 minus the transaction fee. If you prefer to cover your user's transaction fees, pre-fund a deposit account from which fees will be deducted. Then set fees.fee to the negative of whatever the transaction fee will be, and fees.to.id to the node ID of the pre-funded deposit account.

Note: fees.fee is expected to be a float in dollars (USD).

POST /v3.1/users/61281d15b72f862f1a97e6e2/nodes/61281d22ab6ce721377d53ec/trans HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_qWTA0DPUc5lC4sxjfnd9eYQLhIG8w3motKbE6uOk|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
Content-Length: 344

{
  "to": {
    "type": "DEPOSIT-US",
    "id": "61281d317e08873466a0e7b1"
  },
  "amount": {
    "amount": 100.0,
    "currency": "USD"
  },
  "extra": {
    "ip": "255.127.79.76",
    "note": "Test Transaction"
  },
  "fees": [{
    "fee":-0.03,
    "note": "Facilitator Fee",
    "to": {
        "id":"60be880b7e08876cd9349cf4"
    }

  }]
}
curl --location --request POST 'https://uat-api.synapsefi.com/v3.1/users/61281d15b72f862f1a97e6e2/nodes/61281d22ab6ce721377d53ec/trans' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_qWTA0DPUc5lC4sxjfnd9eYQLhIG8w3motKbE6uOk|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "to": {
    "type": "DEPOSIT-US",
    "id": "61281d317e08873466a0e7b1"
  },
  "amount": {
    "amount": 100.0,
    "currency": "USD"
  },
  "extra": {
    "ip": "255.127.79.76",
    "note": "Test Transaction"
  },
  "fees": [{
    "fee":-0.03,
    "note": "Facilitator Fee",
    "to": {
        "id":"60be880b7e08876cd9349cf4"
    }

  }]
}'

In the response, you will see two fees: one positive & one negative (corresponding with our Synapse-owned node & your pre-funded node respectively).

Please note that this payload only applies to transactions initiated via the API. To cover incoming wire fees from an EXTERNAL-US node, update your wire fee preferences in the dashboard.

Avoiding Race Conditions

Given that funds are made unavailable during the processing-debit stage in a transactions lifecycle, it is advised to not generate new transactions against the same node too quickly. The impact otherwise can be that a later transaction can settle before an earlier transaction, causing a node to go negative.

Suggestions to avoid this scenario include:

  • Delay same node transaction creation 4 to 5 seconds in-between.

  • Wait for the create webhook to be received.

Cancel Transaction

Transaction

DELETE https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/trans/:tran_id

This endpoint allows you to cancel a specific transaction.

Path Parameters

Name
Type
Description

tran_id

string

ID of the transaction.

node_id

string

ID of the node.

user_id

string

ID of the user.

Headers

Name
Type
Description

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

{
    "_id": "5fea5b8438707c7ccff0781a",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans/5fea5b8438707c7ccff0781a"
        }
    },
    "_v": 2,
    "amount": {
        "amount": 500.1,
        "currency": "USD"
    },
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "extra": {
        "asset": null,
        "created_on": 1609194372664,
        "group_id": null,
        "ip": "255.127.79.76",
        "latlon": "unknown,unknown",
        "location": {
            "address_city": null,
            "address_country_code": null,
            "address_postal_code": null,
            "address_subdivision": null,
            "lat": 0,
            "lon": 0
        },
        "note": "Test transaction",
        "other": {
            "affect_limits": true,
            "attachments": [],
            "chargeback_disputed": false,
            "dispute_form": null,
            "dispute_meta": {},
            "dispute_reason": null,
            "disputed": false,
            "is_provisional_credit": false
        },
        "process_on": 1609194372664,
        "rate": null,
        "rate_limit": null,
        "same_day": false,
        "settlement_delay": 0,
        "supp_id": "",
        "tracking_number": null
    },
    "fees": [
        {
            "fee": 0.5,
            "note": "Synapse Facilitator Fee",
            "to": {
                "id": "55b3f8c686c2732b4c4e9df6"
            }
        }
    ],
    "from": {
        "id": null,
        "meta": {
            "account_number": "",
            "amount": "",
            "back_signature": false,
            "check_back": "",
            "check_front": "",
            "check_number": "",
            "check_quality_bucket_num": null,
            "front_signature": false,
            "is_check": true,
            "is_endorsed": false,
            "name": "",
            "original_check_back": "https://cdn.synapsepay.com/uploads/2020/12/28/kTrgd5zYO7FG6vJs930VnlC4SW1jfRqKPwy8hEUuIbaxXeiZoA.gif",
            "original_check_front": "https://cdn.synapsepay.com/uploads/2020/12/28/298icQTUVyrxwkM0CvG5hdZf0YoKHBJX4abNzjEPFulSAD7m3I.gif",
            "routing_number": ""
        },
        "nickname": null,
        "type": "RDC",
        "user": {
            "_id": null,
            "legal_names": []
        }
    },
    "recent_status": {
        "date": 1609194375618,
        "note": "Transaction Canceled.",
        "status": "CANCELED",
        "status_id": "5"
    },
    "timeline": [
        {
            "date": 1609194372664,
            "note": "Transaction Created.",
            "status": "CREATED",
            "status_id": "1"
        },
        {
            "date": 1609194375618,
            "note": "Transaction Canceled.",
            "status": "CANCELED",
            "status_id": "5"
        }
    ],
    "to": {
        "id": "5fe96562c54d7b7bcda9b9da",
        "nickname": "My Deposit Account",
        "type": "DEPOSIT-US",
        "user": {
            "_id": "5fe50a777562960078d3a5c6",
            "legal_names": [
                "Test User"
            ]
        }
    }
}
{
    "error": {
        "code": "missing_user_ip",
        "en": "User IP is missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

DELETE /v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans/5fea5b8438707c7ccff0781a HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json
curl --location --request DELETE 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe96562c54d7b7bcda9b9da/trans/5fea5b8438707c7ccff0781a' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json'
//
//
//
//

Transaction Object Details

Transaction Schema

Key

Type

Required

Description

_id

String

N.A. Included in API response.

Primary Key of the transaction object.

client.id

String

N.A. Included in API response.

The Primary Key that denotes your client object in our system.

client.name

String

N.A. Included in API response.

Your common name in our system.

from.type

String

Yes. Only for RDCtransactions.

from.id

String

N.A. Included in API response.

ID of from node. In case of RDC or EXTERNAL-US its null.

from.nickname

String

N.A. Included in API response.

Nickname of the node. In case of RDC or EXTERNAL-US its null. This is meant to be an easy to use label, if node nickname changes in the future, nickname here wont change.

from.user._id

String

N.A. Included in API response.

ID of the user who owns the from node. In case of RDC or EXTERNAL-US its null.

from.user.legal_names

Array of String

N.A. Included in API response.

Legal Name on the user profile. In case of RDCits null. In case of EXTERNAL-US its the merchant or send name. This is meant to be an easy to use label, if legal names shuffle on the user profile, legal names here wont change.

from.meta

Object

Yes. Only for RDCtransactions.

to.id

String

Yes

ID of to node. In case of EXTERNAL-US its null.

to.nickname

String

N.A. Included in API response.

Nickname of the node. In case of EXTERNAL-US its null. This is meant to be an easy to use label, if node nickname changes in the future, nickname here wont change.

to.user._id

String

N.A. Included in API response.

ID of the user who owns the from node. In case of EXTERNAL-US its null.

to.user.legal_names

Array of String

N.A. Included in API response.

Legal Name on the user profile. In case of EXTERNAL-US its the merchant or send name. This is meant to be an easy to use label, if legal names shuffle on the user profile, legal names here wont change.

amount.amount

Number

Yes

Amount of the transaction.

amount.currency

String

Yes

Currency of the transaction.

fees.fee

Float

No

Fee amount going to (if +ve) or being taken (if -ve) from the node, in dollars(USD).

fees.note

String

No

Note associated with the fee object. 140 Characters.

fees.to.id

String

No

ID of the fee node.

recent_status.date

Number

N.A. Included in API response.

Unix timestamp (in ms) value of when the recent status was updated.

recent_status.note

String

N.A. Included in API response.

Note associated with the recent status.

recent_status.status

String

N.A. Included in API response.

recentstatus.status_id

String

N.A. Included in API response.

timeline.date

String

N.A. Included in API response.

Unix timestamp (in ms) value of when the timeline object was created.

timeline.note

String

N.A. Included in API response.

Human readable notes associated with the timeline object.

timeline.status

String

N.A. Included in API response.

timeline.status_id

String

N.A. Included in API response.

extra

Object

Depends

Possible Transaction Statuses

Status

Status ID

Comment

QUEUED-BY-SYNAPSE

-1

Transaction has been queued by Synapse. Once reviewed, the transaction will either go to CREATED or CANCELED.

CREATED

1

Transaction created

PROCESSING-DEBIT

2

Funds have been pulled from the sending node.

PROCESSING-CREDIT

3

Funds are being sent to the receiving node.

SETTLED

4

Funds have been sent to the receiving node.

CANCELED

5

Transaction has been canceled.

RETURNED

6

Transaction has returned This is how ACH Returns, Card Chargebacks, Returned Wires, and similar are expressed in our system.

Meta Schema

Meta Schema of RDC Transactions

Key

Type

Required

Description

account_num

String

N.A. Included in API response.

Account number located on the check.

amount

String

N.A. Included in API response.

Amount located on the check.

back_signature

Boolean

N.A. Included in API response.

True if the check has been signed at the back, else False.

check_back

String

Yes

check_front

String

Yes

check_number

String

N.A. Included in API response.

Check number specified on the check image.

check_quality_bucket_num

String

N.A. Included in API response.

Indicates the quality of predictions made by us which ranges from 1-7 where 1 is excellent and 7 is very poor and is not an indication of the quality of the image provided.

front_signature

Boolean

N.A. Included in API response.

True if the check has been signed on the front, else False.

is_check

Boolean

N.A. Included in API response.

True if the image can be auto-recognized as a check, else False.

is_endorsed

Boolean

N.A. Included in API response.

True if the check has been endorsed, else False.

name

String

N.A. Included in API response.

Name of the check recipient.

original_check_back

String

N.A. Included in API response.

URL of back of the check originally supplied by you.

original_check_front

String

N.A. Included in API response.

URL of front of the check originally supplied by you.

routing_number

String

N.A. Included in API response.

Routing number located on the check.

Meta Schema of RDFI ACH or Incoming WIRE Transactions

Key

Type

Required

Description

account_num

String

N.A. Included in API response.

Account number of the sender.

addenda

String

N.A. Included in API response.

Additional payment info supplied with the transaction.

company_entry_description

String

N.A. Included in API response.

This field describes the purpose or intent of a transaction. Only avaliable for ACH Transactions.

company_id

String

N.A. Included in API response.

Unique identifier used for identifying entities. Only available for ACH Transactions.

company_name

String

N.A. Included in API response.

Name of entity who sent the payment instruction.

entry_class

String

N.A. Included in API response.

Type of transaction type. In case of ACH, its terms of ACH transfers, valid SEC codes are (WEB, PPD, IAT, CTX, CCD and TXP). Other ACH types remain unsupported and will be rejected immediately. In case of Wires, it's just WIRE.

high_risk

Boolean

N.A. Included in API response.

True if we think the transaction is a high risk transaction.

individual_id

String

N.A. Included in API response.

The number used by the originating business to identify the individual being paid or charged. Only avaliable for ACH Transactions.

monitoring_class

String

N.A. Included in API response.

name

String

N.A. Included in API response.

Name of the receiver that the payment is intended for.

posted_date

String

N.A. Included in API response.

Date of when the transaction is supposed to be posted on. Format: YYYY-MM-DD.

posting_data

String

N.A. Included in API response.

Additional payment info supplied with the transaction.

routing_num

String

N.A. Included in API response.

Routing number of the sender.

subnet_id

String

N.A. Included in API response.

ID of the subnet where the payment instruction was sent to.

tracking_id

String

N.A. Included in API response.

Tracking number of the transaction. Trace ID for ACH and IMAD for Wires.

type

String

N.A. Included in API response.

Type of EXTERNAL-US transaction. In this case ACH or WIRE.

Possible monitoring_class Values

Value

Description

3rd_party_processor

Payment to a merchant processed with a third party entity

child_support

Child support payment

e-commerce

E-commerce payment

gym_membership

Fitness center monthly membership

loan

Loan payment

payroll_credits

Payroll payment

retail

Payment to a store-branded debit card

utility

Utility bill payment

accounting

Bookkeeping payments (bookkeeping software, CPAs etc.)

credit_card

Credit card payment

external_bank_transfer

Transfer to/from an external bank account

insurance

Insurance premiums

microdeposits

Micro-deposit transaction

prepaid_card

Transfer to/from a prepaid card

social_security

Social security benefit payment

veteranmilitary

Veteran military benefits payment

canpay

Payment to CanPay app

fedstate_taxes

Federal/State tax payment

investments

Transfer to/from an investment account

misc_ach

Not elsewhere classified

rent

Rent payment

unemployment

Unemployment benefits payment

Meta Schema of Internal Transactions

Key

Type

Required

Description

routing_num

String

N.A. Included in API response.

Routing number of the sender.

tracking_id

String

N.A. Included in API response.

ID that can be used to trace the transaction internally in our network.

type

String

N.A. Included in API response.

Type of EXTERNAL-US transaction. In this case INTERNAL_TRANSFER.

Meta Schema of Card Transactions

Key

Type

Required

Description

acquirer_reference_number

String

N/A

A 23-digit identifier assigned by the merchant to uniquely identify this transaction on the card network. This is only available once a transaction is SETTLED.

address.street

String

Yes

The street where the merchant's terminal is located. This may also be the merchant's name for e-commerce transactions.

address.city

String

Yes

The city where the merchant's terminal is located.

address.state

String

Yes

The state where the merchant's terminal is located. This field may be an empty string for international transactions.

address.zipcode

String

Yes

The zipcode where the merchant's terminal is located.

address.country

String

Yes

The country where the merchant's terminal is located. This will be the ISO 3166-1 alpha-2 country code.

approval_code

String

Yes

A 6-character alphanumeric code the Synapse provides to the merchant when approving a transaction.

condition_code

N/A

N/A

This field is always null.

conversion_meta.settlement_currency

String

Yes

This field is always cUSD.

conversion_meta.settlement_currency_conversion_rate

Number

Yes

The exchange rate used to convert the transaction amount in the merchant's currency to USD.

conversion_meta.transaction_currency

String

Yes

The ISO 4217 currency code

enriched_info.entity_id

String

No

Entity ID (i.e. the unique identifier that maps to the business entity / Corporate Entity Profile associated with the transaction).

enriched_info.facilitator_id

String

No

Facilitator ID (i.e. the unique identifier that maps to the facilitator / Facilitator Profile associated with transaction).

enriched_info.location_id

String

No

Location ID (i.e. the unique identifier that maps to the specific retail location / Location Profile associated with the transaction)

enriched_info.status

String

No

The status for the merchant information in the Knowledge Repository. The value can either be SETTLED or PENDING.

fees.amount

Number

No

The amount of the fee, in cents.

fees.type

String

No

foreign_transaction

Boolean

Yes

This field indicates whether the transaction was performed in a country other than the cardholder's home country.

is_recurring

Boolean

Yes

This field indicates whether the transaction was previously authorized as a recurring transaction.

is_force_post

Boolean

Yes

mcc

String

Yes

The 4-digit "Merchant Category Code".

mid

String

Yes

The "Merchant Identifier" used by the card network to identify the merchant.

pan_entry_mode

String

Yes

partial_approval_allowed

Boolean

Yes

This field indicates whether the transaction can be "partially approved" for an amount less than the requested transaction amount.

pin_entry_mode

String

Yes

presentment_info.card_presence

String

Yes

presentment_info.cardholder_presence

String

Yes

presentment_info.security_concern

String

Yes

presentment_info.type

String

Yes

rebates.amount

Number

No

rebates.type

String

No

revenues.amount

Number

No

The total amount of interchange revenue generated by the transaction (in cents).

revenues.type

String

No

The kind of revenue; either a switch_fee charged by the network or interchange generated by the transaction.

revenues.meta.program

String

No

The interchange rate category of the transaction.

revenues.meta.cap

Number

No

The maximum amount of revenue that can be assigned to a transaction in the given interchange category.

revenues.meta.fixed_rate

Number

No

The flat amount of revenue generated by a transaction independent of the transaction value.

revenues.meta.variable_rate

Number

No

The percentage (in basis points) of the transaction amount that will be paid as revenue in addition to the fixed_rate.

revenues.meta.daily_adjustment_rate

Number

No

The amount (in cents) added to the unadjusted_value to compute the final revenues amount. This value is based on the total revenue reported by the card network (e.g. Mastercard or Visa)

revenues.meta.unadjusted_value

Number

No

The amount (in cents) of the total revenue generated by a transaction before the daily_adjustment_rate was applied.

sub_amounts.amount

Number

No

The amount, in cents.

sub_amounts.type

String

No

subnet_id

String

Yes

The Synapse subnet ID.

terminal_id

String

Yes

A value assigned by the merchant that is used to identify the terminal where this transaction originated.

terminal_info.attendance

String

Yes

terminal_info.card_input_capability

String

Yes

terminal_info.card_retention_capability

String

Yes

terminal_info.location

String

Yes

terminal_info.operator

String

Yes

terminal_info.type

String

Yes

type

String

Yes

Possible pan_entry_mode Values

Value

Description

UNSPECIFIED

PAN entry mode unknown.

MANUAL

PAN manual entry.

INTEGRATED_CIRCUIT_CARD

PAN auto-entry via EMV chip.

QR_OR_BARCODE

PAN auto-entry via QR or barcode reader.

OCR

PAN auto-entry via optical character reader (OCR).

KEY_ENTERED

PAN manual entry.

CONTACTLESS

PAN auto-entry via contactless EMV chip.

ELECTRONIC

PAN/Token entry via electronic commerce containing DSRP (Digital Secure Remote Payments) cryptogram.

CHIP_FAILURE_USED_MANUAL

A hybrid terminal with an online connection to the acquirer failed in sending a chip fallback transaction (CHIP_FAILURE_USED_TRACK). To complete the transaction, a voice transaction takes place during which the merchant communicates the PAN and the expiry date originating from the magnetic stripe to the acquirer.

CHIP_FAILURE_USED_TRACK

Chip card at chip-capable terminal was unable to process transaction using data on the chip; therefore, the terminal defaulted to the magnetic stripe-read PAN. The full track data has been read from the data encoded on the card and transmitted to Synapse.

FROM_FILE

Credential on file.

FROM_SERVER

PAN auto entry via server (issuer, acquirer, or third party vendor system).

FROM_OTHER_CARDLESS_ENTRY

PAN/Token entry via electronic commerce with optional SecureCode-AAV or DSRP cryptogram in UCAF.

MAGNETIC_STRIPE_FULL

PAN auto-entry via magnetic stripe; the full track data has been read from the data encoded on the card and transmitted to Synapse.

MAGNETIC_STRIPE_CONTACTLESS

PAN auto-entry via contactless magnetic stripe; the full track data has been transmitted by the merchant to Synapse.

APPLE_PAY

PAN/Token entry via Apple mobile wallet.

GOOGLE_PAY

PAN/Token entry via Google mobile wallet.

SAMSUNG_PAY

PAN/Token entry via Samsung mobile wallet.

TOKEN

PAN entry via token; this merchant does not store the full card number and instead uses a token when initiating transactions.

Possible pin_entry_mode Values

Value

Description

UNSPECIFIED

Terminal PIN entry capability unknown.

PIN_ENTRY_CAPABILITY

Terminal has PIN entry capability.

PIN_ENTRY_NO_CAPABILITY

Terminal does not have PIN entry capability.

PIN_PAD_INOPERATIVE

Terminal has PIN entry capability but PIN pad is not currently operative.

PIN_VERIFIED_BY_TERMINAL

Possible presentment_info.card_presence Values

Value

Description

CARD_PRESENT

Card present.

CARD_NOT_PRESENT

Card not present.

PRE_AUTHORIZED_PURCHASE

Card not present; transaction previously authorized.

Possible presentment_info.cardholder_presence Values

Value

Description

CUSTOMER_PRESENT

Cardholder present.

CUSTOMER_NOT_PRESENT

Cardholder not present.

MAIL_ORDER

Cardholder not present; mail order.

TELEPHONE_ORDER

Cardholder not present; phone order.

RECURRING_PAYMENT

Standing order or recurring transaction.

PRE_AUTHORIZED_PURCHASE

DEFERRED_BILLING

INSTALLMENT_PAYMENT

Possible presentment_info.security_concern Values

Value

Description

NO_SECURITY_CONCERN

SUSPECTED_FRAUD

IDENTIFICATION_VERIFIED

ELECTRONIC_TRANSACTION_WITH_DIGITAL_SIGNATURE

NONSECURE_ELECTRONIC_TRANSACTION

SECURE_ELECTRONIC_TRANSACTION_WITH_CARDHOLDER_CERTIFICATE

SECURE_ELECTRONIC_TRANSACTION_WITHOUT_CARDHOLDER_CERTIFICATE

CHANNEL_ENCRYPTED_ELECTRONIC_TRANSACTION

CVV_VALID

CVV_INVALID

INTERNET_PINNED_DEBIT_TRANSACTION

Possible presentment_info.type Values

Value

Description

ORIGINAL_PRESENTMENT

FIRST_REPRESENTMENT

SECOND_REPRESENTMENT

THIRD_REPRESENTMENT

PREVIOUSLY_AUTHORIZED_REQUEST

RESUBMISSION

CARD_VALIDATION

Possible sub_amounts.type Values

Value

Description

AMOUNT_CASH

The amount of cash disbursed for a PURCHASE_WITH_CASH_DISBURSEMENT transaction.

AMOUNT_GOODS_AND_SERVICES

CO_PAYMENT

HEALTHCARE_AMOUNT

TRANSIT_AMOUNT

PRESCRIPTION_AMOUNT

VISION_AMOUNT

CLINIC_AMOUNT

DENTAL_AMOUNT

Possible terminal_info.attendance Values

Value

Description

ATTENDED

Attended terminal.

UNATTENDED

Unattended terminal (e.g. home PC, mobile phone)

Possible terminal_info.card_input_capability Values

Value

Description

UNKNOWN

Input capability unknown or unspecified.

MANUAL

MAGNETIC_STRIPE

Terminal supports magnetic stripe input only.

BARCODE_OR_QR

OCR

ICC

Terminal supports EMV contact chip input only.

KEY_ENTERED

Terminal supports key entry input only.

FILE

CONTACTLESS_READ_VIA_MAG_STRIPE_RULES

Terminal supports contactless magstripe input but not contactless EMV input. The terminal also may support one or more other card input types, including EMV contact chip input, magnetic stripe input, and key entry input.

CONTACTLESS_READ_VIA_CHIP_RULES

Terminal supports contactless EMV input and contactless magstripe input. The terminal also may support one or more other card input types, including EMV contact chip input, magnetic stripe input and key entry input.

MAG_STRIPE_AND_KEY_ENTRY

Terminal supports magnetic stripe input and key entry input.

MAG_STRIPE_AND_KEY_ENTRY_AND_EMV

Terminal supports EMV contact chip input, magnetic stripe input and key entry input.

MAG_STRIPE_AND_EMV

Terminal supports EMV contact chip input and magnetic stripe input.

SECURE_CARDLESS_ENTRY

Possible terminal_info.card_retention_capability Values

Value

Description

DEVICE_CANNOT_RETAIN_CARD

Terminal/operator does not have card capture capability.

DEVICE_CAN_RETAIN_CARD

Terminal/operator has card capture capability.

Possible terminal_info.location Values

Value

Description

ON_PREMISE

Terminal is on premises of the merchant.

OFF_PREMISE

Terminal is off premises of the merchant (remote location).

Possible terminal_info.operator Values

Value

Description

CUSTOMER_OPERATED

CARD_ACCEPTOR_OPERATED

ADMINISTRATIVE

Possible terminal_info.type Values

Value

Description

ADMINISTRATIVE_TERMINAL

POS_TERMINAL

ATM

HOME_TERMINAL

ECR

DIAL_TERMINAL

TRAVELERS_CHECK_MACHINE

FUEL_MACHINE

SCRIP_MACHINE

COUPON_MACHINE

TICKET_MACHINE

POINT_OF_BANKING_TERMINAL

TELLER

FRANCHISE_TELLER

PERSONAL_BANKING

PUBLIC_UTILITY

VENDING

SELF_SERVICE

AUTHORIZATION

PAYMENT

VRU

SMART_PHONE

INTERACTIVE_TELEVISION

PERSONAL_DIGITAL_ASSISTANT

SCREEN_PHONE

ELECTRONIC_COMMERCE

MICR_TERMINAL

OFF_PREMISE

Possible type Values

Value

Description

PURCHASE

CASH

DEBIT_ADJUSTMENT

PURCHASE_WITH_CASH_DISBURSEMENT

NON_CASH_FINANCIAL_INSTRUMENT

QUASI_CASH

WITHDRAWAL_TO_ELECTRONIC_ACCOUNT

RETURN

DEPOSIT

CREDIT_ADJUSTMENT

PAYMENT_RETURN

PAYMENT_TO_THIRD_PARTY

PAYMENT_DEBIT

PAYMENT_FROM_THIRD_PARTY

PAYMENT_CREDIT

Extra Schema

Key

Type

Required

Description

created_on

Number

N.A. Included in API response.

Unix Timestamp of when the transaction was crated.

asset

String

rate

Number

N.A. Included in API response.

rate_limit

Number

No

supp_id

String

No

This field is usually used to link processor transaction PK with ours. 250 characters.

In case of external transactions, this field stores a unique hash to identify the transaction.

In case of transactions originated by you, it can be a PK from your dB.

group_id

String

No

Used to group transaction together.

note

String

No

Memo associated with the transaction.

encrypted_note

String

No

Any memo supplied here will be encrypted and stored in our system. Used mostly for RPPS transactions where sometimes PII is supplied as a memo.

process_on

Integer

No

Date to process transaction. Supplied as an integer in days, returned by the api in Unix epoch time.

settlement_delay

Integer

No

Amount of time to delay transaction (in days). Generally a positive delay in days. NOTE: A negative value between, and including, -1 to -7 can be provided to speed settling of trusted users ACH-US related transactions specifically.

tracking_number

String

N.A. Included in API response.

Tracking number associated with the transaction. In case of ACH its the trace ID and in case of wires its IMAD.

same_day

Boolean

No

[Same-day ACH must be enabled for your platform] This field is now deprecated. Please use speed instead. Set this to true if you wish to settle the transaction on the same day.

speed

String

No

[Same-day ACH or RTP must be enabled for your platform and suppored by the receving bank.]

Speed at which you wish to process the ACH payment. Options: RTP (credit only), SAMEDAY or NEXTDAY (default).

other.attachments

Array

No

List of padded base64 attachments.

other.chargeback_disputed

Boolean

No

Set to true if the transaction has been disputed for chargeback. Only applicable for interchange transactions.

other.dispute_meta

Object

No

other.is_provisional_credit

Boolean

N.A. Included in API response.

Set to true if the transaction is a provisional credit.

other.parent_transaction_id

String

N.A. Included in API response.

If the transaction is a provisional credit, then this ID will indicate the disputed transaction.

txp_meta

Object

No

interchange_meta

Object

No

Dispute Meta Fields for Card Transactions

Key

Type

Required

Description

dispute_form

String

N.A. Included in API response.

PDF record of the dispute. This is for internal use and does not need to be provided to your user.

dispute_form_id

String

N.A. Included in API response.

dispute_status

String

N.A. Included in API response.

dispute_status_note

String

N.A. Included in API response.

provisional_credit_transaction_id

String

N.A. Included in API response.

Provisional credit granted to the end-user from the Platform’s reserve while the dispute investigation is taking place.

created_date

N.A. Included in API response.

type_of_merchandise_or_service

Required for dispute type CHARGE_BACK

The type of merchandise or service (e.g. GROCERY).

merchant_contacted

boolean

Required for dispute type CHARGE_BACK

Whether the merchant was contacted.

contact_method

contact_date

attachments

list

Documents related to the dispute case.

network_credit_transaction_id

string

N.A. Included in API response.

A credit from the network for the disputed transaction.

network_representment_transaction_id

string

N.A. Included in API response.

A debit from the network when the Merchant submits a chargeback representment for the dispute

Possible dispute_status Values

Value

Description

PENDING

Default status of a new dispute.

CREATED

The dispute has been batched to the network.

PENDING|SUBMITTED

The dispute has been successfully submitted to the network.

PENDING|WON

Received a chargeback credit from the network.

PENDING|LOST

The network rejected the dispute. The dispute may not have met the criteria for the dispute reason or the chargeback window elapsed. In some cases, compliance can/will re-open the case. Dispute will move to CLOSED|LOST after 45 days of inactivity or PENDING if re-opened.

CLOSED|WON

Case closed after 45 days of receiving a chargeback credit.

CLOSED|LOST

Received a representment debit from the network or the dispute's status is updated for inactivity (from PENDING|LOST).

Possible dispute_status_note Values

Dispute Status Note is supposed to be a free string field, but in some instances disputes can fail instantly due to some network and internal rules we’ve set. This means the dispute case will not be created and submitted. In those cases, the dispute_status_note filed might have one of the following values:

Value

Description

invalid_amount

Cannot dispute transactions under $25. Cannot dispute PPE transactions under $50.

emv_transaction

Cannot dispute a valid EMV transaction.

afd_transaction

Cannot dispute AFD transactions.

chargeback_limit_exceeded

Cannot submit more than 15 disputes per PAN.

invalid_reason

Cannot use dispute reason (UNAUTHORIZED|CARD_IN_HAND) for Card Present transactions.

invalid_reason|emv_fallback

Cannot use dispute reason (UNAUTHORIZED|CARD_IN_HAND) for EMV fallback transactions.

TXP Meta Fields

Key

Type

Required

Description

tin

String

Yes

Tax Identification Number

payment_code

String

Yes

Tax Payment Type Code

tax_period_end_date

String

Yes

Tax Period End Date (YYMMDD)

amount_types

Array of Strings

Yes

amounts

Array of Integers

Yes

Tax Amounts (in cents)

taxpayer_verification

String

No

Taxpayer Verification

Possible amount_types Values

Currently the following values are supported for amount type:

  • TAX

  • PENALTY

  • INTEREST

  • STATE

  • LOCAL

  • CITY

  • FEE

  • ESCROW

  • ESTIMATED

  • ANNUAL

  • EXTENSION

  • AUDIT

  • LOAN

  • UNDER_PROTEST

  • RETURN

  • BILL

  • PRIOR_OVERPAYMENT

  • CREDIT_MEMO

  • DISCOUNT

  • LEVY

  • GARNISHMENT

Interchange Meta Fields

Key

Type

Required

Description

soft_descriptor

String

No

Soft Descriptor functionality enables you to dynamically modify the external bank's statement descriptor on a per-transaction basis

Retry ACH Transaction

Transaction

PATCH https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/trans/:tran_id

This endpoint allows you to retry a specific transaction.

Path Parameters

Headers

Request Body

Example Request

Only ACH transactions that returned can be retried for now. If a retry fails, you will receive a 400 Bad Request response with error.code:cannot_retry_transaction_****.

Subscriptions

What are Webhook Subscriptions

Information in our system is constantly changing, long after API calls have been made.

To stay updated on the latest details for users, nodes, subnets and transactions, we recommend subscribing to webhooks. This allows you to register a URL to receive updates as they occur.

Example Use Cases:

  • A previously verified user may be flagged for a sanctions match.

  • A node’s balance may update after a payment has posted.

  • A subnet may be locked after the user is locked for fraud.

  • A transaction may begin processing after it is created.

Webhook Retries

Synapse will send ~5 retries within a 24 hour period for any failed webhook delivery. A webhook delivery is considered a failure unless your server responds with one of the following HTTP codes: 200, 204, 400, 404, 405, 408.

After the failed attempts, we will log the webhooks. That way, even if we fail to deliver the request, you can still access the original request and the reason as to why the webhook failed.

Originating IP Address

Currently we send Webhooks from the following IP addresses:

Webhook Object Details

Webhook Format

Best key to Query The _rest key is the best key to query by, as it matches what you receive from the API.

Webhook URL Response Object

HMAC for Webhooks

Every webhook is signed with HMAC.

HMAC is a protocol that helps you judge the authenticity of the received message. This comes in handy when you want to quickly find out whether the webhook was sent by Synapse or a malicious/notorious party.

The signature is a SHA-1 and SHA-256 HMAC hash of the object_id + your client_id, with the secret key as your client_secret.

Please note: Python (FullBody) uses the entire body of a webhook to create a signature, which can be used to rebuild a X-Synapse-Signature-SHA256-FullBody signature.

You will be able to rebuild the signature the following way:

Please note that raw should look like this (with +): 563db3fb86c27307d925871f+e3f19e4bd4022c86e7f2

Not like this (without +): 563db3fb86c27307d925871fe3f19e4bd4022c86e7f2.

Since the SHA-1 signature is in hex, it should look like this:5bce964c20b0c36313d8f7cffc2ff4772d0c96750

We then take this signature and add it into the header of the request with name X-Synapse-Signature and X-Synapse-Signature-Sha256.

Dispute Chargebacks

Dispute Chargeback

PATCH https://api.synapsefi.com/v3.1/trans/:tran_id/dispute-chargeback

This endpoint allows you to dispute a chargeback that you received on Interchange Transactions.

Path Parameters

Headers

Request Body

Example Request

Only INTERCHANGE-US transactions that have been RETURNED within the last 14 days with return code of IR999 can be disputed.

Dispute Transaction

Dispute

PATCH https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/trans/:tran_id/dispute

This endpoint allows you to dispute a card transaction.

Path Parameters

Headers

Request Body

Card Transactions

Dispute Reason Codes

Dispute Reason Code by Network

Dispute Reason Codes are formatted as DISPUTE TYPE|DESCRIPTION.

Mastercard

Maestro

Pulse

Legacy Dispute Reason Lookup

Below is the table of legacy dispute reason codes.

Dispute Meta

Currently Dispute Meta is only required for Card Transaction. Following are the fields allowed in dispute_meta:

ACH Transactions

Dispute Reasons

Example Request

Please note that , , and are transactions that cannot be created by the API as by the very nature of the transaction, the user accounts receive them vs create them via the API.

Go to to see all the required and optional body parameters allowed during transaction creation. Following are a few examples of various types of transactions and how to create them:

Below is an example of how to create a transaction between two nodes that exist in Synapse. If you wish to cover transaction fees, see our .

Unlike , for RDC transactions, both from and to nodes are part of the payload, while from is not really a node, its the RDC data:

To cancel a transaction en route to the recipient, the transaction must not have been batched already. For example, to cancel transactions between native Synapse accounts (ex: Deposit Accounts), they need to have status CREATED or QUEUED-BY-SYNAPSE.While a transaction leaving a Deposit Account, to an ACH-US account can be canceled with status CREATED, QUEUED-BY-SYNAPSE orPROCESSING-DEBIT (because outgoing ACH is batched during PROCESSING-CREDIT). You cannot cancel an already settled transaction, with the exception of Reversals for Interchange Pull transactions. If a cancelation fails, you will receive a 400 Bad Request response with error.code:cannot_cancel_transaction. Go to to learn more.

Type of , RDC or EXTERNAL-US.

Go to to learn more.

Current status of the transaction. Go to to learn more.

Current status id of the transaction. Go to to learn more.

Status of the timeline object. Go to to learn more.

Status id of the timeline object. Go to to learn more.

Go to for more details.

Various types of transactions have different types of meta data avaliable. Other than RDC, all other transactions that have meta info are not created by you, but are more so incoming transactions coming into a node (either as a debit or credit) through a .

URL of back of the check. Supplied as an encoded via the API which then is converted to a URL by us. The file types accepted are JPEG, PNG, WEBP, TIFF, BMP and PDF. Please ensure that the image is clear, with all corners visible in case of a document with legible text. Once the image has gone through our RDC vision stack, the url returned will be the url of a post-processed B/W and cropped check image ready for X9 processing.

URL of front of the check. Supplied as an encoded via the API which then is converted to a URL by us. The file types accepted are JPEG, PNG, WEBP, TIFF, BMP and PDF. Please ensure that the image is clear, with all corners visible in case of a document with legible text. Once the image has gone through our RDC vision stack, the url returned will be the url of a post-processed B/W and cropped check image ready for X9 processing.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Go to to learn more.

Meta object containing all the details associated with a TXP ACH transaction. Go to to learn more.

Meta object containing all the details associated with a Interchange transaction. Go to to learn more.

Go to to learn more.

Go to to learn more.

Tax Information ID Number (Amount Type). to learn more.

Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description

If dispute is won, the transaction will go back to SETTLED status. We recommend to be notified.

Name
Type
Description
Name
Type
Description
Name
Type
Description

If you wish to learn more about Card Disputes, see: .

Dispute Reason Code
Reason Code
Dispute Reason Code
Reason Code
Dispute Reason Code
Reason Code
Transaction Object Details
transaction fee resource
subnet
RDFI ACH
Wire Transactions
Internal Transactions
Card Transactions
Possible Transaction Statues
Transactions between Nodes

tran_id

string

ID of the transaction.

node_id

string

ID of the node.

user_id

string

ID of the user.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

retry_transaction

boolean

True if the transaction needs to be retried.

{
    "_id": "5fea66967fe6545a36203380",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe50b2dab6ce7004340c43a/trans/5fea66967fe6545a36203380"
        }
    },
    "_v": 2,
    "amount": {
        "amount": 100.1,
        "currency": "USD"
    },
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "* SynapseFi"
    },
    "extra": {
        "asset": null,
        "created_on": 1609197206647,
        "group_id": null,
        "ip": "255.127.79.76",
        "latlon": "unknown,unknown",
        "location": {
            "address_city": null,
            "address_country_code": null,
            "address_postal_code": null,
            "address_subdivision": null,
            "lat": 0,
            "lon": 0
        },
        "note": "",
        "other": {
            "affect_limits": true,
            "attachments": [],
            "chargeback_disputed": false,
            "dispute_form": null,
            "dispute_meta": {},
            "dispute_reason": null,
            "disputed": false,
            "is_provisional_credit": false
        },
        "process_on": 1609197206647,
        "rate": null,
        "rate_limit": null,
        "same_day": false,
        "settlement_delay": 0,
        "supp_id": "5fea66758c96451319c664ac",
        "tracking_number": null
    },
    "fees": [
        {
            "fee": 0.0,
            "note": "Facilitator Fee",
            "to": {
                "id": "None"
            }
        }
    ],
    "from": {
        "id": "5fe50b2dab6ce7004340c43a",
        "nickname": "SynapsePay Test Checking Account - 8901",
        "type": "ACH-US",
        "user": {
            "_id": "5fe50a777562960078d3a5c6",
            "legal_names": [
                "Test User"
            ]
        }
    },
    "recent_status": {
        "date": 1609197206647,
        "note": "Transaction Created.",
        "status": "CREATED",
        "status_id": "1"
    },
    "timeline": [
        {
            "date": 1609197206647,
            "note": "Transaction Created.",
            "status": "CREATED",
            "status_id": "1"
        }
    ],
    "to": {
        "id": "5fe96562c54d7b7bcda9b9da",
        "nickname": "My Deposit Account",
        "type": "DEPOSIT-US",
        "user": {
            "_id": "5fe50a777562960078d3a5c6",
            "legal_names": [
                "Test User"
            ]
        }
    }
}
{
    "error": {
        "code": "missing_user_ip",
        "en": "User IP is missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
PATCH /v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe50b2dab6ce7004340c43a/trans/5fea5e13b01cb8f4cfc6681f HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
    "retry_transaction": true
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/5fe50a777562960078d3a5c6/nodes/5fe50b2dab6ce7004340c43a/trans/5fea5e13b01cb8f4cfc6681f' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_ohpVj1iwMQgqHR0ATzbGEU4fBuXOJ0FWZk28y7cD|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
    "retry_transaction": true
}'
//
//
//
//
50.112.48.126
44.238.232.80
35.85.83.81
34.217.238.79
54.213.248.113
35.155.87.17
52.26.202.154
54.212.103.225
44.226.15.61
35.162.233.82
54.200.40.98
52.37.180.52
3.142.111.236
3.143.46.117
3.129.93.247
3.128.242.182
3.134.237.142
18.189.10.12
54.186.198.236
52.41.175.88
34.211.216.190
52.25.132.122
35.84.240.95
3.16.61.148
3.140.228.182
3.128.224.214
3.17.240.8
3.143.10.7
3.142.191.198

Key

Type

Description

_id.$oid

String

Object ID of webhook

client_id

String

Object ID of Client

date

Integer

Date webhook was created (milliseconds since Unix epoch time)

function

String

Resouce | Method

http_response_code

String

Response code from webhook URL

http_response_text

String

Response text from webhook URL

http_responses[]

Array

List of response data from webhook URL. See Webhook Response Object (below) for more information.

http_url

String

URL webhook was sent to

object_id

String

Object ID attached to resource type

safe_obj._id.$oid

String

Object ID of resource

safe_obj._rest

Object

Contains information about the resource (node, transaction, user, subnet objects)

safe_obj.webhook_meta

Object

Contains information about webhook subscription updates (e.g. who the object was updated by, function used to perform the update, etc)

safe_obj.webhook_meta.function

String

The function associated with the webhook (e.g. "NODE|PATCH")

safe_obj.webhook_meta.log_id

String

The ID of the log associated with the webhook

safe_obj.webhook_meta.updated_by

String

Who updated the webhook subscription (e.g. "SELF", "BACKEND, etc)

safe_obj.webhook_meta.date.$date

Integer (milliseconds since Unix epoch time)

The wehbook creation date

safe_obj_hash

String

Hashed object information

updated_by

String

For internal use

Key

Type

Description

date

Integer

Date webhook received a response from webhook URL. Use of this value is recommended for ordering webhook responses when receiving them from Synapse.

http_response_code

String

Response code from webhook URL

http_response_text

String

Response text from webhook URL

http_url

String

URL webhook was sent to

import hmac 
from hashlib import sha1, sha256

key = 'your_client_secret'
raw = '{0}+{1}'.format(payload['_id']['$oid'],'your_client_id')

hashed_sha1 = hmac.new(key, raw, sha1)
hashed_sha256 = hmac.new(key, raw, sha256)

# The signature
print hashed_sha1.hexdigest()
print hashed_sha256.hexdigest()
import hmac
from hashlib import sha1, sha256
import json

payload = {"key": "value"}

webhook = json.dumps(payload,sort_keys=True).encode('utf-8')

key = bytes('your_client_secret','utf-8')

hashed_sha256 = hmac.new(key, webhook, sha256)

# The signature
print(hashed_sha256.hexdigest())

tran_id

string

ID of the transaction.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

docs

array

Array of base64 objects of evidence submitted for disputing chargeback. The file types accepted are JPEG, PNG, WEBP, TIFF, BMP, GIF and PDF.

{
    "_id": {
        "$oid": "5ff2636f8430a8d531505493"
    },
    "_v": 2,
    "amount": {
        "amount": 10010,
        "currency": "cUSD"
    },
    "client": {
        "id": "589acd9ecb3cd400fa75ac06",
        "name": "SynapseFi"
    },
    "extra": {
        "asset": null,
        "created_on": {
            "$date": 1609720687750
        },
        "group_id": null,
        "ip": "255.127.79.76",
        "latlon": "unknown,unknown",
        "location": {
            "address_city": null,
            "address_country_code": null,
            "address_postal_code": null,
            "address_subdivision": null,
            "lat": 0,
            "lon": 0
        },
        "note": "Test transaction",
        "other": {
            "affect_limits": true,
            "attachments": [
                "https://cdn.synapsepay.com/uploads/2021/01/04/corRSd0iMgO09TE3e4ZNB21zKh5wIGXPpQsfDxWqtjanmlFACu.pdf"
            ],
            "chargeback_disputed": true,
            "dispute_form": null,
            "dispute_meta": {},
            "dispute_reason": null,
            "disputed": false,
            "is_provisional_credit": false
        },
        "process_on": {
            "$date": 1609720687750
        },
        "rate": null,
        "rate_limit": null,
        "same_day": false,
        "settlement_delay": 0,
        "supp_id": null,
        "tracking_number": null
    },
    "fees": [
        {
            "fee": 150,
            "note": "Synapse Facilitator Fee",
            "to": {
                "id": "55b3f8c686c2732b4c4e9df6"
            }
        }
    ],
    "from": {
        "id": "5fea74557e08871fafe897cf",
        "nickname": "My BofA Card",
        "type": "INTERCHANGE-US",
        "user": {
            "_id": "5fe50a777562960078d3a5c6",
            "legal_names": [
                "Test User"
            ]
        }
    },
    "recent_status": {
        "date": {
            "$date": 1609720760773
        },
        "note": "[Returned on Debit] IR999 -- Stuff",
        "status": "RETURNED",
        "status_id": "6"
    },
    "timeline": [
        {
            "date": {
                "$date": 1609720687750
            },
            "note": "Transaction Created.",
            "status": "CREATED",
            "status_id": "1"
        },
        {
            "date": {
                "$date": 1609720689787
            },
            "note": " Approval Code 392270",
            "status": "PROCESSING-DEBIT",
            "status_id": "2"
        },
        {
            "date": {
                "$date": 1609720692716
            },
            "note": "",
            "status": "PROCESSING-CREDIT",
            "status_id": "3"
        },
        {
            "date": {
                "$date": 1609720693768
            },
            "note": "",
            "status": "SETTLED",
            "status_id": "4"
        },
        {
            "date": {
                "$date": 1609720760773
            },
            "note": "[Returned on Debit] IR999 -- Stuff",
            "status": "RETURNED",
            "status_id": "6"
        }
    ],
    "to": {
        "id": "5fe96562c54d7b7bcda9b9da",
        "nickname": "My Deposit Account",
        "type": "DEPOSIT-US",
        "user": {
            "_id": "5fe50a777562960078d3a5c6",
            "legal_names": [
                "Test User"
            ]
        }
    }
}
{
    "error": {
        "code": "cannot_dispute_chargeback_already_disputed",
        "en": "Cannot Dispute Transaction since the chargeback has already been disputed once before."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
PATCH /v3.1/trans/5ff2636f8430a8d531505493/dispute-chargeback HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
Content-Type: application/json

{
 "docs": [
   "data:application/pdf;base64,JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAErVAhUKFQwAEIzQyMFc0sjhaJUhXCFPAX9gNSi5NSCktLEHIWiTKAac5AiAwVTAwUjc0MFYyBOzlXQ98w1VHDJBxoSCAC7ExJ3CmVuZHN0cmVhbQplbmRvYmoKNSAwIG9iago3NQplbmRvYmoKMiAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDMgMCBSIC9SZXNvdXJjZXMgNiAwIFIgL0NvbnRlbnRzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCj4+CmVuZG9iago2IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdIC9YT2JqZWN0IDw8IC9JbTEgNyAwIFIgPj4gPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0xlbmd0aCA4IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE0MCAvSGVpZ2h0IDEwMCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA5IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayAxMCAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0AENAAAAwqD+qW8PBxEoDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDPwMDEmWdX4KZW5kc3RyZWFtCmVuZG9iago4IDAgb2JqCjIwNgplbmRvYmoKMTAgMCBvYmoKPDwgL0xlbmd0aCAxMSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAxNDAgL0hlaWdodCAxMDAgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD+qWcIX4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG/oEB5FF8ewplbmRzdHJlYW0KZW5kb2JqCjExIDAgb2JqCjg1CmVuZG9iagoxMiAwIG9iago8PCAvTGVuZ3RoIDEzIDAgUiAvTiAzIC9BbHRlcm5hdGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGtl3dYE9kWwO+UJCQktEAoUkJvokgNICWEFkFBqiAqIQkklBgTgogdXVRw7SIKNnRVRNHVFZC1IGJ3Uex9saCirIur2FB5d0LR5/7z/njzfXfub849554yd2buAKDdLpDLc1AdAHJleYrY8GD2hOQUNuUJoABz2AwBQyBUyrkxMVEAHoM9wd+OdzcAQlxddSHm+ib/n0hPJFYKAUBSoXa6SCnMhdwEAF4klCvyACCHQLn19Dw5wRLI+goYIORZBGf28wqC0/t5u1onPpYHdRoA0KALBIpMALRaoJydL8yE82g9gewqE0llAGjrQw4QSgQiyPGQh+fmTiV4HmQHqC+HvAsyJ/27OTO/Y4EgfWh+gSBziPvzgpYwiBCpUp4jmKG++H+ecnNUsHbqww6e6RJFRCzsYU7IreypkQTTIXfJ0sdFQ9aD/EEKs+tnlCZRRSRAhvqoqVDJg3UFLMiuIkFIJGRTyGGynHHEvSfk6RnSMD5kuFrQAmken6gXYbtYrAyNgwznRysVU2MHfKGVGQoed8C2VqCA1K/fospOIOTE/LckYv7g/G8LJfFJUE4DAKPlSxPHQdaCrK/MjiPigTFgVoUSHiFX6yhUsUT8NlDOEcvCgyHDeLDUDEUYkTuhL89VQlLHhhVLpHzCFsaJledJ4iMgw/pgu4UCdfxGkOvEMu5ATbBUsXICEZs6L5E4JBQyzB1rFcsSBvLFHsjzgglfhG23PEf9nEB9XEOcE07IrSCbKPPjBmzx0XmKeEIO48Sj5HkxRA1hnHhalmBMDGQYD54PogAPhAA2UMGWDqaCLCBt7arvglf9I2FAABQgE4iBy4Bk0CJJPSKD5zhQCP4CMqijHLILVo+KQT6UfxmS9tu6gAz1aL7aIhs8hR5yQSTIgdcqyGJoM+gtETyBEunQ9aB3IYw1BzZi7N8yLswqCnoltFSD87K1BzXJoeQQcgQ5jOyIm+ABuB8eBc9BsLnhHNxnMNpv+qSnpDbSI9J1Ujvp9hRpkeKHSowF7dBLf6XEsIrfZYzbwTk98WDcH84OZ8ZZuAlwwT2gHy4eCD17QilvIBci98G6f5/TUAbgW80H9KiuVJRqSA2iOvxoqeWk5TmYr7qi/dXor1l/rOlDVR2M4N/+v41IgQjGGTkQ65Amthg7iJ3BTmDnsCNYPWBjx7EG7CJ2lOAB/2Hqe5g55C1WHU82vC/SIZ3BfAVQQvgkVoHStca10/XzwCwgT1yQB9ct4E2Vz1BIMyV5bC78CojZfJlwxHC2m6ubKwDEN4XQAeANS/2tQFjnv8mKLgPgH9fX13fkmyxyBQAH7eFjfvmbzCEfvouLATi7RahSQCYOnDiR4NtAGz5RxvCbZQ0cYEZuwAv4gSAQCsaAaBAPksFkuOokcD0rwHQwC8wHxaAUrABrwQawGWwDu8BecADUgyPgBDgNLoDL4Dq4C9dPB3gJusE70IsgCAVhIEzEGLFAbBFnxA3hIAFIKBKFxCLJSBqSicgQFTILWYCUIquQDchWpBr5FTmMnEDOIW3IbeQh0on8g3xCMZSO6qNmqB06EuWgXDQSjUcnoZnoNLQQXYguQ8vRKnQPWoeeQC+g19F29CXagwFME2NhlpgLxsF4WDSWgmVgCmwOVoKVYVVYLdYI7/RVrB3rwj7iZJyJs3EXuIYj8ARciE/D5+BL8Q34LrwOb8Gv4g/xbvwriUEyJTmTfEl80gRSJmk6qZhURtpBOkQ6BZ+mDtI7MpnMItuTveHTmEzOIs8kLyVvJO8jN5HbyI/JPRQKxZjiTPGnRFMElDxKMWU9ZQ/lOOUKpYPyQUNTw0LDTSNMI0VDplGkUaaxW+OYxhWNZxq9VB2qLdWXGk0VUWdQl1O3Uxupl6gd1F6aLs2e5k+Lp2XR5tPKabW0U7R7tDeamppWmj6a4zWlmvM0yzX3a57VfKj5ka5Hd6Lz6Kl0FX0ZfSe9iX6b/obBYNgxghgpjDzGMkY14yTjAeODFlNrhBZfS6Q1V6tCq07ritYrbaq2rTZXe7J2oXaZ9kHtS9pdOlQdOx2ejkBnjk6FzmGdmzo9ukzdUbrRurm6S3V3657Tfa5H0bPTC9UT6S3U26Z3Uu8xE2NaM3lMIXMBczvzFLNDn6xvr8/Xz9Iv1d+r36rfbaBn4GGQaFBgUGFw1KCdhbHsWHxWDms56wDrBuuToZkh11BsuMSw1vCK4XujYUZBRmKjEqN9RteNPhmzjUONs41XGtcb3zfBTZxMxptMN9lkcsqka5j+ML9hwmElww4Mu2OKmjqZxprONN1metG0x8zcLNxMbrbe7KRZlznLPMg8y3yN+THzTgumRYCF1GKNxXGLF2wDNpedwy5nt7C7LU0tIyxVllstWy17reytEqyKrPZZ3bemWXOsM6zXWDdbd9tY2Iy1mWVTY3PHlmrLsZXYrrM9Y/vezt4uyW6RXb3dc3sje759oX2N/T0HhkOgwzSHKodrjmRHjmO240bHy06ok6eTxKnC6ZIz6uzlLHXe6Nw2nDTcZ7hseNXwmy50F65LvkuNy8MRrBFRI4pG1I94NdJmZMrIlSPPjPzq6uma47rd9e4ovVFjRhWNahz1j5uTm9Ctwu2aO8M9zH2ue4P7aw9nD7HHJo9bnkzPsZ6LPJs9v3h5eym8ar06vW2807wrvW9y9DkxnKWcsz4kn2CfuT5HfD76evnm+R7w/dvPxS/bb7ff89H2o8Wjt49+7G/lL/Df6t8ewA5IC9gS0B5oGSgIrAp8FGQdJAraEfSM68jN4u7hvgp2DVYEHwp+z/PlzeY1hWAh4SElIa2heqEJoRtCH4RZhWWG1YR1h3uGzwxviiBFREasjLjJN+ML+dX87jHeY2aPaYmkR8ZFboh8FOUUpYhqHIuOHTN29dh742zHycbVR4NofvTq6Psx9jHTYn4fTx4fM75i/NPYUbGzYs/EMeOmxO2OexcfHL88/m6CQ4IqoTlROzE1sTrxfVJI0qqk9gkjJ8yecCHZJFma3JBCSUlM2ZHSMzF04tqJHameqcWpNybZTyqYdG6yyeScyUenaE8RTDmYRkpLStud9lkQLagS9KTz0yvTu4U84TrhS1GQaI2oU+wvXiV+luGfsSrjeaZ/5urMTkmgpEzSJeVJN0hfZ0Vkbc56nx2dvTO7LycpZ1+uRm5a7mGZnixb1jLVfGrB1Da5s7xY3j7Nd9raad2KSMUOJaKcpGzI04eb94sqB9VPqof5AfkV+R+mJ04/WKBbICu4OMNpxpIZzwrDCn+Zic8UzmyeZTlr/qyHs7mzt85B5qTPaZ5rPXfh3I554fN2zafNz57/R5Fr0aqitwuSFjQuNFs4b+Hjn8J/qinWKlYU31zkt2jzYnyxdHHrEvcl65d8LRGVnC91LS0r/bxUuPT8z6N+Lv+5b1nGstblXss3rSCvkK24sTJw5a5VuqsKVz1ePXZ13Rr2mpI1b9dOWXuuzKNs8zraOtW69vKo8ob1NutXrP+8QbLhekVwxb5K08olle83ijZe2RS0qXaz2ebSzZ+2SLfc2hq+ta7KrqpsG3lb/ran2xO3n/mF80v1DpMdpTu+7JTtbN8Vu6ul2ru6erfp7uU1aI2qpnNP6p7Le0P2NtS61G7dx9pXuh/sV+1/8WvarzcORB5oPsg5WPub7W+Vh5iHSuqQuhl13fWS+vaG5Ia2w2MONzf6NR76fcTvO49YHqk4anB0+THasYXH+o4XHu9pkjd1ncg88bh5SvPdkxNOXmsZ39J6KvLU2dNhp0+e4Z45ftb/7JFzvucOn+ecr7/gdaHuoufFQ394/nGo1au17pL3pYbLPpcb20a3HbsSeOXE1ZCrp6/xr124Pu56242EG7dupt5svyW69fx2zu3Xd/Lv9N6dd490r+S+zv2yB6YPqv50/HNfu1f70YchDy8+int097Hw8csnyiefOxY+ZTwte2bxrPq52/MjnWGdl19MfNHxUv6yt6v4L92/Kl85vPrt76C/L3ZP6O54rXjd98/SN8Zvdr71eNvcE9Pz4F3uu973JR+MP+z6yPl45lPSp2e90z9TPpd/cfzS+DXy672+3L4+uUAhIDYBAIMNzcgA4J+dADCSAWDCfQVtYv8/n1oD6f9PhYwMNEL8A/f/FxIDcA8BamFHbNd5TQDsh80ONq0gAGIAAPFBAHV3H2pQQhzKDHc3NSB0BdyafOjre2MGAKURgC+Kvr7ejX19X7bDYG8D0DSt/1+T0CbrALDFg6ArrIJ5RP/90f8fCiWDOf7Yw8zd3dXm/9X/B8FViQQKZW5kc3RyZWFtCmVuZG9iagoxMyAwIG9iagozMjEyCmVuZG9iago5IDAgb2JqClsgL0lDQ0Jhc2VkIDEyIDAgUiBdCmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvQ291bnQgMSAvS2lkcyBbIDIgMCBSIF0gPj4KZW5kb2JqCjE0IDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9nIC9QYWdlcyAzIDAgUiAvVmVyc2lvbiAvMS40ID4+CmVuZG9iagoxIDAgb2JqCjw8IC9UaXRsZSAoU2NyZWVuIFNob3QgMjAyMC0xMi0yOSBhdCA3LjA5LjQwIEFNKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTAuMTUuNiBcKEJ1aWxkIDE5RzczXCkgUXVhcnR6IFBERkNvbnRleHQpCi9DcmVhdG9yIChQcmV2aWV3KSAvQ3JlYXRpb25EYXRlIChEOjIwMjAxMjI5MTUxMDA3WjAwJzAwJykgL01vZERhdGUgKEQ6MjAyMDEyMjkxNTEwMDdaMDAnMDAnKQo+PgplbmRvYmoKeHJlZgowIDE1CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwNDY0MCAwMDAwMCBuIAowMDAwMDAwMTg5IDAwMDAwIG4gCjAwMDAwMDQ0OTMgMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwMTcxIDAwMDAwIG4gCjAwMDAwMDAyOTMgMDAwMDAgbiAKMDAwMDAwMDM4MiAwMDAwMCBuIAowMDAwMDAwODA2IDAwMDAwIG4gCjAwMDAwMDQ0NTcgMDAwMDAgbiAKMDAwMDAwMDgyNSAwMDAwMCBuIAowMDAwMDAxMTAyIDAwMDAwIG4gCjAwMDAwMDExMjEgMDAwMDAgbiAKMDAwMDAwNDQzNiAwMDAwMCBuIAowMDAwMDA0NTc2IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgMTUgL1Jvb3QgMTQgMCBSIC9JbmZvIDEgMCBSIC9JRCBbIDxjNmIwZGU5OTVjODIyZjNjNWI4MDBiMWM1YzY5YjZlZj4KPGM2YjBkZTk5NWM4MjJmM2M1YjgwMGIxYzVjNjliNmVmPiBdID4+CnN0YXJ0eHJlZgo0ODY5CiUlRU9GCg=="
 ]
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/trans/5ff2636f8430a8d531505493/dispute-chargeback' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW' \
--header 'Content-Type: application/json' \
--data-raw '{
 "docs": [
   "data:application/pdf;base64,JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAErVAhUKFQwAEIzQyMFc0sjhaJUhXCFPAX9gNSi5NSCktLEHIWiTKAac5AiAwVTAwUjc0MFYyBOzlXQ98w1VHDJBxoSCAC7ExJ3CmVuZHN0cmVhbQplbmRvYmoKNSAwIG9iago3NQplbmRvYmoKMiAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDMgMCBSIC9SZXNvdXJjZXMgNiAwIFIgL0NvbnRlbnRzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCj4+CmVuZG9iago2IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdIC9YT2JqZWN0IDw8IC9JbTEgNyAwIFIgPj4gPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0xlbmd0aCA4IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE0MCAvSGVpZ2h0IDEwMCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA5IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayAxMCAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0AENAAAAwqD+qW8PBxEoDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDPwMDEmWdX4KZW5kc3RyZWFtCmVuZG9iago4IDAgb2JqCjIwNgplbmRvYmoKMTAgMCBvYmoKPDwgL0xlbmd0aCAxMSAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAxNDAgL0hlaWdodCAxMDAgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD+qWcIX4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG/oEB5FF8ewplbmRzdHJlYW0KZW5kb2JqCjExIDAgb2JqCjg1CmVuZG9iagoxMiAwIG9iago8PCAvTGVuZ3RoIDEzIDAgUiAvTiAzIC9BbHRlcm5hdGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGtl3dYE9kWwO+UJCQktEAoUkJvokgNICWEFkFBqiAqIQkklBgTgogdXVRw7SIKNnRVRNHVFZC1IGJ3Uex9saCirIur2FB5d0LR5/7z/njzfXfub849554yd2buAKDdLpDLc1AdAHJleYrY8GD2hOQUNuUJoABz2AwBQyBUyrkxMVEAHoM9wd+OdzcAQlxddSHm+ib/n0hPJFYKAUBSoXa6SCnMhdwEAF4klCvyACCHQLn19Dw5wRLI+goYIORZBGf28wqC0/t5u1onPpYHdRoA0KALBIpMALRaoJydL8yE82g9gewqE0llAGjrQw4QSgQiyPGQh+fmTiV4HmQHqC+HvAsyJ/27OTO/Y4EgfWh+gSBziPvzgpYwiBCpUp4jmKG++H+ecnNUsHbqww6e6RJFRCzsYU7IreypkQTTIXfJ0sdFQ9aD/EEKs+tnlCZRRSRAhvqoqVDJg3UFLMiuIkFIJGRTyGGynHHEvSfk6RnSMD5kuFrQAmken6gXYbtYrAyNgwznRysVU2MHfKGVGQoed8C2VqCA1K/fospOIOTE/LckYv7g/G8LJfFJUE4DAKPlSxPHQdaCrK/MjiPigTFgVoUSHiFX6yhUsUT8NlDOEcvCgyHDeLDUDEUYkTuhL89VQlLHhhVLpHzCFsaJledJ4iMgw/pgu4UCdfxGkOvEMu5ATbBUsXICEZs6L5E4JBQyzB1rFcsSBvLFHsjzgglfhG23PEf9nEB9XEOcE07IrSCbKPPjBmzx0XmKeEIO48Sj5HkxRA1hnHhalmBMDGQYD54PogAPhAA2UMGWDqaCLCBt7arvglf9I2FAABQgE4iBy4Bk0CJJPSKD5zhQCP4CMqijHLILVo+KQT6UfxmS9tu6gAz1aL7aIhs8hR5yQSTIgdcqyGJoM+gtETyBEunQ9aB3IYw1BzZi7N8yLswqCnoltFSD87K1BzXJoeQQcgQ5jOyIm+ABuB8eBc9BsLnhHNxnMNpv+qSnpDbSI9J1Ujvp9hRpkeKHSowF7dBLf6XEsIrfZYzbwTk98WDcH84OZ8ZZuAlwwT2gHy4eCD17QilvIBci98G6f5/TUAbgW80H9KiuVJRqSA2iOvxoqeWk5TmYr7qi/dXor1l/rOlDVR2M4N/+v41IgQjGGTkQ65Amthg7iJ3BTmDnsCNYPWBjx7EG7CJ2lOAB/2Hqe5g55C1WHU82vC/SIZ3BfAVQQvgkVoHStca10/XzwCwgT1yQB9ct4E2Vz1BIMyV5bC78CojZfJlwxHC2m6ubKwDEN4XQAeANS/2tQFjnv8mKLgPgH9fX13fkmyxyBQAH7eFjfvmbzCEfvouLATi7RahSQCYOnDiR4NtAGz5RxvCbZQ0cYEZuwAv4gSAQCsaAaBAPksFkuOokcD0rwHQwC8wHxaAUrABrwQawGWwDu8BecADUgyPgBDgNLoDL4Dq4C9dPB3gJusE70IsgCAVhIEzEGLFAbBFnxA3hIAFIKBKFxCLJSBqSicgQFTILWYCUIquQDchWpBr5FTmMnEDOIW3IbeQh0on8g3xCMZSO6qNmqB06EuWgXDQSjUcnoZnoNLQQXYguQ8vRKnQPWoeeQC+g19F29CXagwFME2NhlpgLxsF4WDSWgmVgCmwOVoKVYVVYLdYI7/RVrB3rwj7iZJyJs3EXuIYj8ARciE/D5+BL8Q34LrwOb8Gv4g/xbvwriUEyJTmTfEl80gRSJmk6qZhURtpBOkQ6BZ+mDtI7MpnMItuTveHTmEzOIs8kLyVvJO8jN5HbyI/JPRQKxZjiTPGnRFMElDxKMWU9ZQ/lOOUKpYPyQUNTw0LDTSNMI0VDplGkUaaxW+OYxhWNZxq9VB2qLdWXGk0VUWdQl1O3Uxupl6gd1F6aLs2e5k+Lp2XR5tPKabW0U7R7tDeamppWmj6a4zWlmvM0yzX3a57VfKj5ka5Hd6Lz6Kl0FX0ZfSe9iX6b/obBYNgxghgpjDzGMkY14yTjAeODFlNrhBZfS6Q1V6tCq07ritYrbaq2rTZXe7J2oXaZ9kHtS9pdOlQdOx2ejkBnjk6FzmGdmzo9ukzdUbrRurm6S3V3657Tfa5H0bPTC9UT6S3U26Z3Uu8xE2NaM3lMIXMBczvzFLNDn6xvr8/Xz9Iv1d+r36rfbaBn4GGQaFBgUGFw1KCdhbHsWHxWDms56wDrBuuToZkh11BsuMSw1vCK4XujYUZBRmKjEqN9RteNPhmzjUONs41XGtcb3zfBTZxMxptMN9lkcsqka5j+ML9hwmElww4Mu2OKmjqZxprONN1metG0x8zcLNxMbrbe7KRZlznLPMg8y3yN+THzTgumRYCF1GKNxXGLF2wDNpedwy5nt7C7LU0tIyxVllstWy17reytEqyKrPZZ3bemWXOsM6zXWDdbd9tY2Iy1mWVTY3PHlmrLsZXYrrM9Y/vezt4uyW6RXb3dc3sje759oX2N/T0HhkOgwzSHKodrjmRHjmO240bHy06ok6eTxKnC6ZIz6uzlLHXe6Nw2nDTcZ7hseNXwmy50F65LvkuNy8MRrBFRI4pG1I94NdJmZMrIlSPPjPzq6uma47rd9e4ovVFjRhWNahz1j5uTm9Ctwu2aO8M9zH2ue4P7aw9nD7HHJo9bnkzPsZ6LPJs9v3h5eym8ar06vW2807wrvW9y9DkxnKWcsz4kn2CfuT5HfD76evnm+R7w/dvPxS/bb7ff89H2o8Wjt49+7G/lL/Df6t8ewA5IC9gS0B5oGSgIrAp8FGQdJAraEfSM68jN4u7hvgp2DVYEHwp+z/PlzeY1hWAh4SElIa2heqEJoRtCH4RZhWWG1YR1h3uGzwxviiBFREasjLjJN+ML+dX87jHeY2aPaYmkR8ZFboh8FOUUpYhqHIuOHTN29dh742zHycbVR4NofvTq6Psx9jHTYn4fTx4fM75i/NPYUbGzYs/EMeOmxO2OexcfHL88/m6CQ4IqoTlROzE1sTrxfVJI0qqk9gkjJ8yecCHZJFma3JBCSUlM2ZHSMzF04tqJHameqcWpNybZTyqYdG6yyeScyUenaE8RTDmYRkpLStud9lkQLagS9KTz0yvTu4U84TrhS1GQaI2oU+wvXiV+luGfsSrjeaZ/5urMTkmgpEzSJeVJN0hfZ0Vkbc56nx2dvTO7LycpZ1+uRm5a7mGZnixb1jLVfGrB1Da5s7xY3j7Nd9raad2KSMUOJaKcpGzI04eb94sqB9VPqof5AfkV+R+mJ04/WKBbICu4OMNpxpIZzwrDCn+Zic8UzmyeZTlr/qyHs7mzt85B5qTPaZ5rPXfh3I554fN2zafNz57/R5Fr0aqitwuSFjQuNFs4b+Hjn8J/qinWKlYU31zkt2jzYnyxdHHrEvcl65d8LRGVnC91LS0r/bxUuPT8z6N+Lv+5b1nGstblXss3rSCvkK24sTJw5a5VuqsKVz1ePXZ13Rr2mpI1b9dOWXuuzKNs8zraOtW69vKo8ob1NutXrP+8QbLhekVwxb5K08olle83ijZe2RS0qXaz2ebSzZ+2SLfc2hq+ta7KrqpsG3lb/ran2xO3n/mF80v1DpMdpTu+7JTtbN8Vu6ul2ru6erfp7uU1aI2qpnNP6p7Le0P2NtS61G7dx9pXuh/sV+1/8WvarzcORB5oPsg5WPub7W+Vh5iHSuqQuhl13fWS+vaG5Ia2w2MONzf6NR76fcTvO49YHqk4anB0+THasYXH+o4XHu9pkjd1ncg88bh5SvPdkxNOXmsZ39J6KvLU2dNhp0+e4Z45ftb/7JFzvucOn+ecr7/gdaHuoufFQ394/nGo1au17pL3pYbLPpcb20a3HbsSeOXE1ZCrp6/xr124Pu56242EG7dupt5svyW69fx2zu3Xd/Lv9N6dd490r+S+zv2yB6YPqv50/HNfu1f70YchDy8+int097Hw8csnyiefOxY+ZTwte2bxrPq52/MjnWGdl19MfNHxUv6yt6v4L92/Kl85vPrt76C/L3ZP6O54rXjd98/SN8Zvdr71eNvcE9Pz4F3uu973JR+MP+z6yPl45lPSp2e90z9TPpd/cfzS+DXy672+3L4+uUAhIDYBAIMNzcgA4J+dADCSAWDCfQVtYv8/n1oD6f9PhYwMNEL8A/f/FxIDcA8BamFHbNd5TQDsh80ONq0gAGIAAPFBAHV3H2pQQhzKDHc3NSB0BdyafOjre2MGAKURgC+Kvr7ejX19X7bDYG8D0DSt/1+T0CbrALDFg6ArrIJ5RP/90f8fCiWDOf7Yw8zd3dXm/9X/B8FViQQKZW5kc3RyZWFtCmVuZG9iagoxMyAwIG9iagozMjEyCmVuZG9iago5IDAgb2JqClsgL0lDQ0Jhc2VkIDEyIDAgUiBdCmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvQ291bnQgMSAvS2lkcyBbIDIgMCBSIF0gPj4KZW5kb2JqCjE0IDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9nIC9QYWdlcyAzIDAgUiAvVmVyc2lvbiAvMS40ID4+CmVuZG9iagoxIDAgb2JqCjw8IC9UaXRsZSAoU2NyZWVuIFNob3QgMjAyMC0xMi0yOSBhdCA3LjA5LjQwIEFNKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTAuMTUuNiBcKEJ1aWxkIDE5RzczXCkgUXVhcnR6IFBERkNvbnRleHQpCi9DcmVhdG9yIChQcmV2aWV3KSAvQ3JlYXRpb25EYXRlIChEOjIwMjAxMjI5MTUxMDA3WjAwJzAwJykgL01vZERhdGUgKEQ6MjAyMDEyMjkxNTEwMDdaMDAnMDAnKQo+PgplbmRvYmoKeHJlZgowIDE1CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwNDY0MCAwMDAwMCBuIAowMDAwMDAwMTg5IDAwMDAwIG4gCjAwMDAwMDQ0OTMgMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwMTcxIDAwMDAwIG4gCjAwMDAwMDAyOTMgMDAwMDAgbiAKMDAwMDAwMDM4MiAwMDAwMCBuIAowMDAwMDAwODA2IDAwMDAwIG4gCjAwMDAwMDQ0NTcgMDAwMDAgbiAKMDAwMDAwMDgyNSAwMDAwMCBuIAowMDAwMDAxMTAyIDAwMDAwIG4gCjAwMDAwMDExMjEgMDAwMDAgbiAKMDAwMDAwNDQzNiAwMDAwMCBuIAowMDAwMDA0NTc2IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgMTUgL1Jvb3QgMTQgMCBSIC9JbmZvIDEgMCBSIC9JRCBbIDxjNmIwZGU5OTVjODIyZjNjNWI4MDBiMWM1YzY5YjZlZj4KPGM2YjBkZTk5NWM4MjJmM2M1YjgwMGIxYzVjNjliNmVmPiBdID4+CnN0YXJ0eHJlZgo0ODY5CiUlRU9GCg=="
 ]
}'
//
//
//
//

tran_id

string

ID of the transaction.

node_id

string

ID of the node.

user_id

string

ID of the user.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of your device.

X-SP-GATEWAY

string

Your Client ID and Secret, separated by a pipe.

dispute_attachments

array of strings

Additional attachments (in base64) with the dispute form when disputing a transaction. The file types accepted are JPEG, PNG, WEBP, TIFF, BMP, GIF and PDF.

dispute_meta

string

Meta data associated with the dispute.

dispute_reason*

string

Reason for filing a dispute.

{
  "dispute_form": "https://cdn.synapsepay.com/uploads/2018/10/25/z4owXU1l0xFkJ9CbtWfV7Zu53gBryLEpsKjcdPDI2qTMQ68eGO.pdf",
  "provisional_credit_tran": "5bd20bd12073c800fe748fe9",
  "success": true
}
{
    "error": {
        "code": "missing_user_ip",
        "en": "User IP is missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

FRAUD|UNAUTHORIZED|CARD_IN_HAND

4837

FRAUD|UNAUTHORIZED|CARD_LOST

4837

FRAUD|UNAUTHORIZED|CARD_IN_HAND|SHARED

4837

FRAUD|UNAUTHORIZED|CARD_IN_HAND|NOT_SHARED

4837

FRAUD|FRAUDULENT_PROCESSING_OF_TRANSACTIONS

4840

FRAUD|QUESTIONABLE_MERCHANT_ACTIVITY

4849

FRAUD|CARDHOLDER_DOES_NOT_RECOGNIZE_POTENTIAL_FRAUD

4863

FRAUD|CHIP_LIABILITY_SHIFT

4870

FRAUD|CHIP_LIABILITY_SHIFT|LOST|STOLEN|NRI

4871

null

PROCESSING_ERROR|CORRECTION|TERMINAL_MALFUNCTION

2000

PROCESSING_ERROR|WARNING_BULLETIN_FILE

4807

PROCESSING_ERROR|AUTHORIZATION_RELATED_CHARGEBACK

4808

PROCESSING_ERROR|ACCOUNT_NUMBER_NOT_ON_FILE

4812

PROCESSING_ERROR|INCORRECT_AMOUNT

4831

PROCESSING_ERROR|CHARGED_TWICE

4831

PROCESSING_ERROR|CHARGED_TWICE|CREDIT_NOT_PROCESSED|DUPLICATE

4831

PROCESSING_ERROR|CHARGED_TWICE|CREDIT_NOT_PROCESSED|PAID_BY_OTHER_MEANS

4831

PROCESSING_ERROR|POINT_OF_INTERACTION_ERROR

4834

PROCESSING_ERROR|CANCEL_RECURRING_PMT

4841

PROCESSING_ERROR|LATE_PRESENTMENT

4842

PROCESSING_ERROR|INCORRECT_CURRENCY

4846

PROCESSING_ERROR|INSTALLMENT_BILLING_DISPUTE

4850

PROCESSING_ERROR|CHARGE_BACK

4853

PROCESSING_ERROR|ADDENDUM_NO_SHO_ATM_DISPUTE

4859

PROCESSING_ERROR|INCORRECT_AMOUNT|ATM

4859

PROCESSING_ERROR|CREDIT_NOT_PROCESSED

4860

PROCESSING_ERROR|CHIP_READ_POS_LATE_PRESENTMENT

4880

PROCESSING_ERROR|DOMESTIC_CHARGEBACK_INTRAR_EUROPEAN_USE

4999

null

SERVICE|MERCHANT|DEFECT_OR_NOT_AS_DESC

4853

SERVICE|MERCHANT|NOT_RECEIVED

4853

SERVICE|MERCHANT|QUALITY

4853

SERVICE|MERCHANT|DAMAGED_MERCH

4853

SERVICE|MERCHANT|RETURNED_MERCH

4853

SERVICE|CARDHOLDER_DISPUTE

4853

SERVICE|CARDHOLDER_DISPUTE|NOT_ELSEWHERE_CLASSIFIED

4854

SERVICE|GOODS_OR_SERVICES_NOT_PROVIDED

4855

FRAUD|UNAUTHORIZED|CARD_IN_HAND

37

FRAUD|UNAUTHORIZED|CARD_LOST

37

FRAUD|UNAUTHORIZED|CARD_IN_HAND|SHARED

37

FRAUD|UNAUTHORIZED|CARD_IN_HAND|NOT_SHARED

37

FRAUD|CHIP_LIABILITY_SHIFT

70

FRAUD|NO_CARDHOLDER_AUTHORIZATION

74

null

PROCESSING_ERROR|CHARGED_TWICE

13

PROCESSING_ERROR|CASH_DISPUTE|ATM_ONLY

17

PROCESSING_ERROR|CARDHOLDER_DISPUTED_AMOUNT

30

PROCESSING_ERROR|INCORRECT_AMOUNT|ATM

31

PROCESSING_ERROR|CHARGED_TWICE|CREDIT_NOT_PROCESSED|DUPLICATE

34

PROCESSING_ERROR|CHARGED_TWICE|CREDIT_NOT_PROCESSED|PAID_BY_OTHER_MEANS

34

PROCESSING_ERROR|CANCEL_RECURRING_PMT

41

PROCESSING_ERROR|CREDIT_NOT_PROCESSED

60

PROCESSING_ERROR|INCORRECT_AMOUNT

71

PROCESSING_ERROR|DUPLICATE_TRANSACTION

73

PROCESSING_ERROR|CREDIT_NOT_RECEIVED

75

PROCESSING_ERROR|LATE_PRESENTMENT

80

PROCESSING_ERROR|INVALID_ADJUSTMENT_AMOUNT

95

PROCESSING_ERROR|INVALID_ADJUSTMENT_AMOUNT|INSUFFICIENT_FUNDS

96

null

SERVICE|CHARGE_BACK

53

SERVICE|MERCHANT|QUALITY

53

SERVICE|MERCHANT|DAMAGED_MERCH

53

SERVICE|MERCHANT|RETURNED_MERCH

53

SERVICE|MERCHANT|DEFECT_OR_NOT_AS_DESC

53

SERVICE|NON_RECEIPT_OF_MERCHANDISE

55

SERVICE|MERCHANT|NOT_RECEIVED

79

FRAUD|UNAUTHORIZED|CARD_IN_HAND

4537

FRAUD|UNAUTHORIZED|CARD_LOST

4537

FRAUD|UNAUTHORIZED|CARD_IN_HAND|SHARED

4537

FRAUD|UNAUTHORIZED|CARD_IN_HAND|NOT_SHARED

4537

FRAUD|CARD_PRESENT_TRANSACTION

4537

FRAUD|UNAUTHORIZED_PURCHASE

4540

FRAUD|CHARGE_BACK

4752

FRAUD|CHIP_CARD_COUNTERFEIT_TRANSACTION

4866

FRAUD|CHIP_CARD_AND_PIN_TRANSACTION

4867

FRAUD|CARD_NOT_PRESENT_TRANSACTION

4868

null

PROCESSING_ERROR|CORRECTION|TERMINAL_MALFUNCTION

2000

PROCESSING_ERROR|INVALID_CARDHOLDER_NUMBER

4512

PROCESSING_ERROR|DUPLICATE_PROCESSING

4534

PROCESSING_ERROR|CANCEL_RECURRING_PMT

4541

PROCESSING_ERROR|AUTHORIZATION|LATE_PRESENTMENT

4542

PROCESSING_ERROR|INCORRECT_TRANSACTION_TYPE

4550

PROCESSING_ERROR|CREDIT_NOT_PROCESSED

4560

PROCESSING_ERROR|ALTERED_AMOUNT

4586

PROCESSING_ERROR|INCORRECT_AMOUNT

4586

PROCESSING_ERROR|NON_RECEIPT_OF_CASH_FROM_ATM

4590

PROCESSING_ERROR|CHARGED_TWICE

4831

PROCESSING_ERROR|CHARGED_TWICE|CREDIT_NOT_PROCESSED|DUPLICATE

4831

PROCESSING_ERROR|CHARGED_TWICE|CREDIT_NOT_PROCESSED|PAID_BY_OTHER_MEANS

4831

PROCESSING_ERROR|INCORRECT_AMOUNT|ATM

4859

PROCESSING_ERROR|PAID_BY_OTHER_MEANS

4865

null

SERVICE|QUALITY_OF_GOODS_AND_SERVICES

4553

SERVICE|NON_RECEIPT_OF_GOODS_AND_SERVICE

4555

SERVICE|MERCHANT|NOT_RECEIVED

4853

SERVICE|MERCHANT|QUALITY

4853

SERVICE|MERCHANT|DAMAGED_MERCH

4853

SERVICE|MERCHANT|RETURNED_MERCH

4853

Code

Description

Chargeback‎_Rights

INCORRECT_AMOUNT

Incorrect Amount was charged on the card.

Yes. No if the transaction is a VALID EMV transaction.

INCORRECT_AMOUNT|ATM

User attempted to withdraw money from ATM and received incorrect amount.

Yes, but only for the amount not dispensed.

UNAUTHORIZED|CARD_LOST

Unauthorized transaction made and user has reported a lost or stolen card.

Yes. No if the transaction is a VALID EMV transaction or online transaction as this defaults to chip-liability shift, which is not applicable to MOTO transactions, or at an ATM.

UNAUTHORIZED|CARD_IN_HAND|SHARED

Unauthorized transaction made while user has card in their possession and card is shared with other users.

Yes. No if the transaction is a VALID EMV transaction, or disputed transactions was authorized by other users of the card, or at an ATM.

UNAUTHORIZED|CARD_IN_HAND|NOT_SHARED

Unauthorized transaction made while user has card in their possession and card is not shared with other users.

Yes. No if the transaction is a VALID EMV transaction, or at an ATM.

CHARGED_TWICE|CREDIT_NOT_PROCESSED|DUPLICATE

There was a duplicate transaction but the merchant did not process a credit to correct the error. This typically occurs when when a merchant a merchant fails to correct a previously acknowledged error. This can also occur when a cardholder attempts to return a purchased item or cancel services but is not compliant with the merchant's return policy (e.g. expired receipt or warranty issue).

Yes. No if the transaction is a VALID EMV transaction, or no duplicate posts to same account.

CHARGED_TWICE|CREDIT_NOT_PROCESSED|PAID_BY_OTHER_MEANS

There was a duplicate transaction in which the original debit settled on the card even though the original card transaction was canceled. Occurs when the cardholder chose to use another payment method (e.g. cash or a different card).

Yes. No if the transaction is a VALID EMV transaction, or there is not supporting evidence of a charge elsewhere.

CANCEL_RECURRING_PMT

Canceling recurring payment (i.e. a recurring payment was debited after cancellation).

Yes. No if the transaction is a VALID EMV transaction, or cancellation was within three days of charge authorization.

MERCHANT|DEFECT_OR_NOT_AS_DESC

Merchandise/service not as described or defective merchandise/service.

Yes. No if the transaction is a VALID EMV transaction.

MERCHANT|NOT_RECEIVED

Did not receive merchandise or services (not a quality issue).

Yes. No if the transaction is a VALID EMV transaction, or if merchant hasn't been allowed 15 calendar days for items to arrive or to provide a date of expected arrival.

MERCHANT|QUALITY

Issue with quality of services or merchandise.

Yes. No if the transaction is a VALID EMV transaction, or services were paid for after service was rendered.

MERCHANT|DAMAGED_MERCH

Damaged merchandise.

Yes. No if the transaction is a VALID EMV transaction.

MERCHANT|RETURNED_MERCH

Returned merchandise.

Yes. No if the transaction is a VALID EMV transaction, or there is no supporting evidence of a return.

FRAUD|FRAUDULENT_PROCESSING_OF_TRANSACTIONS

Authorized card-present transaction with a merchant but received additional non-authorized transactions within the following fifteen minutes.

Yes. No if proof can be provided that a refund was issued or provide evidence that additional transactions are authorized.

FRAUD|QUESTIONABLE_MERCHANT_ACTIVITY

Merchant is suspected of fraud by Mastercard, and has been placed under the Global Merchant Audit Program.

Yes. No if merchant is not on Global Merchant Audit Program.

FRAUD|CARDHOLDER_DOES_NOT_RECOGNIZE_POTENTIAL_FRAUD

User claims they do not recognize a transaction and the transaction is a Card-not-Present transaction

Yes. No if merchant can verify the card was present for transaction.

FRAUD|AUTHORIZATION_RELATED_CHARGEBACK

Merchant did not get authorization for a transaction, or authorization was sent after the transaction date.

Yes. No if proof can be provided that authorization was obtained and authorization date request was not after the transaction date.

Key

Type

Required Dispute Reasons

Description

amount_debited

Float

INCORRECT_AMOUNT

Amount debited in Number.

amount_received

Float

INCORRECT_AMOUNT|ATM

Amount received in Number.

lost_date

Int

UNAUTHORIZED|CARD_LOST

Date lost (milliseconds since Unix epoch time).

how_lost

String

UNAUTHORIZED|CARD_LOST

Description of how card was lost or stolen.

last_use

String

UNAUTHORIZED|CARD_IN_HAND|SHARED

UNAUTHORIZED|CARD_IN_HAND|NOT_SHARED

Transaction ID for last use of card (i.e. need transaction ID to know where and when card was last used).

people_allowed_use

String

UNAUTHORIZED|CARD_IN_HAND|SHARED

Person(s) who cardholder shared card with (i.e. allowed to use card) and their relationship(s) with cardholder.

contact_date

Object with $date attribute

CANCEL_RECURRING_PMT

Contact date (milliseconds since Unix epoch time).

contact_method

String

CANCEL_RECURRING_PMT

Contact method (e.g. PHONE).

trans_on_same_card

Boolean

CHARGED_TWICE|CREDIT_NOT_PROCESSED|DUPLICATE

CHARGED_TWICE|CREDIT_NOT_PROCESSED|PAID_BY_OTHER_MEANS

Are both transactions on the same card? true or false. Proof of other transaction required in dispute_attachments

merch_given_attempt_to_resolve

Boolean

CHARGED_TWICE|CREDIT_NOT_PROCESSED|DUPLICATE CHARGED_TWICE|CREDIT_NOT_PROCESSED|PAID_BY_OTHER_MEANS MERCHANT|RETURNED_MERCH

Was the merchant given the chance to resolve? true or false.

contact_name

String

CANCEL_RECURRING_PMT

Name of contact.

contact_response

String

CANCEL_RECURRING_PMT

Response from contact.

merch_item_desc

String

MERCHANT|DEFECT_OR_NOT_AS_DESC MERCHANT|RETURNED_MERCH

Description of the merchandise

date_received

Int

MERCHANT|DEFECT_OR_NOT_AS_DESC

Date merchandise/item was received

matched_verbal_or_written_desc

Boolean

MERCHANT|DEFECT_OR_NOT_AS_DESC

Did the item or service not match the verbal description

matched_receipt_desc

Boolean

MERCHANT|DEFECT_OR_NOT_AS_DESC

Did the item or service differ from as described on the receipt

merchandise_received_as_part_of_transaction

Boolean

MERCHANT|DEFECT_OR_NOT_AS_DESC

Was Merchandise Received as Part of Transaction

order_canceled

Boolean

MERCHANT|NOT_RECEIVED MERCHANT|RETURNED_MERCH

Was the order canceled

expected_arrival_date

Int

MERCHANT|NOT_RECEIVED

Date when it was expected to arrive

was_item_delivered

Boolean

MERCHANT|NOT_RECEIVED

Was item delivered

prepaid_item

Boolean

MERCHANT|NOT_RECEIVED

Was this item a prepaid item

recurring_payment

Boolean

MERCHANT|RETURNED_MERCH

Was this a recurring payment

merch_returned

Boolean

MERCHANT|RETURNED_MERCH

Was the merchandise returned

merch_returned_attempted

Boolean

MERCHANT|RETURNED_MERCH

Was the merchandise attempted to be returned

reason

String

MERCHANT|RETURNED_MERCH

Reason for Return or cancelation

cancel_policy_provided

Boolean

MERCHANT|RETURNED_MERCH

Was a cancelation Policy provided

Code

Description

R07

Authorization Revoked by Customer

R08

Payment Stopped

R10

Customer Advises Not Authorized

R29

Corporate Customer Advises Not Authorized

R23

Credit Refused by Receiver

PATCH /v3.1/users/605a7a6a7562967ff8c12413/nodes/605125f47e08875d713557ed/trans/6045135016ba41408ece9c25/dispute HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_xg3WXDFu5jNRLlz1ohf6qsU0waJ4BGYbMdrC07pO|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "dispute_reason": "CHARGE_BACK",
  "dispute_meta": {
    "type_of_merchandise_or_service": "groceries",
    "merchant_contacted": true,
    "contact_method": "phone",
    "contact_date": 1563474864000
  },
  "dispute_attachments": [
    "data:image/gif;base64,SUQs=="
  ]
}
curl --location --request PATCH 'https://uat-api.synapsefi.com/v3.1/users/605a7a6a7562967ff8c12413/nodes/605125f47e08875d713557ed/trans/6045135016ba41408ece9c25/dispute' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_xg3WXDFu5jNRLlz1ohf6qsU0waJ4BGYbMdrC07pO|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "dispute_reason": "CHARGE_BACK",
  "dispute_meta": {
    "type_of_merchandise_or_service": "groceries",
    "merchant_contacted": true,
    "contact_method": "phone",
    "contact_date": 1563474864000
  },
  "dispute_attachments": [
    "data:image/gif;base64,SUQs=="
  ]
}'
//
//
//
//

View Subscription

View Subscription

GET https://api.synapsefi.com/v3.1/subscriptions/subscription_id

This endpoint allows you to view a specific subscription.

Path Parameters

Name
Type
Description

subscription_id

string

Object ID of subscription.

Headers

Name
Type
Description

X-SP-GATEWAY

string

Your Client ID & Secret, separated by a pipe.

{
  "_id": "589b6adec83e17002122196c",
  "_links": {
    "self": {
      "href": "https://uat-api.synapsefi.com/v3.1/subscriptions/589b6adec83e17002122196c"
    }
  },
  "_v": 2,
  "client_id": "589acd9ecb3cd400fa75ac06",
  "is_active": true,
  "scope": [
    "USERS|POST",
    "USER|PATCH",
    "NODES|POST",
    "NODE|PATCH",
    "TRANS|POST",
    "TRAN|PATCH",
    "SUBNETS|POST",
    "SUBNET|PATCH"
  ],
  "url": "https://requestb.in/zp216zzp"
}
{}

Example Request

GET /v3.1/subscriptions/589b6adec83e17002122196c HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_2bb1e714edd311e6bd04e285d6015267
subs_id = '589b6adec83e17002122196c'

client.get_subscription(subs_id)
const subscriptionID = '589b6adec83e17002122196c';

client.getSubscription(subscriptionID);
subscription_id = "589b6adec83e17002122196c"

client.get_subscription(subscription_id: subscription_id)
$subscriptionid = '589b6adec83e17002122196c';

$client->get_subscription($subscriptionid);
subscriptionID := "589b6adec83e17002122196c"

data, err := client.GetSubscription(subscriptionID)

View all Subscriptions

View all Subscriptions

GET https://api.synapsefi.com/v3.1/subscriptions

This endpoint allows you to get all subscriptions linked to your client keys.

Query Parameters

Name
Type
Description

page

integer

Page number

per_page

integer

Number of subscriptions per page

Headers

Name
Type
Description

X-SP-GATEWAY

string

Your Client ID & Secret, separated by a pipe

{
  "error_code": "0",
  "http_code": "200",
  "limit": 20,
  "page": 1,
  "page_count": 1,
  "subscriptions": [
    {
      "_id": "589b6adec83e17002122196c",
      "_links": {
        "self": {
          "href": "https://uat-api.synapsefi.com/v3.1/subscriptions/589b6adec83e17002122196c"
        }
      },
      "_v": 2,
      "client_id": "589acd9ecb3cd400fa75ac06",
      "is_active": true,
      "scope": [
        "USERS|POST",
        "USER|PATCH",
        "NODES|POST",
        "NODE|PATCH",
        "TRANS|POST",
        "TRAN|PATCH",
        "SUBNETS|POST",
        "SUBNET|PATCH"
      ],
      "url": "https://requestb.in/zp216zzp"
    },
    {
      ...
    }
  ],
  "subscriptions_count": 2,
  "success": true
}
{}

Example Request

GET /v3.1/subscriptions HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
client.get_all_subs()
client.getAllSubscriptions();
client.get_all_subscriptions()
$client->get_all_subscriptions();
data, err := client.GetSubscriptions()

Node
Base64
Base64
Subscribing to our webhooks
Card Disputes Guide
Meta Schema
Possible Transaction Statuses
Possible Transaction Statuses
Possible Transaction Statuses
Possible Transaction Statuses
Extra Schema
Possible monitoring_class Values
Possible pan_entry_mode Values
Possible pin_entry_mode Values
Possible presentment_info.card_presence Values
Possible presentment_info.cardholder_presence Values
Possible presentment_info.security_concern Values
Possible presentment_info.type Values
Possible sub_amounts.type Values
Possible terminal.attendance Values
Possible terminal_info.card_input_capability Values
Possible terminal_info.card_retention_capability Values
Possible terminal_info.location Values
Possible terminal_info.operator Values
Possible terminal_info.type Values
Possible type Values
Dispute Meta Fields for Card Transactions
TXP Meta Fields
Interchange Meta Fields
Possible dispute_status Values
Possible dispute_status_note Values
Go to Possible amount_types Values

Testing on UAT

Subscription Object Details

Subscription Schema

Key

Type

Required

Description

_id

String

N.A. Included in API response

Object ID of Subscription

client_id

String

N.A. Included in API response

ID of your client object

is_active

Boolean

No

true if subscription is active else false.

scope

Array of Strings

Yes

url

Array of Objects

Yes

URL Destination for webhooks

Allowed Scopes

Scope

Effect

USERS|POST

When a user is created with your gateway, you will receive a webhook

USER|PATCH

When a user in your platform is updated, you will receive a webhook

NODES|POST

When a node is created with your gateway credentials, you will receive a webhook

NODE|PATCH

When a node is updated with your gateway credentials, you will receive a webhook

TRANS|POST

When a transaction is created within your gateway credentials, you will receive a webhook

TRANS|POST|JIT

When a transaction is created within your gateway credentials that requires Transaction Decisioning, you will receive a webhook.

TRAN|PATCH

When a transaction is updated with your gateway credentials, you will receive a webhook

SUBNETS|POST

When a subnet is created with your gateway credentials, you will receive a webhook

SUBNET|PATCH

Whenever a subnet is updated with your gateway credentials, you will receive a webhook

Create Subscription

Create Subscription

POST https://api.synapsefi.com/v3.1/subscriptions

This endpoint allows you to create a subscription to stay updated on the status of users, nodes, transactions & subnets.

Headers

Name
Type
Description

Content-Type

string

This value should be application/json

X-SP-GATEWAY

string

Your Client ID & Secret, separated by a pipe

Request Body

Name
Type
Description

scope

array

Scope of subscription.

url

string

URL destination for webhooks

{
  "_id": "589b6adec83e17002122196c",
  "_links": {
    "self": {
      "href": "https://uat-api.synapsefi.com/v3.1/subscriptions/589b6adec83e17002122196c"
    }
  },
  "_v": 2,
  "client_id": "589acd9ecb3cd400fa75ac06",
  "is_active": true,
  "scope": [
    "USERS|POST",
    "USER|PATCH",
    "NODES|POST",
    "NODE|PATCH",
    "TRANS|POST",
    "TRAN|PATCH",
    "SUBNETS|POST",
    "SUBNET|PATCH"
  ],
  "url": "https://requestb.in/zp216zzp"
}
{}

Subscription Limits Only one subscription URL can be enabled per scope. Previous subscriptions for the same scope will be overwritten. We recommend disabling subscriptions that you do not wish to use any longer to avoid confusion.

Originating IP Address We send webhooks from the originating IP address: 50.112.48.126, 44.238.232.80 or 35.85.83.81.

Example Request

POST /v3.1/subscriptions HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_2bb1e714edd311e6bd04e285d6015267
Content-Type: application/json

{
  "scope": [
    "USERS|POST",
    "USER|PATCH",
    "NODES|POST",
    "NODE|PATCH",
    "TRANS|POST",
    "TRAN|PATCH",
    "SUBNETS|POST",
    "SUBNET|PATCH"
  ],
  "url": "https://requestb.in/zp216zzp"
}
webhook_url = "https://requestb.in/zp216zzp"
scope =  [
  "USERS|POST",
  "USER|PATCH",
  "NODES|POST",
  "NODE|PATCH",
  "TRANS|POST",
  "TRAN|PATCH"
]

subs = client.create_subscription(webhook_url, scope)
const subscriptionUrl = 'https://requestb.in/zp216zzp';

client.createSubscription(subscriptionUrl);
body = {
  "scope": [
    "USERS|POST",
    "USER|PATCH",
    "NODES|POST",
    "NODE|PATCH",
    "TRANS|POST",
    "TRAN|PATCH"
  ],
  "url": "https://requestb.in/zp216zzp"
}

client.create_subscriptions(scope: body)
$body = (object) [
     scope" => [
       "USERS|POST",
       "USER|PATCH",
       "NODES|POST",
       "NODE|PATCH",
       "TRANS|POST",
       "TRAN|PATCH"
     ],
      'url' => 'https://requestb.in/zp216zzp'
];

$client->create_subscription( $body );
body := `{
  "scope": [
    "USERS|POST",
    "USER|PATCH",
    "NODES|POST",
    "NODE|PATCH",
    "TRANS|POST",
    "TRAN|PATCH"
  ],
  "url": "https://requestb.in/zp216zzp"
}`

data, err := client.CreateSubscription(body)

Update Subscription

Update Subscription

PATCH https://api.synapsefi.com/v3.1/subscriptions/subscription_id

This endpoint allows you to update a subscription.

Path Parameters

Name
Type
Description

subscription_id

string

Object ID of subscription

Headers

Name
Type
Description

Content-Type

string

This value should be application/json

X-SP-GATEWAY

string

Your Client ID & Secret, separated by a pipe

Request Body

Name
Type
Description

is_active

boolean

Active status

{
  "_id": "589b6adec83e17002122196c",
  "_links": {
    "self": {
      "href": "https://uat-api.synapsefi.com/v3.1/subscriptions/589b6adec83e17002122196c"
    }
  },
  "_v": 2,
  "client_id": "589acd9ecb3cd400fa75ac06",
  "is_active": false,
  "scope": [
    "USERS|POST",
    "USER|PATCH",
    "NODES|POST",
    "NODE|PATCH",
    "TRANS|POST",
    "TRAN|PATCH",
    "SUBNETS|POST",
    "SUBNET|PATCH"
  ],
  "url": "https://requestb.in/zp216zzp"
}
{
    "error": {
        "code": "unable_to_locate_subscription",
        "en": "Unable to locate subscription object with filter {'_id': ObjectId('60408ec663615152a3a6fc77')}"
    },
    "error_code": "404",
    "http_code": "404",
    "success": false
}Go to 
Subscription Object Details
 to see all the required and optional body parameters allowed when creating a subscription. 

Example Request

PATCH /v3.1/subscriptions/589b6adec83e17002122196c HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_2bb1e714edd311e6bd04e285d6015267
Content-Type: application/json

{
  "is_active": false
}
subs_id = '589b6adec83e17002122196c'
body = {
  'is_active': false
}

subs = client.update_subscription(subs_id, body)
const subscriptionID = '589b6adec83e17002122196c';
const body = {
  'is_active': false
};

client.updateSubscription(subscriptionID, body);
subscription_id = "589b6adec83e17002122196c"
payload = {
  "is_active": false
}

client.update_subscription(subscription_id: subscription_id, body: payload)
$body= (object) [
     'scope' => $scope_arr,
     'is_active' => false,
     'url' => 'https://requestb.in/zp216zzp'
];
$subscriptionid = '589b6adec83e17002122196c';

$client->update_subscription( $subscriptionid, $body );
subscriptionID := "589b6adec83e17002122196c"
body := `{
  "is_active": false
}`

data, err := client.update_subscription(subscriptionID, body)

View Billers

View Billers

GET https://api.synapsefi.com/v3.1/billers

This endpoint allows you to view biller info for RPPS nodes.

Query Parameters

Headers

Biller Name Options

The following values are available for biller_name search option.

Biller Name Options

'Airline', 'Auto Finance', 'Bank Card', 'Cable', 'Church', 'Club / Membership', 'College Savings Plan', 'DSL - ISP', 'Debt Management', 'Electric / Gas / Power / Water', 'Financial Services', 'Gas / Oil Card', 'Healthcare Services', 'Homeowners Association', 'Insurance', 'Mortgage', 'Municipality', 'Other', 'Personal Banking (checking, savings, etc.)', 'Phone', 'Rental Properties', 'Retail', 'Sanitation', 'Satellite Radio', 'Satellite TV', 'School / Car / Bank Loan & Finance', 'Schools & Educational Services', 'Security Systems / Monitoring Services', 'Subscription', 'Taxes', 'Tuition', 'Wireless - Phone'

Example Request

View Webhook Logs

View webhook Logs

GET https://api.synapsefi.com/v3.1/subscriptions/logs

This endpoint allows you to view subscription logs.

Query Parameters

Headers

Webhook Log Expiration Webhook logs expire 15 days from date of creation.

Example Request

Verify Address

Verify Address

POST https://api.synapsefi.com/v3.1/address-verification

This endpoint allows you to verify an address.

Headers

Request Body

Example Request

Deliverability

Deliverability Analysis Object

Dummy Transactions

Create Dummy Transactions

POST https://api.synapsefi.com/v3.1/users/:user_id/nodes/:node_id/subnets/:subnet_id/dummy-tran

This endpoint allows you create dummy account number subnet transactions on sandbox.

Path Parameters

Headers

Request Body

Example Request

International WIRE-INT Required Data by Country

Table of specific WIRE-INT data attributes as required by individual countries.

  • Bank accounts should be stored as strings without spaces.

  • A number of countries require that the bank account number be in IBAN format as noted in the table below.

  • A number of countries require a tax / government ID (in LATAM often called a Cedula number) this should be stored on the tax_number attribute, as noted in the table below.

  • Several countries have other required attributes as indicated in the Other Required Fields column in the table below.

In order to ensure delivery of your webhooks, we recommend testing your webhook integration. Tools like are helpful when testing webhooks.

See for more details.

Go to to see all the required and optional body parameters allowed when creating a subscription.

Go to to see all the required and optional body parameters allowed when updating a subscription.

Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Name
Type
Description
Country
Alpha 2 Code
Acct# Format
Tax Number
Other Required Fields
Webhook Site
Subscription Object Details
Subscription Object Details

filter

string

MongoDB filter to enable search by biller_name type of functionality.

per_page

integer

Maximum documents to return per page. Default and max allowed is 20.

page

integer

Page number of the paginated request. Default is 1.

Content-Type

string

This value should be application/json

{
  "billers": [
    {
      "_id": "5ec329342aadcf1f40b661ae",
      "biller_id": "8543660183",
      "biller_name": "AAA INSURANCE",
      "biller_type": "Test"
    }
    ...
  ],
  "page_count": 2,
  "error_code": "0",
  "http_code": "200",
  "page": 1
}
GET /v3.1/billers?filter={"biller_name":"INSURANCE"} HTTP/1.1
Host: uat-api.synapsefi.com
Content-Type: application/json
curl --location -g --request GET 'https://uat-api.synapsefi.com/v3.1/billers?filter={%22biller_name%22:%22INSURANCE%22}' \
--header 'Content-Type: application/json'
//
//
//
//
//

page

integer

Page number

per_page

integer

Number of logs per page

X-SP-GATEWAY

string

Your Client ID & Secret, separated by a pipe

{
  "error_code": "0",
  "http_code": "200",
  "limit": 20,
  "logs": [
    {
      "_id": {
        "$oid": "5e56fa05d03ead769a92a9e6"
      },
      "client_id": "5d76ce618b200d0065333ea1",
      "date": 1582758405055,
      "function": "NODE|PATCH",
      "http_response_code": "200",
      "http_response_text": "1582758405733-6805281697306",
      "http_responses": [
        {
          "date": 1582758405775,
          "http_response_code": "200",
          "http_response_text": "1582758405733-6805281697306",
          "http_url": "https://postb.in/1582757979813-9249319576192"
        }
      ],
      "http_url": "https://postb.in/1582757979813-9249319576192",
      "obj_id": "NODE_5e56d1a5c2e6f3013abf5dc6",
      "safe_obj": {
        "_id": {
          "$oid": "5e56d1a5c2e6f3013abf5dc6"
        },
        "_rest": {
          "_id": "5e56d1a5c2e6f3013abf5dc6",
          "allowed": "CREDIT-AND-DEBIT",
          "client": {
            "id": "5d76ce618b200d0065333ea1",
            "name": "Test User"
          },
          "extra": {
            "note": null,
            "other": {
              "access_token": "5e56fa035834d0004a8aafdb",
              "micro_meta": {
                "micro_attempts": 0,
                "micro_sent_count": 0,
                "skip_micro": false
              },
              "updated_on": 1582758404000
            },
            "supp_id": ""
          },
          "info": {
            "account_num": "8901",
            "address": "P.O. BOX 85139, RICHMOND, VA, US",
            "balance": {
              "amount": "800.00",
              "currency": "USD",
              "updated_on": 1582758404000
            },
            "bank_code": "capone",
            "bank_hlogo": "https://cdn.synapsepay.com/bank_logos_v3p1/CapitalOne360_h.png",
            "bank_logo": "https://cdn.synapsepay.com/bank_logos_v3p1/CapitalOne360_v.png",
            "bank_long_name": "CAPITAL ONE N A ",
            "bank_name": "CAPITAL ONE N A ",
            "bank_url": "http://www.capitalone.com",
            "class": "CHECKING",
            "match_info": {
              "email_match": "no_match",
              "name_match": "no_match",
              "phonenumber_match": "no_match"
            },
            "name_on_account": " ",
            "nickname": "SynapsePay Test Checking Account - 8901",
            "routing_num": "0407",
            "type": "BUSINESS"
          },
          "is_active": true,
          "timeline": [
            {
              "date": 1582748068691,
              "note": "Node created."
            },
            {
              "date": 1582748069313,
              "note": "node_not_credit -- Unable to send micro deposits as node allowed is not CREDIT."
            },
            {
              "date": 1582757444913,
              "note": "Node's 'is_active' toggled to True."
            }
          ],
          "type": "ACH-US",
          "user_id": "5e56d17a5b5a1e0081e0d9c6"
        },
        "allowed": "CREDIT-AND-DEBIT",
        "client": {
          "id": "5d76ce618b200d0065333ea1",
          "name": "Test Client"
        },
        "extra": {
          "note": null,
          "supp_id": ""
        },
        "info": {
          "account_num": "8901",
          "address": "P.O. BOX 85139, RICHMOND, VA, US",
          "balance": {
            "amount": "800.00",
            "currency": "USD"
          },
          "bank_code": "capone",
          "bank_hlogo": "https://cdn.synapsepay.com/bank_logos_v3p1/CapitalOne360_h.png",
          "bank_logo": "https://cdn.synapsepay.com/bank_logos_v3p1/CapitalOne360_v.png",
          "bank_long_name": "CAPITAL ONE N A ",
          "bank_name": "CAPITAL ONE N A ",
          "bank_url": "http://www.capitalone.com",
          "class": "CHECKING",
          "match_info": {
            "email_match": "no_match",
            "name_match": "no_match",
            "phonenumber_match": "no_match"
          },
          "name_on_account": " ",
          "nickname": "SynapsePay Test Checking Account - 8901",
          "routing_num": "0407",
          "type": "BUSINESS"
        },
        "is_active": true,
        "timeline": [
          {
            "date": {
              "$date": 1582748068691
            },
            "note": "Node created."
          },
          {
            "date": {
              "$date": 1582748069313
            },
            "note": "node_not_credit -- Unable to send micro deposits as node allowed is not CREDIT."
          },
          {
            "date": {
              "$date": 1582757444913
            },
            "note": "Node's 'is_active' toggled to True."
          }
        ],
        "type": "ACH-US",
        "user_id": "5e56d17a5b5a1e0081e0d9c6",
        "webhook_meta": {
          "date": {
            "$date": 1582758405055
          },
          "function": "NODE|PATCH",
          "log_id": "5e56fa05d03ead769a92a9e6",
          "updated_by": "SELF"
        }
      },
      "safe_obj_hash": "5e2c44aa373afc38b31d6f525407cef2de4c3877b93dbb8204ef78b2822d0bef",
      "updated_by": "SELF"
    },
    {
      ...
    }
  ],
  "logs_count": 2,
  "page": 1,
  "page_count": 2,
  "success": true
}
{
    "error": {
        "code": "missing_client_credentials",
        "en": "Client credentials are missing from the request."
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
GET /v3.1/subscriptions/logs HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-GATEWAY: client_id_2bb1e412edd311e6bd04e285d6015267|client_secret_6zZVr8biuqGkyo9IxMO5jY2QlSp0nmD4EBAgKcJW
allsublogs = client.webhook_logs()
client.getWebhookLogs();
client.webhook_logs()
$client->get_webhook_logs()
data, err := client.GetWebhookLogs()

Content-Type

string

This value should be application/jsonon

address_street

string

Street address associated with the document owner. This can be the home address of a person or business address of a corp. Please include apartment suite or unit numbers.

address_city

string

City associated with the document owner. This can be the home address of a person or business address of a corp.

address_subdivision

string

State abbreviation associated with the document owner. This value needs to be in ISO Alpha-2 (e.g. CA)

address_postal_code

string

Country associated with the document owner. This can be the home address of a person or business address of a corp. This value needs to be in ISO Alpha-2 (e.g. US)

address_country_code

string

Postal code associated with the document owner. This can be the home address of a person or business address of a corp.

{
    "deliverability": "usps_deliverable",
    "deliverability_analysis": {
        "partial_valid": false,
        "primary_number_invalid": false,
        "primary_number_missing": false,
        "secondary_invalid": false,
        "secondary_missing": false
    },
    "normalized_address": {
        "address_city": "SAN FRANCISCO",
        "address_country_code": "US",
        "address_postal_code": "94105",
        "address_street": "1 MARKET ST STE 500",
        "address_subdivision": "CA"
    }
}
{
    "deliverability": "deliverable_missing_unit",
    "deliverability_analysis": {
        "partial_valid": true,
        "primary_number_invalid": false,
        "primary_number_missing": false,
        "secondary_invalid": false,
        "secondary_missing": true
    },
    "normalized_address": {
        "address_city": "SAN FRANCISCO",
        "address_country_code": "US",
        "address_postal_code": "94105",
        "address_street": "1 MARKET ST",
        "address_subdivision": "CA"
    }
}
POST /v3.1/address-verification HTTP/1.1
Host: uat-api.synapsefi.com
Content-Type: application/json

{
    "address_street": "1 Market St. STE 500",
    "address_city": "San Francisco",
    "address_subdivision": "CA",
    "address_postal_code": "94105",
    "address_country_code": "US"
}
conn = http.client.HTTPConnection("uat-api,synapsefi,com")

payload = "{

"address_street\": \"1 Market St. STE 500\",\n    \"address_city\": \"San Francisco\",\n    \"address_subdivision\": \"CA\",\n    \"address_postal_code\": \"94105\",\n    \"address_country_code\": \"US\"\n}"

headers = {
    'Content-Type': "application/json",
    'cache-control': "no-cache",
    'Postman-Token': "9f4649ad-9869-401d-b04b-96e145cde414"
    }

conn.request("POST", "v3.1,address-verification", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://uat-api.synapsefi.com/v3.1/address-verification",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json"
  },
  "processData": false,
  "data": "{\n    \"address_street\": \"1 Market St. STE 500\",\n    \"address_city\": \"San Francisco\",\n    \"address_subdivision\": \"CA\",\n    \"address_postal_code\": \"94105\",\n    \"address_country_code\": \"US\"\n}"
}

$.ajax(settings).done(function (response) {
  console.log(response);
});
require 'uri'
require 'net/http'

url = URI("https://uat-api.synapsefi.com/v3.1/address-verification")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n    \"address_street\": \"1 Market St. STE 500\",\n    \"address_city\": \"San Francisco\",\n    \"address_subdivision\": \"CA\",\n    \"address_postal_code\": \"94105\",\n    \"address_country_code\": \"US\"\n}"

response = http.request(request)
puts response.read_body
<?php

$request = new HttpRequest();
$request->setUrl('https://uat-api.synapsefi.com/v3.1/address-verification');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'Content-Type' => 'application/json'
));

$request->setBody('{
    "address_street": "1 Market St. STE 500",
    "address_city": "San Francisco",
    "address_subdivision": "CA",
    "address_postal_code": "94105",
    "address_country_code": "US"
}');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://uat-api.synapsefi.com/v3.1/address-verification"

	payload := strings.NewReader("{\n    \"address_street\": \"1 Market St. STE 500\",\n    \"address_city\": \"San Francisco\",\n    \"address_subdivision\": \"CA\",\n    \"address_postal_code\": \"94105\",\n    \"address_country_code\": \"US\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Deliverability Result

Description

deliverable

✅

Check normalized_address object in response for deliverable address to use (e.g. in case "ST" supplied when deliverable address has "AVE")

usps_deliverable

✅

Standard supplied address is a USPS deliverable address

deliverable_incorrect_unit

✅

Base address is deliverable but supplied unit appears incorrect (e.g. actual unit number may be "APT 103" and original input may point to a non-existent unit like "APT 1003")

deliverable_missing_unit

✅

Base address is deliverable but expected unit was not supplied. Check normalized_address object in response for deliverable address to use

deliverable_unneccessary_unit

✅

Address is deliverable but additional unit supplied when not necessary

Key

Type

Description

deliverability_analysis. partial_valid

Boolean

True if address is partially valid

deliverability_analysis. primary_number_invalid

Boolean

True if primary address number is invalid

deliverability_analysis. primary_number_missing

Boolean

True if primary address number is missing

deliverability_analysis. secondary_invalid

Boolean

True if secondary address line (e.g. unit) is invalid or unnecessary

deliverability_analysis. secondary_missing

Boolean

Secondary address line (e.g. unit) missing

subnet_id

string

ID of the subnet.

node_id

string

ID of the node.

user_id

string

ID of the user.

X-SP-USER

string

User's OAuth key and device fingerprint, separated by a pipe.

X-SP-USER-IP

string

IP address of user's device.

Content-Type

string

This value should be application/jsonon

currency

string

Currency of the transaction. Currently only USD is supported.

amount

number

Amount of the transaction.

type

string

Type of dummy transaction. Currently ACH, WIRE and INTERNAL_TRASFER are the only allowed values.

direction

string

Direction of the transaction. Can either be DEPOSIT or WITHDRAWAL

account_num

string

Account number of the external account.

routing_num

string

Routing number of the external account.

addenda

string

Addenda information supplied with the transaction.

tracking_id

string

Trace or IMAD of the incoming transaction.

posting_label

string

Merchant or individual name of the incoming transaction.

company_id

string

Company ID of the sender.

individual_id

string

Individual ID of the sender.

{
    "_id": "60acfc5d5676718e9944026c",
    "_links": {
        "self": {
            "href": "https://uat-api.synapsefi.com/v3.1/users/6063b4af75629600d3ba5ce8/nodes/607f58a97e08873be3ca0315/trans/60acfc5d5676718e9944026c"
        }
    },
    "_v": 2,
    "amount": {
        "amount": 100.0,
        "currency": "USD"
    },
    "client": {
        "id": "6044ff7928057348e865f7a9",
        "name": "Some Random Company"
    },
    "extra": {
        "asset": null,
        "created_on": 1621949533428,
        "encrypted_note": "",
        "filename": null,
        "group_id": null,
        "ip": "192.168.0.1",
        "latlon": "unknown,unknown",
        "location": {
            "address_city": null,
            "address_country_code": null,
            "address_postal_code": null,
            "address_subdivision": null,
            "lat": 0,
            "lon": 0
        },
        "note": "Dummy Test Transaction",
        "other": {
            "affect_limits": true,
            "approved": false,
            "async_ran": true,
            "attachments": [],
            "chargeback_disputed": false,
            "create_email_sent": false,
            "dispute_form": null,
            "dispute_meta": {},
            "dispute_reason": null,
            "disputed": false,
            "do_next": false,
            "is_provisional_credit": false,
            "process": {
                "credit": 0,
                "debit": 0
            },
            "provisional_credit_transaction_id": null,
            "settlement_batch_id": "60acfc5665a0420044a4755e",
            "show_queue": false,
            "skip_validation": true
        },
        "process_on": 1621949533428,
        "rate": null,
        "rate_limit": null,
        "same_day": false,
        "settlement_delay": 0,
        "supp_id": "",
        "tracking_number": null,
        "txp_meta": {
            "amount_types": [],
            "amounts": [],
            "payment_code": null,
            "tax_period_end_date": null,
            "taxpayer_verification": null,
            "tin": null
        }
    },
    "fees": [
        {
            "fee": 0.0,
            "note": "Synapse Facilitator Fee",
            "to": {
                "id": "55b3f8c686c2732b4c4e9df6"
            }
        }
    ],
    "from": {
        "id": null,
        "meta": {
            "account_num": "2645635727",
            "addenda": "2EM4JRW0XB",
            "company_entry_description": "Jeannette Kenne",
            "company_id": "6197052873",
            "company_name": "Jeannette Kenne",
            "dispute_transaction_id": false,
            "entry_class": "CCD",
            "foreign_transaction": false,
            "fraud_score": {
                "reason": null,
                "score": 0.0
            },
            "high_risk": false,
            "individual_id": "Z9E4VK23C",
            "is_dispute_posting": false,
            "is_force_post": false,
            "is_platform_fee": false,
            "merchant_name": "Dummy Test Transaction",
            "monitoring_class": "NOT_KNOWN",
            "name": "Jeannette Kenne",
            "network_id": "NATIVE",
            "posted_date": "2021-05-25",
            "posting_data": "Jeannette Kenne::HKBMPCXS2",
            "routing_num": "322271627",
            "subnet_id": "60abcaab8c8c650574d129d9",
            "tracking_id": "05799746352026",
            "type": "ACH"
        },
        "nickname": null,
        "type": "EXTERNAL-US",
        "user": {
            "_id": null,
            "legal_names": [
                "Dummy Test Transaction"
            ]
        }
    },
    "recent_status": {
        "code": "R02",
        "date": 1621949537335,
        "note": "[Returned on Debit] R02 -- Account Closed",
        "status": "RETURNED",
        "status_id": "6"
    },
    "timeline": [
        {
            "date": 1621949533428,
            "note": "Transaction Created.",
            "status": "CREATED",
            "status_id": "1"
        },
        {
            "date": 1621949534538,
            "note": "R02 -- Account Closed",
            "status": "PROCESSING-DEBIT",
            "status_id": "2"
        },
        {
            "date": 1621949535917,
            "note": "R02 -- Account Closed",
            "status": "PROCESSING-CREDIT",
            "status_id": "3"
        },
        {
            "date": 1621949537335,
            "note": "[Returned on Debit] R02 -- Account Closed",
            "status": "RETURNED",
            "status_id": "6"
        }
    ],
    "to": {
        "id": "607f58a97e08873be3ca0315",
        "nickname": "My Interest Deposit Account",
        "type": "IC-DEPOSIT-US",
        "user": {
            "_id": "6063b4af75629600d3ba5ce8",
            "legal_names": [
                "Test User"
            ]
        }
    }
}
{
    "error": {
        "code": "not_known",
        "en": "'ACHX' is not one of ['ACH', 'WIRE', 'INTERNAL_TRASFER']..Failed validating 'enum' in schema['properties']['type']:"
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}
POST /v3.1/users/6063b4af75629600d3ba5ce8/nodes/607f58a97e08873be3ca0315/subnets/[object Object]/dummy-tran HTTP/1.1
Host: uat-api.synapsefi.com
X-SP-USER-IP: 255.127.79.76
X-SP-USER: oauth_N1DoXKQlEsPOIxphYjSey4J8qn2RmVFZ0zLbH5TW|e83cf6ddcf778e37bfe3d48fc78a6502062fc
Content-Type: application/json

{
  "type": "ACH",
  "direction": "DEPOSIT",
  "amount": 100.00,
  "currency": "USD",
  "posting_label": "Dummy Test Transaction"
}
curl --location -g --request POST 'https://uat-api.synapsefi.com/v3.1/users/6063b4af75629600d3ba5ce8/nodes/607f58a97e08873be3ca0315/subnets/[object Object]/dummy-tran' \
--header 'X-SP-USER-IP: 255.127.79.76' \
--header 'X-SP-USER: oauth_N1DoXKQlEsPOIxphYjSey4J8qn2RmVFZ0zLbH5TW|e83cf6ddcf778e37bfe3d48fc78a6502062fc' \
--header 'Content-Type: application/json' \
--data-raw '{
  "type": "ACH",
  "direction": "DEPOSIT",
  "amount": 100.00,
  "currency": "USD",
  "posting_label": "Dummy Test Transaction"
}'
//
//
//
//
//

Afghanistan

AF

Algeria

DZ

IBAN

Andorra

AD

IBAN

Angola

AO

IBAN

Argentina

AR

CBU

Required

Armenia

AM

Aruba

AW

Australia

AU

info.bsb_number

Austria

AT

IBAN

Azerbaijan

AZ

IBAN

Required

Bahamas

BS

Bahrain

BH

IBAN

Bangladesh

BD

Barbados

BB

Belgium

BE

IBAN

Belize

BZ

Benin

BJ

IBAN

Bermuda

BM

Bhutan

BT

Bolivia

BO

Botswana

BW

Brazil

BR

IBAN

info.branch_code

Brunei

BN

Bulgaria

BG

IBAN

Burkina Faso

BF

IBAN

Cambodia

KH

Cameroon

CM

IBAN

Canada

CA

info.transit_code,

info.bank_address.address_subdivision

Some examples: for subdivision use

“ON” for Toronto

“QC” for Montreal

“BC” for Vancouver

Also for transit_code it is best to include the full routing number as a string.

Cape Verde

CV

IBAN

Cayman Islands

KY

Chad

TD

IBAN

Chile

CL

Required

info.bank_code

China

CN

info.branch_name

Colombia

CO

Required

info.bank_code

Comoros

KM

Costa Rica

CR

IBAN

Required

Cote d Ivoire

CI

IBAN

Croatia

HR

IBAN

Cyprus

CY

IBAN

Czech Republic

CZ

IBAN

Democratic Republic of the Congo

CD

Denmark

DK

IBAN

Djibouti

DJ

Dominican Republic

DO

IBAN

Egypt

EG

IBAN

Equatorial Guinea

GQ

Eritrea

ER

Estonia

EE

IBAN

Eswatini (previously Swaziland)

SZ

Ethiopia

ET

Falkland Islands (Malvinas)

FK

Faroe Islands

FO

IBAN

Fiji

FJ

Finland

FI

IBAN

France

FR

IBAN

French Guiana

GF

French Polynesia

PF

IBAN

Gabon

GA

IBAN

Gambia

GM

Georgia

GE

Germany

DE

Ghana

GH

Gibraltar

GI

IBAN

Greece

GR

IBAN

Greenland

GL

IBAN

Guadeloupe

GP

Guatemala

GT

IBAN

Required

Guinea

GN

Guinea Bissau

GW

IBAN

Guyana

GY

Haiti

HT

HOLY SEE (Vatican City State)

VA

Honduras

HN

Hong Kong

HK

Hungary

HU

IBAN

Iceland

IS

IBAN

India

IN

info.bank_code

Indonesia

ID

info.branch_code

Ireland

IE

IBAN

Israel

IL

IBAN

Italy

IT

IBAN

Jamaica

JM

Japan

JP

Jordan

JO

IBAN

Kazakhstan

KZ

IBAN

Required

Kenya

KE

Kuwait

KW

IBAN

Kyrgyzstan

KG

Laos

LA

Latvia

LV

IBAN

Lesotho

LS

Liechtenstein

LI

IBAN

Lithuania

LT

IBAN

Luxembourg

LU

IBAN

Macau

MO

Macedonia

MK

IBAN

Madagascar

MG

IBAN

Malawi

MW

Malaysia

MY

Maldives

MV

Malta

MT

IBAN

Martinique

MQ

Mauritania

MR

IBAN

Mauritius

MU

IBAN

Mayotte

YT

Mexico

MX

info.clabe

Moldova

MD

IBAN

Monaco

MC

IBAN

Mongolia

MN

Montenegro, Republic of

ME

IBAN

Morocco

MA

IBAN

Myanmar

MM

Namibia

NA

Nepal

NP

Netherlands

NL

IBAN

Netherlands Antilles

AN

New Caledonia

NC

IBAN

New Zealand

NZ

Niger

NE

IBAN

Norway

NO

IBAN

Oman

OM

Papua New Guinea

PG

Paraguay

PY

Required

Peru

PE

Required

Philippines

PH

info.transit_code

Poland

PL

IBAN

Portugal

PT

IBAN

Qatar

QA

IBAN

Republic of the Congo

CG

IBAN

Reunion

RE

Romania

RO

IBAN

Rwanda

RW

Samoa

WS

San Marino

SM

IBAN

Sao Tome and Principe

ST

IBAN

Saudi Arabia

SA

IBAN

Senegal

SN

IBAN

Seychelles

SC

Sierra Leone

SL

Singapore

SG

info.bank_code

Slovakia

SK

IBAN

Slovenia

SI

IBAN

Solomon Island

SB

South Africa

ZA

South Korea

KR

Spain

ES

IBAN

Sri Lanka

LK

St. Piere et Miquelon

PM

Suriname

SR

Sweden

SE

IBAN

Switzerland

CH

IBAN

Taiwan

TW

Tajikistan

TJ

Thailand

TH

Togo

TG

IBAN

Tonga

TO

Trinidad and Tobago

TT

Tunisia

TN

IBAN

Turkmenistan

TM

Uganda

UG

United Arab Emirates

AE

IBAN

United Kingdom

GB

IBAN

Uruguay

UY

Required

info.branch_code

Uzbekistan

UZ

Vanuatu

VU

Viet Nam

VN

Wallis and Futuna Islands

WF

IBAN

Zambia

ZM

Verify Routing Number

Verify Routing Number

POST https://api.synapsefi.com/v3.1/routing-number-verification

This endpoint allows you to verify routing numbers.

Headers

Name
Type
Description

Content-Type

string

This value should be application/json

Request Body

Name
Type
Description

type

string

Type of Node (ACH-US or WIRE-US)

routing_num

string

Routing number of the bank

{
    "address": "5050 POPLAR AVENUE, MEMPHIS, TN, US",
    "bank_code": "ibn",
    "bank_name": "Independent Bank (TN)",
    "horizontal_logo": "https://cdn.synapsepay.com/bank_logos_v3p1/Independent Bank (TN)_h.png",
    "logo": "https://cdn.synapsepay.com/bank_logos_v3p1/Independent Bank (TN)_v.png",
    "meta": {
        "primary_color": "EE3124",
        "secondary_color": "000000"
    },
    "name": "INDEPENDENT BANK",
    "url": "http://www.independent-bank.com"
}
{
    "error": {
        "code": "not_known",
        "en": "084008421 - Not a Valid #"
    },
    "error_code": "200",
    "http_code": "400",
    "success": false
}

Example Request

{
  "routing_num": "084008426",
  "type": "ACH-US"
}
import http.client

conn = http.client.HTTPConnection("uat-api,synapsefi,com")

payload = "{\n  \"routing_num\": \"084008426\",\n  \"type\": \"ACH-US\"\n}"

headers = {
    'Content-Type': "application/json",
    'cache-control': "no-cache",
    'Postman-Token': "594f9722-a7e4-402e-8aaf-770646c3ad01"
    }

conn.request("POST", "v3.1,routing-number-verification", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
//
//
//
//

3D Secure

Intro

3D Secure (3DS) is a security protocol designed to better authenticate cardholders performing Card Not Present transactions. This feature provides issuers with enhanced data elements that allows for smarter authorization and authentication practices. It also supports additional customer verification flows when needed, such as multi-factor authentication.

All 3DS transactions will follow one of three paths - 1) Green, 2) Yellow or 3) Red.

  • Green Path - no customer verification required

  • Yellow Path - customer verification required

  • Red Path - transaction declined (no customer verification attempted)

API Response

The following fields will be visible in the API response to provide insight into 3DS transactions.

Field
Description
Value

three_ds_auth

This field indicates whether the transaction was processed using 3D Secure (3DS) authentication

True - the transaction was processed using 3DS authentication

False - the transaction was not processed using 3DS authentication

Null - transaction does not qualify for 3DS

three_ds_auth_path

This field specifies the path taken for the 3DS transaction

G - Green path, no customer verification required

Y - Yellow path, customer verification required

R - Red path, transaction declined (no customer verification attempted) Null - transaction does not qualify for 3DS

Loan Limits

Get Loan Limits

GET https://api.synapsefi.com/v3.1/loans-limits

This endpoint displays the state by state features for loans.

Headers

Name
Type
Description

Content-Type

string

This value should be application/json

{
    "AK": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 24
    },
    "AR": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 17
    },
    "AZ": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "CA": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 12
    },
    "CO": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 21
    },
    "CT": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "DC": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 24
    },
    "DE": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "FL": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 30
    },
    "GA": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 8
    },
    "HI": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 10
    },
    "IA": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "ID": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "IL": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 5
    },
    "KS": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 21
    },
    "LA": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 27
    },
    "MA": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 11
    },
    "MD": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 24
    },
    "ME": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 24
    },
    "MI": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 25
    },
    "MN": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 21.75
    },
    "MO": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "MS": {
        "LOAN_TYPES": [
            "ONE-TIME"
        ],
        "MAX_APR": 25
    },
    "MT": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "NC": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 16
    },
    "ND": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 18
    },
    "NE": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 16
    },
    "NH": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "NJ": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 15
    },
    "NM": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "NY": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 15
    },
    "OH": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 8
    },
    "OK": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 25
    },
    "OR": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "PA": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 9.5
    },
    "RI": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 24
    },
    "SC": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 12
    },
    "SD": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "TN": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 30
    },
    "TX": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 9
    },
    "UT": {
        "LOAN_TYPES": [
            "ONE-TIME",
            "REVOLVING",
            "OPEN"
        ],
        "MAX_APR": 36
    },
    "VA": {
        "LOAN_TYPES": [
            "ONE-TIME"
        ],
        "MAX_APR": 12
    },
    "WV": {
        "LOAN_TYPES": [
            "ONE-TIME"
        ],
        "MAX_APR": 8
    },
    "WY": {
        "LOAN_TYPES": [
            "ONE-TIME"
        ],
        "MAX_APR": 21
    }
}

Example Request

GET /v3.1/loans-limits HTTP/1.1
Host: uat-api.synapsefi.com
Content-Type: application/json
curl --location --request GET 'https://uat-api.synapsefi.com/v3.1/loans-limits' \
--header 'Content-Type: application/json'
//
//
//
//
Allowed Scopes

Pre-Authorization

Pre-Authorizations ("pre-auths") are temporary holds that merchants place on a cardholder's funds instead of immediately debiting the cardholder. They tend to be for a higher amount than the price of the purchased product/service. Pre-auths can be inconvenient for the final user because they will be unable to spend the pre-authed funds until the pre-auth window has passed and the transaction has either settled or returned. This is often confusing for users because the transaction is not yet visible on their statements, since the transaction has not yet (technically) taken place.

For example, a user could have an initial bill of $23 for food delivery. However, the merchant issues a $30 pre-auth to account for anticipated tips. After a couple of days, the merchant settles the transaction and includes the user's $2 tip, making the final transaction amount $25.

Expected Behavior

When a pre-auth is initiated, a transaction is created with "status": "CREATED". The pre-auth amount is determined by the merchant (with the exception of Automated Fuel Dispenser Transactions, mentioned below). If the user has the funds, it will move quickly to "status": "PROCESSING-DEBIT" and then "status": "PROCESSING-CREDIT".

If the merchant does complete the transaction, the transaction will be updated with "status": "SETTLED"and "code": "pre_auth_completion".

If the merchant does not complete the transaction after 7 days, the pre-auth will drop, with "status": "RETURNED" and "code": "pre_auth_expiration".

Please keep in mind:

  • Pre-Auths will count toward a user's limits

  • We have seen online merchants make heavy use of pre-auths

Pre-Auth Risk

It is not uncommon for the final settled amount to be higher than the pre-auth amount. This is expected behavior. However, if you suspect a merchant is fraudulently inflating the settlement amount, our only real recourse is filing disputes or requesting to block the merchant altogether.

Additionally, please note that we cannot cancel a pre-auth while it is processing, so if a user creates a transaction and is later locked, you will ultimately be responsible for covering any losses.

Automated Fuel Dispenser Transactions

Automated Fuel Dispenser (AFD) transactions (aka “gas transactions") are pre-auths associated with fuel purchases at gas stations. Synapse sets the standard pre-auth amount for such transactions at $100. This temporary hold ensures the cardholder is liable for up to $100 when the pre-auth clears. If the value of the fuel dispensed was less than $100, the transaction will settle for the lower amount and the balance of the associated node should update once the pre-auth completes (i.e. with "recent_status.status": "SETTLED" and "recent_status.note": "pre_auth_completion").

Virtual Terminal

Currently the UI Supports Online Shopping like Amazon, ATM usage, POS payments like Whole Foods and In N Out and also P2P payments like Venmo and PayPal.

View Enriched Data

View Enriched Data

GET https://api.synapsefi.com/v3.1/enrich/:merchant_id

This endpoint allows you to view detailed merchant information for entity_id, facilitator_id, location_id or biller_id.

Headers

Name
Type
Description

Content-Type

string

This value should be application/json

{
    "_id": "5d27c72e715467f6ef157bee",
    "address": {
        "city": "Louisville",
        "country_code": "US",
        "loc": [
            38.21362,
            -85.53173
        ],
        "postal_code": "40299",
        "street1": "2002 Papa John's Blvd",
        "street2": null,
        "subdivision": "KY"
    },
    "analytics": {},
    "logo": "https://cdn4.synapsefi.com/uploads/2019/12/07/FCJGO20MsILNdrqaPTHQD3bAkpo9lSKuRghY68WtnX1e7B5fmv.png",
    "name": "Papa John's Pizza",
    "official_page": "https://www.papajohns.com/",
    "phone_number": {
        "country_code": "1",
        "national_number": "8775477272"
    },
    "scope": "entity"
}

Entity, Facilitator or Location IDs are returned as a part of a card transaction stream. These values are located either in from.meta.enriched_info in case of a push transaction or to.meta.enriched_info in case of a pull transaction.

For instance, for a transaction description like PAYPAL *NETFLIX.COM 4029357733 CA 950327620, enriched_info will look like the following:

// PAYPAL *NETFLIX.COM 4029357733   CA 950327620
{
  "enriched_info": {
    "category": "entertainment",
    "entity_id": "5bde7b198ddd931c7ee7d0df", // Netflix
    "facilitator_id": "5bde7b198ddd931c7ee7d0e0", // Paypal
    "location_id": null,
    "status": "SETTLED"
    }
}

Example Request

GET /v3.1/enrich/5d27c72e715467f6ef157bee HTTP/1.1
Host: qa-api.synapsefi.com
Content-Type: application/json
curl --location --request GET 'https://qa-api.synapsefi.com/v3.1/enrich/5d27c72e715467f6ef157bee' \
--header 'Content-Type: application/json'
//
//
//
//
//

Transaction Decisioning

For that reason, we enable higher level of control on Subnet withdrawals, to address three needs:

  1. Ability to Pass/Fail a transaction based some custom criteria built on your side.

  2. Ability to fund the transaction through one or more accounts (funding nodes) at the time of transaction decisioning, not before.

    1. Additional ability to fund a pre-auth approved transaction to safe guard against variable final total amounts (example tip on a restaurant bill).

  3. If the network allows, only approve a transaction partially.

We also enable decisioning for incoming card based credits, but with stricter criteria:

  1. The transaction can not be a cash deposit.

  2. You can only Pass/Fail the transaction. You can not pass funding nodes or partial approval amounts.

  3. Must not be a force post transaction.

Set up

{
  "scope": [
    "TRANS|POST|JIT"
  ],
  "url": "https://webhook.site/f765c7b8-4a73-4407-89e7-e1a6794004e8"
}

Decisioning

To be able to decision a transaction, you need to respond in the following format:

Field

Type

Required

Description

decision

String

Yes

Supply PASS if you intend to let the transaction go through. Otherwise supply FAIL.

funding_nodes.node_id

String

No

Node ID where the supplied amount should be funded from. Not supported for credits.

funding_nodes.amount

Number

No

The amount that needs to be taken out of the supplied node id. Not supported for credits.

total_amount

Number

No

Total amount approved for the transaction. Can be lower than the amount on transaction if partial approval is allowed. Not supported for credits

additional_funding

String

No

In a pre-auth scenario, if there is a remaining balance, the remainder will be taken from the node(s) defined here. Not supported for credits.

Basic Transaction Decisioning

Upon receiving a supported subnet transaction, we will notify you via the TRANS|POST|JIT webhook url. Your response will indicate to us whether to allow ({"decision": "PASS"}) or deny ({"decision": "FAIL"}) the transaction.

If the transaction is approved (PASS), then funds can be pulled directly from the account that the subnet sits on top of.

Example Payloads

{"decision": "PASS"}

or

{"decision": "FAIL"}

Funding via Multiple Accounts (Withdrawal only)

If you wish to fund the transaction from an account other than the account the subnet sits on top of, then you can pull funds directly from one or more funding nodes (either user or platform accounts) specified in the response.

  • If funding for the transaction comes from multiple accounts (listed in the funding_nodes array supplied in the response), then you must both specify the exact amount to be pulled from each node and ensure that the overall transaction's total_amount field equals the sum of the amounts pulled from each funding node. If both of these criteria are not met, the transaction will silently fail.

  • Please also note that providing an invalid node_id for any of the listed funding nodes will also cause the transaction to silently fail.

Example Payloads

Single Node Funding

{
  "decision": "PASS",
  "total_amount": "<TOTAL_AMOUNT>",
  "funding_nodes": [
   {"node_id": "<NODE_ID>", "amount": "<AMOUNT>"}
 ]
}

Multiple Funding Nodes via JIT

{
  "decision": "PASS",
  "total_amount": "<TOTAL_AMOUNT>",
  "funding_nodes": [
   {"node_id": "<NODE_ONE_ID>", "amount": "<AMOUNT_ONE>"},
   {"node_id": "<NODE_TWO_ID>", "amount": "<AMOUNT_TWO>"}
   ]
}

Pre-Auth with Additional Funding (Withdrawal only)

The additional_funding nodes deduction only occurs if the total_amount increased and does nothing if the total_amount decreases.

{  
  "decision": "PASS",
  "total_amount": "<TOTAL_AMOUNT>",
  "funding_nodes": [
   {"node_id": "<NODE_ONE_ID>", "amount": "<AMOUNT_ONE>"},
   {"node_id": "<NODE_TWO_ID>", "amount": "<AMOUNT_TWO>"}
   ],
   "additional_funding": [{"node_id": "<NODE_ID>"}]
}

Partial Approval (Withdrawal only)

Testing

Important Considerations

Following are some things to be mindful of while building with Transaction Decisioning:

Funding Outcome

Transaction will still settle if there are insufficient funds. However, if there are insufficient funds and another cancel reason it will fail.

Timely Response Considerations

Upon being notified of a new transaction request by the TRANS|POST|JIT webhook you will need to perform your custom transaction logic, provide funding (if using Instant Auth), and provide a response within 1.00 seconds, or else the transaction will follow the default path of decisioning, in other words, as if JIT did not exist.

Negative Balance Considerations

Funding from other nodes does not perform balance checks on the nodes due to the timely response considerations mentioned above (i.e. response required within 1.00s), meaning that use of this feature with a funding node that has insufficient funds to cover a transaction will make that node's balance go negative.

It is your responsibility to both perform periodic balance checks and to maintain an estimate of funding node balances to avoid this (i.e. to have a reasonable expectation that a funding node can cover a transaction before allowing it).

Debit Card Cashback Considerations

Consider how to handle transactions with a debit card cashback component (e.g. from a user who took a cash disbursement along with their purchase at a retail register). This information should be provided in the webhook's transaction request notification (e.g. {"type": "PURCHASE_WITH_CASH_DISBURSEMENT"} with sub_amounts array containing {"amount_type": "AMOUNT_CASH"}). You can either approve the full transaction amount, provide Partial Approval only for the purchased goods, or deny the transaction.

KYC Considerations

We will perform basic account and user KYC checks (e.g. making sure the user has SEND-AND-RECEIVE permissions and that the user watchlists flag is not a MATCH) prior to ever issuing a request from the TRANS|POST|JIT webhook. This means that you should not receive requests from users who are unable to transact.

Incoming card credits

When we receive an incoming card based credit transaction (Examples: CashApp or Venmo transfers), we will generate a webhook for these transactions. This allows you to control if and when you allow users to do things like transfer funds from a CashApp account to their Synapse account. Any transaction that involves a CASH deposit will not generate a webhook. Refund transactions and any others that might be force posts also will not generate a webhook as those can not be refused. Not responding to these webhooks at all, or not responding within the expected time frame, will allow the transaction to be deposited like normal.

User Onboarding

Description

When thinking about onboarding a user, it’s important to understand the entire user experience. The process described below focuses on the recommended User Experience including KYC, node creation, and any necessary subnets.

General Flow

Notes:

  • Nodes and subnets can be created while the user is still "Unverified"

  • Users must be verified to open a LOAN-US node

Interchange Revenue

Interchange Revenue Calculation

Interchange revenue is calculated per card transaction. Summing the amount fields from each revenue object within the revenues array (revenues.{}.amount) will provide the total/net interchange revenue for the transaction.

Refer to each example response body below for more details:

Example 1: ATM Transaction

For ATM transactions, the issuer pays revenues to the ATM owner's bank. This results in interchange fees rather than revenues for transactions at ATMs.

So in this case, Interchange revenue amounts (revenues.{}.amount) will always be negative and in the case of switch fees, will have type: switch_fee. Here is an example:

For this transaction the net interchange revenue would be (–$0.50) + (–$0.06) = (–$0.56)

Example 2: Interchange Transaction

For interchange transactions, the issuer gets revenue. So in this case, Interchange revenue amounts (revenues.{}.amount) will be positive. Here is an example:

For this transaction the net interchange revenue would be $0.47 + (-$0.03) = $0.44.

Final Platform Interchange Revenue

Once a month, the interchange revenue amounts (e.g. the $0.44 and -$0.56 figures from the examples above) across all transactions for the previous month are added up (including negative values from fees) to calculate the net interchange revenue generated by your Platform for the month.

Then, the Platform Interchange Revenue is calculated by applying the Interchange Split, a predetermined percentage set in the Platform Master Services Agreement (e.g. 60%), to the total monthly interchange revenue as shown by the formula below:

Once the amount is calculated, we disburse the revenue into your designated interchange revenue account. Your interchange revenue account can be designated on your dashboard (it is typically a DEPOSIT-US account under your master account). To make things easy for your accounting team, we will also attach a revenue summary in the disbursement transaction's JSON under extra.other.attachments. That revenue summary will be the total interchange revenue from Mastercard, without the applied split.

Mobile Wallets

Intro

There are two ways to connect a card subnet with a mobile wallet of choice:

Manually Provisioning a Card to a Mobile Wallet

As with most cards, end users can add cards to their preferred mobile wallet (e.g. directly from Apple Pay, Google Pay, or Samsung Pay) by providing their card details (e.g. PAN, expiration date, CVV, billing address, etc.) to the mobile wallet provider. However this process either requires end users to digitally scan their cards using OCR (Optical Character Recognition) or provide their card details via manual text input.

Instant Provisioning to Mobile Wallet

Mobile Wallet Fraud Protection

While protecting payment transactions in flight is a critical part of reducing card-related fraud, with mobile wallets, there is the ability to reduce fraud at the time of provisioning cards into mobile wallets like Apple Pay and Google Pay. To help Platforms reduce fraud during card provisioning with these services, we have extended the data fields that we are consuming during provisioning to trigger additional fraud checks at the time of provisioning.

Multi-Factor Authentication Support

Through the enablement of multi-factor authentication, Platforms can leverage a verified phone number/email.

CVV2 Throttling

In order to assist in the prevention of fraud from suspicious activity, cards will now be locked out of mobile wallet provisioning for 24 hours in certain cases in which the system flags an increased risk of fraud, including a certain level of bad CVV2 attempts in a period of time.

Card Art Specs

Mobile Wallet Art will be associated with virtual card profiles. Each profile will map to all of the tokens that use its card art. Therefore, to update the card art for multiple tokens that share a particular card profile, you simply need to update the card profile with new art. Conversely, to only update the card art for a single token, you would re-assign that token to a different card profile (i.e. either to another existing card profile or to a new one). When submitting a card art, please provide the following:

Short Description

A short description of the card (e.g. for lock screen notifications). This short description should include the word "Mastercard" and can be a maximum of 32 characters in length.

Card Artwork

Brand Mark Image

Platform Logo Image

SVG (recommended) or PNG image in RGB color format. The image dimensions can be up to 1372 x 283 pixels.

Card Background Image

SVG (recommended) or PNG image in RGB color format. The image dimensions must be 1536 x 969 pixels and have square corners.

Combined Art Work

Card background + platform logo + brand mark (Mastercard).

If Debit, cards must include the "debit" identifier. SVG (recommended) or PNG image in RGB color format. The image must be 1536 x 969 pixels and have square corners. Example: Synapse's combined card art (below).

App Icon

For push notifications related to the card. PNG or SVG image in RGB color format The image must be exactly 100 x 100 pixels. Example: Synapse's approved app icon (below).

Card Art Colors

Background Color (Hex)

This is used to overlay the background of the card art.

Foreground Color (Hex)

This is used for the masked card PAN digits that are overlaid on the bottom left of the card image.

Label Color (Hex)

This is used for the short description text rendered on the card image if the card image (Card Background Combined or Card Background) is not available for some unexpected reason.

Updating Card Art

Please allot up to 10 business days after the card art has been accepted by us for the new card profile to take effect.

When card art is updated, all the tokens associated with the profile are automatically liked to the new card art.

If you wish not to do that, please request a new profile with new art to avoid changing all tokens.

Card Disputes Guide

Dispute Process

Initial Response

Provisional Credit is applied against your Reserve Account. So there will be a transaction originating from your reserve account, going into the user's deposit account. Provisional Credits post in the following timeframe for the end users:

When will a Provisional Credit be applied?

Provisional credits are automatically created if the disputed transaction meets the requirements. The disputed transaction must be a debit in order to be eligible for provisional credits. Also, the dispute reason must be either MERCHANT|RETURNED_MERCH or MERCHANT|DEFECT_OR_NOT_AS_DESC.

Since filing a dispute costs $25, any disputed transaction that is $25 or less will automatically result in a provisional credit regardless of the aforementioned requirements.

Investigation

Please Note: This update was added at the end 2020 and only newer disputes will have this information.

Resolution

The investigation will conclude when we receive a response from the merchant or network involved in the processing of the transaction. Should the chargeback be honored by the merchant, we will receive funds back in response. These will either be credited to the user’s account (merchant dispute) or to the your reserve (all other disputes) as appropriate.

The funds will be returned to your reserve account if a provisional credit was applied. Otherwise the funds will be credited back to the user's account.

Should the chargeback not be honored by the merchant, or it was determined there were no chargeback rights given the type of transaction or the manner in which it was processed, the provisional credit will be considered final and the user will be notified.

Should the chargeback not be honored by the merchant, but they respond with evidence that the user was in fact involved in the transaction or authorized the transaction, the provisional credit will be rescinded from the user’s account and credited back to the Platform’s reserve.

Once the investigation has been completed, we will notify the user within 3 business days with its final decision based on the results of the chargeback.

Dispute Lifecycle

Here is the lifecycle of the entire dispute process. Throughout the investigation, the dispute’s status is updated as we get information from the network:

Dispute Statuses

Dispute Workflow Timing

Disputes Submission

Disputes are batched and submitted everyday at 4:00 PM PST. A response file for the batch is received at 4:30 PM PST each day that will tell us whether the cases are successfully added, updated, or if there was an error.

Dispute Status Updates

There is an incoming file from the card network at 3:30 PM PST each day that notify us of any updates to open dispute cases.

Network Chargeback Credits and Representment Debits

At 6:10 PM PST we start our reconciliation process for the day. During this time, we may process some dispute-related offline adjustments. This can either be a network chargeback credit or representment debit.

When a representment debit is received, our compliance team will review the dispute case and make a decision on whether or not the provisional credit is returned to the platform’s reserve account. Provisional credit should remain with the user unless there is proof showing the transaction is authorized.

Network chargeback credits and representment debits from the network will be directed to the platform’s reserve, if provisional credit was given to the end user, otherwise it will be directed to the end user’s node.

Pre-Arbitration

A dispute enters pre-arbitration once a merchant has represented the transaction with compelling evidence and the Platform decides to contest the re-presentment. Generally speaking, it may be prudent to submit a pre-arb for high value transactions when you believe the compelling evidence is insufficient and therefore does not prove that no error occurred.

Pre-arbs may be submitted for the following types of transactions:

  • ATM withdrawals

  • Authorization related chargebacks

  • Chip liability chargebacks

  • Lost/Stolen/Never received related chargebacks

Following is the lifecycle of a Pre-Arb:

What are the costs associated with Pre-Arbs?

Submitting a per-arb can become quite costly should you lose the case. It is important to weigh the costs against the potential benefits before submitting a pre-arb. We recommend establishing a de minimis to help prevent undue costs. Here are the costs of Pre-Arbs:

  • $150 filing fee + $250 administrative fee; the combined $400 fee is paid by the losing party after ruling.

  • $150 filing fee to withdraw from arbitration before a ruling.

How to File a Pre-Arb?

Enrichment Guide

This information is stored in our ever-expanding Knowledge Repository and returned with transactions in Enriched Info (enriched_info) for Card Transactions.

The Enriched Info Object

When a card transaction is received by us, we run it through our Knowledge Repository to appropriately assign:

  • the Merchant Profile(s) that describe the type of business, physical retail location, or facilitator who provided Synapse with the transaction.

  • the Transaction Category (enriched_info.category) for the transaction to place it into easily recognizable "buckets" from which potentially the end user, platform, or Synapse could then take further actions.

Enriched Info Object Examples

Structure of the Enriched Info Object

One-off locations (e.g. a "mom-and-pop" location that is not part of a chain or other larger corporate entity) may only have a location_id (i.e. you will find both entity_id: "null" and facilitator_id: "null").

Please also note that you may also find location_id: "null" (e.g. for an online-only transaction for Netflix facilitated by PayPal)

If the business is not currently confirmed in our Knowledge Repository, then all values associated with the enriched_info attached to the transaction may be "null". Additionally, if a transaction was not matched to a Merchant Profile in the repository, status will be "PENDING" (it may take up to 48 hours to review and update information in the repository).

Lastly, if you suspect the merchant information is incorrect. Please follow these steps to report these issue to us:

  • If the enriched_info.status: "SETTLED" and the name, logo, or official_page is incorrect

  • OR

  • If the enriched_info.status: "PENDING" and the name, logo, or official_page is incorrect for greater than 48 hours

Merchant Profiles

The Knowledge Repository consists of Merchant Profiles that represent the businesses we provide enriched financial data about. A Merchant Profile can represent:

  • a larger business or corporate entity,

  • a specific retail location, or

  • a facilitator.

Please refer to basic details and examples below.

Merchant Profile Basic Details

Please note that a retail location that is part of a larger business or corporate entity will have its own Location Profile and will reference the Corporate Entity Profile of its parent company. A singular business location (e.g. a "mom and pop" operation with only one location) will have a Location Profile but will not reference a parent company (i.e. will not reference a Corporate Entity Profile).

Merchant Profile Examples

Transaction Categories

We similarly classify transactions from businesses by functionally combining their transactions into the following general categories:

Implementing the Enrichment Service

How your platform chooses to pull data from our Knowledge Repository will vary based on the maturity of your platform and the size of your user base. An early-stage startup and a large enterprise operation will have different priorities in terms of optimizing for speed of development vs maximizing efficiencies at scale. Here are three suggestions:

  • Early-Stage Approach (suitable for early-stage startups or for initial rapid prototyping)

  • Growth Approach (suitable for growth-stage companies beginning to scale up operations)

  • Enterprise Approach (suitable for enterprises performing operations at scale)

Early-Stage

This approach is by far the easiest to implement, but is an inefficient solution at scale.

This approach means that you will be performing (and therefore repeating) distinct API calls to retrieve Merchant Profiles from the Knowledge Repository each time you process a new transaction.

Growth

This approach attempts to strike a balance between development time, ease of implementation, and scalability, but it is a less efficient approach than the Enterprise approach below.

At the user device level, cache knowledge objects (i.e. aggregate unique IDs) and associated Merchant Profiles locally for quick retrieval.

This approach will require you to refresh Knowledge data on user devices regularly (e.g. every 72 hours), and also means that you will be storing more data on user devices than is technically relevant to them and may have periods where locally cached data is temporarily out of sync with the "true" data in the Knowledge Repository.

Enterprise

This approach is the ideal/recommended way to use data gathered from the Knowledge Repository at scale as it is the most efficient for your operations.

At the server level, collect and cache all unique Merchant Profiles (as well as periodically check for new Merchant Profiles) to be able to retrieve up-to-date information from the Knowledge Repository without having to perform additional calls to our API.

Our Feature enables you to test card issued on UAT by trying to emulate production level data.

To test a card, please get the card details from API call, ensure that the node is funded and attempt transactions on the UI.

A Biller ID on the other hand is the _id returned on API call.

Since all transactions are not originated through your platform, developers like to have higher level of control on transactions settling into user accounts. Especially withdrawals.

Transaction Decisioning is handled via a webhook request response flow. To enable an endpoint to receive a webhook when a Subnet withdrawal transaction is received, with TRANS|POST|JIT scope. So something like this:

To make the most of Transaction Decisioning (JIT), you will need to build out the appropriate logic on the platform side (e.g. restrict by transaction type, merchant profile, MCC, or other logic). Please review and to find all the information we return.

If using Partial Approval, the response will need to also supply the partially approved transaction's total_amount. If a transaction can be partially approved, you will see to.meta.partial_approval_allowed set to True. Go to to learn more.

To be able to test Transaction Decisioning on UAT, you will need to be able to create fake subnet transactions. For card subnets, you can do that with . While for account number subnets, you can do that with API calls.

if required

Card networks charge merchants (e.g. a coffee shop or an online marketplace) an interchange fee for facilitating the transaction. Most of this fee is then given by the card networks to the card-issuer (Synapse). This is referred to as the Interchange Revenue and can be found in the response body of a card transaction under meta.revenues (see: ). The Interchange Revenue is further totaled, split, and disbursed as explained below.

Mobile Wallets are digital wallets held on mobile devices that transact with merchants by turning Native Card Primary Account Numbers (PANs) into digital tokens (e.g. for use with Apple Pay, Google Pay, Samsung Pay, Fitbit Pay, etc.). Further, you can customize how the will be digitally represented on a mobile device.

can now also be added directly from your app to a user's mobile wallet with the click of a button through a process called "Instant Provisioning" (see ). This new feature allows users to quickly and efficiently integrate their cards with their Apple, Google, and/or Samsung digital wallets, with the added benefit of reducing both failed OCR error and manual text entry errors associated with standard manual card provisioning.

The SVG for the brand mark used on the card image. See for available brand marks. It is recommended to use the Mastercard Symbol.

You can currently submit your card information and mobile wallet assets during implementation to your Implementation Manager or later by .

Card networks give the user the option to dispute a transaction for alleged fraud, damaged merchandise, and similar reasons. To file a transaction dispute please use our API call.

When a transaction is , in most cases (except for Merchant Disputes) the end user is entitled to a Provisional Credit. Provisional Credit is a temporary credit extended to the end user equal to the amount disputed.

Both and require (in most cases) for the card issuer to immediately provide such credit to the card/account of consumer-type users if the investigation is not completed within 5 business days.

We will also send notice of the provisional credit directly to the user, via text message. This needs be sent within 2 business days, as required per Reg E. But we automate notices to the users for all disputes filed via our API call.

Dispute investigations can take up to 90 days to reach resolution once submitted to the card network. We receive status updates from the card network during the investigation period. These statuses can be viewed through the dispute_meta field on the dashboard or by making a API Call.

Should rescinding provisional credit result in an overdrawn account, you may hold the user liable for this amount. Please keep in mind that you will be ultimately responsible for any outstanding balances and negative balances are reconciled on a regular cadence (see: ).

These are the various statuses a dispute might have throughout the lifecycle of the dispute case. Go to and to learn more.

Since Pre-Arbs are manual, please email to create a Pre-Arb dispute ticket.

Enrichment service is our data repository and intelligence engine that classifies, categorizes, and analyzes user transactions. Examples of data provided include the relevant business entity, location, and the category of the expense. (See: ).

Please open a support ticket to and we will do our best to update it with the correct information as quickly as possible.

Each time you receive the transaction stream (see: and ), you extract the relevant Entity ID, Facilitator ID, and/or Location ID to then perform the subsequent API call(s) necessary to retrieve the relevant Merchant Profiles associated with the ID(s) (See: ).

Virtual Terminal
View Subnet
View Billers
Subnet
create a subscription
Virtual Terminal
Dummy Transactions
Meta Schema of RDFI ACH
Meta Schema of Card Transactions
Meta Schema of Card Transactions
{
  "revenues": [
    {
      "amount": -6,
      "meta": {
        "program": "SWITCH_FEE_TIER_3"
      },
      "type": "switch_fee"
    },
    {
      "amount": –50,
      "meta": {
        "cap": null,
        "fixed_rate": 50,
        "program": "ATM_BASE",
        "variable_rate": null
      },
      "type": "interchange"
    } 
  ]
}
{
  "revenues": [
    {
      "amount": –3,
      "meta": {
        "program": "PRE-AUTHORIZATION_SWITCH_FEE"
      },
      "type": "switch_fee"
    },
    {
      "amount": 47,
      "meta": {
        "cap": null,
        "daily_adjustment_rate": -6,
        "fixed_rate": 10,
        "program": "MERCHANT_PARTNER_PROGRAM",
        "unadjusted_value": 53,
        "variable_rate": 160
      },
      "type": "interchange"
    }
  ]
}

Age Account

Days

Over 30 days

Three (3) Business Days

30 days or below

Fifteen (15) Days

// PAYPAL *NETFLIX.COM 4029357733   CA 950327620
{
    "category": "entertainment",
    "entity_id": "5bde7b198ddd931c7ee7d0df", // Netflix
    "facilitator_id": "5bde7b198ddd931c7ee7d0e0", // Paypal
    "location_id": null,
    "status": "SETTLED"
}
// PAYPAL *PENGZHONGFA 4029357733 CA 95131
{
    "category": "shopping",
    "entity_id": null,
    "facilitator_id": "5bde7b198ddd931c7ee7d0e0", // Paypal
    "location_id": null,
    "status": "SETTLED"
}
// SQ *SUNSHINE MARKET LONG BEACH CA 90802
{
    "category": "food&drink",
    "entity_id": null,
    "facilitator_id": "5bde7b198ddd931c7ee7d0e2", // Square
    "location_id": "5cbb6df99000ab190894c4f1", // Sunshine Convenience Market
    "status": "SETTLED"
}
# MCDONALD S F1063 LOS ANGELES CA 90016
{
    "category": "food&drink",
    "entity_id": "5bde7b198ddd931c7ee7d0de", // McDonald's (chain)
    "facilitator_id": null,
    "location_id": "5d8010fb33c4bef4facee888", // McDonald's (local)
    "status": "SETTLED"
}
// JT BEAUTY KANSAS CITY MO 641343315
{
    "category": "shopping",
    "entity_id": null,
    "facilitator_id": null,
    "location_id": "5d73d3d0a8120df48e6cd1be", // JT Beauty Supply
    "status": "SETTLED"
}

Key

Type

Description

category

string

General category of the expense (e.g. "cash", "entertainment", "food&drink", "health", "services", "shopping", "transfer", "transportation", "travel"). Simplified / aggregated based on internal logic (similar to Merchant Category Codes / MCCs used by card processors). Please note that category is assigned according to the transaction rather than Merchant Profile (i.e. multiple transactions with different categories can be matched to the same Merchant Profile).

entity_id

string

Entity ID (i.e. the unique identifier that maps to the business entity / Corporate Entity Profile associated with the transaction).

facilitator_id

string

Facilitator ID (i.e. the unique identifier that maps to the facilitator / Facilitator Profile associated with transaction).

location_id

string

Location ID (i.e. the unique identifier that maps to the specific retail location / Location Profile associated with the transaction)

status

string

The status for the merchant information in the Knowledge Repository. The value can either be SETTLED or PENDING.

Merchant ‌‌Profile

Details

Examples ‌‌

Corporate Entity Profile

Profile for a business or corporate entity (e.g. a restaurant or store chain).

McDonald's Walmart 7-Eleven

Location Profile

Profile for a specific retail location (e.g. a singular business location or a franchise location).

Singular Business Location Example "Sunshine Convenience Market" ‌‌ Franchise Location Example "MCDONALD S F1063 LOS ANGELES CA 90016"

Facilitator Profile

Profile for a payment facilitator, hotel/discount travel facilitator, or other type of facilitator for the transaction. Please note that payment facilitators are in control of transaction formatting and use their own formats that may restrict our Enrichment service's ability to identify a final merchant for a transaction (e.g. by prepending an abbreviated code, followed by an asterisk, followed by a short transaction description that may be truncated such that we are unable to parse a merchant name). We provide facilitator information as part of our effort to transparently provide as much information as possible for each transaction.

Payment Facilitator Examples PayPal Apple Pay Google Pay Venmo Square Cash App ‌‌ Hotel / Discount Travel Facilitator HotelTonight Expedia ‌‌ Other Facilitators Kickstarter Indiegogo ActBlue WinRed

{
    "_id": "5bde7b198ddd931c7ee7d0de",
    "address": {
        "city": "Oak Brook",
        "country_code": "US",
        "loc": [
            41.84754,
            -87.97179
        ],
        "postal_code": "60523",
        "street1": "2111 Midwest Rd",
        "street2": null,
        "subdivision": "IL"
    },
    "analytics": {},
    "logo": "https://cdn4.synapsefi.com/uploads/2020/01/03/1lcwyJFj8OMG0fb0vqiUTVCQHtamLKDRp6WAnESY5Ixe73uNP4.png",
    "name": "McDonald's",
    "official_page": "https://www.mcdonalds.com/",
    "phone_number": {
        "country_code": "1",
        "national_number": "8884244622"
    },
    "scope": "entity"
}
{
    "_id": "5d8010fb33c4bef4facee888",
    "address": {
        "city": "Los Angeles",
        "country_code": "US",
        "loc": [
            34.03021,
            -118.33469
        ],
        "postal_code": "90016",
        "street1": "2838 Crenshaw Blvd",
        "street2": null,
        "subdivision": "CA"
    },
    "analytics": {},
    "name": "McDonald's",
    "phone_number": {
        "country_code": "1",
        "national_number": "3237310046"
    },
    "scope": "location"
}
{
    "_id": "5bde7b198ddd931c7ee7d0e0",
    "address": {
        "city": "San Jose",
        "country_code": "US",
        "loc": [
            37.37696,
            -121.92266
        ],
        "postal_code": "95131",
        "street1": "2211 N 1st St",
        "street2": null,
        "subdivision": "CA"
    },
    "analytics": {},
    "logo": "https://cdn4.synapsefi.com/uploads/2020/03/06/d2BYQAtzO39x0VZu05qL4UcMajsFWE7rgDlRIbe8fTvkhi1Swo.jpeg",
    "name": "PayPal",
    "official_page": "https://www.paypal.com/",
    "phone_number": {
        "country_code": "1",
        "national_number": "8882211161"
    },
    "scope": "entity"
}

Category

Examples

cash

cash disbursements (e.g. manual and ATMs)

entertainment

movies, amusements parks, shows, exhibits, digital subscriptions

food&drink

restaurants, fast food, grocery, alcohol & bars, delivery service facilitators (e.g. DoorDash, UberEats, GrubHub, etc.)

health

medical care, pharmacies, doctors, health practitioners

services

other services not classified as "entertainment," "health," or "transportation" (e.g. utilities, insurance, education, laundry, beauty shops, repair shops, etc.)

shopping

clothing retailers, electronics retailers, online merchants

transfer

person-to-person (P2P) money transfers (Cash App, Venmo, Paypal, Apple Pay, etc.)

transportation

public transportation, ridesharing (e.g. Uber/Lyft), taxi, parking, service stations, auto supplies, fuel

travel

car rentals, airlines, hotels, travel agencies, cruises, hotel/discount travel facilitators (e.g. HotelTonight, Expedia, etc.)

Create User
Authenticate as the User
Create Nodes
Create Subnets
Link External Accounts
Add Additional Documents to Verify the User
here
Dispute Transaction
disputed
Reg E
card networks
Dispute Transaction
View Transaction
help@synapsefi.com
View Enriched Data
help@synapsefi.com
View Transaction
Subscriptions
View Enriched Data
View Transaction
Meta Schema of Card Transactions
Possible dispute_status Values
Possible dispute_status_note Values
card subnet
Push to Wallet
Subnet Cards
creating a ticket
Negative Balance Reconciliation

Create Node Flow

Create Deposit Node Flow

    1. preview_only=true

  1. Display Account Disclosure

    1. Display the Agreement PDF to User

  2. Collect Affirmative Consent from the user

  3. Display Node Details

Create Credit Nodes

  1. Wait for the user to be approved SEND-AND-RECEIVE

    1. preview_only=true

  2. Display Account Disclosure

    1. Display the Agreement PDF to User

  3. Collect Affirmative Consent from the user

  4. Run Credit Decisioning

  5. Display Node Details

Cash Advance

Create Cash Advance

  1. Display Cash Advance terms

  2. Create the Repayment Node

  3. Create the Disbursement Node

  4. Display the Promise to Repay Disclosure

    1. Required Language: “The bank services are provided by Synapse's partner banks, Members FDIC. By accepting the terms of this account on <Insert Platform Name>, you agree to <Platform>'s Promise to Pay Agreement.”

    2. Display the agreement PDF

  5. Display the Cash Advance Details:

    1. Amount

    2. Repayment Account

    3. Disbursement Account

    4. Repayment Date

  6. Collect Affirmative Consent from the user

Notes:

  • Platforms can charge a fee for cash advance

  • Platforms cannot charge APR for Cash Advance

  • Cash Advance products are heavily scrutinized by regulators

Authenticate as the User

Authenticate as the User

Notes:

  • After User creation, all API calls will require an oauth token

Protecting Fingerprints

Protecting fingerprints, or marking them as “protected”, not only prevents their eventual expiration, it also ensures the fingerprint is not popped off the list in the event that the user has exceeded the overall limit.

  1. If protecting an existing fingerprint, ensure that is inactive (is_active=false)

    1. If the fingerprint is active, deactivate it by performing the OAuth call with is_active=false in the payload

      1. POST /v3.1/oauth/{{user_id}}

  2. POST /v3.1/oauth/{{user_id}} with the following payload parameters

    1. is_active = true

    2. is_protected = true

    3. refresh_token

    4. scope

Create User Flow

What

User onboarding is the culmination of your marketing campaign and the beginning of your relationship with the user. It's important to provide a smooth onboarding experience in order to maximize your conversion rate.

Why

  • Long onboarding times drastically increase abandonment

  • Users are more likely to provide additional KYC information in order to activate their account rather than create their account

  • Consumers are very sensitive to KYC friction

  • Business users are familiar and tolerant of KYB friction

How

Consumer Onboarding

  1. Display the TOS and Privacy Agreements

  2. Collect basic user information

    1. Phone

    2. Email

    3. Address

    4. Name

  3. Collect the minimum documentation required from users. This is described in your Spec Sheet

    1. US Residents: SSN

    2. International Users: Physical Documents

Business Onboarding

  1. Display the TOS and Privacy Agreements

  2. Collect Login and Base Business Details

    1. Name

    2. Email

    3. Phone

    4. Incorporation Date

    5. Address

  3. Collect Business Documents

    1. Incorporation Documents

    2. Relevant Licenses

    3. Owners/UBOs/Executives (Same as Consumer Documents)

  4. Collect Executives & UBO Information

    1. Default:

      1. Phone

      2. Role

      3. Ownership Percentage

      4. Email

      5. Address

      6. Name

    2. US Users:

      1. SSN

    3. International Users:

      1. Physical Documents

      2. Video Authorization

Notes:

  • Onboarding as a business user is a time commitment. In order to minimize dropoff during the onboarding process, we recommend giving users access to the application before they have finished supplying all of the required KYC & KYB.

  • Users must be aware that their account is not active and that they must be verified before they can start transacting.

  • Business Onboarding can take time in order to verify all of the required information

(required for Approved and Rejected Loans)

Required Language: "Synapse is our backend software provider, and partners with financial institutions to provide FDIC insurance. Synapse’s API, and their relationship with financial institutions, enables us to offer banking services and products. By agreeing to <insert platform name>’s TOS and Privacy Policy, you also agree to Synapse’s terms and policies below: "

(required for consumer programs for US residents)

Required Language: "Synapse is our backend software provider, and partners with financial institutions to provide FDIC insurance. Synapse’s API, and their relationship with financial institutions, enables us to offer banking services and products. By agreeing to <insert platform name>’s TOS and Privacy Policy, you also agree to Synapse’s terms and policies below: "

Preview the Node Agreement
Create the Node
Preview the Node Agreement
Create the Node with Credit Decision
Synapse Deposit Node
Linked account
Synapse Deposit Node
Linked account
Create REPAY-US node
Get User Refresh Token
Generate oAuth token using fingerprint and refresh token
Links
Create the user in Synapse
Display a W-9 Certification
Authenticate as the User
Update User with KYC Documents
Add Nodes
Add Subnets
Add Additional KYC Documents as Necessary
Links
Create User:
Authenticate as User
Create Nodes
Create Subnets
Update User with Business Documents
Add UBO Base Docs to the User
Create Reg GG form
Add Additional Documents as Necessary
Dispute Lifecycle