# Visa Direct

## Introduction

Visa rails to send and pull funds directly to visa debit card. Visa Direct offers fast, secure, and convenient payment solutions with global reach. Other benefits of Visa Direct include:&#x20;

* **Speed**: Near-instant transfers, often within minutes, compared to traditional methods.
* **Global Reach**: Available in 200+ countries and supports multiple currencies.
* **Convenience**: Easy to use, requiring only a recipient’s Visa card details.
* **Security**: Built-in fraud prevention and encryption via Visa’s trusted network.
* **Accessibility**: Available to anyone with a Visa card, no need for a bank account.
* **Versatile**: Ideal for consumer-to-consumer, business-to-consumer, and government payments.

## How it works?

Visa Direct works by enabling real-time payments directly to a recipient’s Visa debit, credit, or prepaid card. Here’s how it works step-by-step:

* **Initiating the Transfer**: The sender uses a Züm Rails to send money to a recipient’s Visa debit, credit, or prepaid card, providing their card details.
* **Transaction Processing**: The sender's bank or service provider requests the payment through Visa’s network, which verifies and authorizes the transaction.
* **Sending the Funds**: Visa Direct transfers the funds instantly (or within a few minutes) to the recipient’s card.
* **Recipient Access**: The recipient can immediately use the funds for purchases or withdrawals.

**Transaction Types**

* You can receive funds using Visa Direct from a user (Accounts Receivable)&#x20;
* or you can pay a user using Visa Direct (Accounts Payable)

## Transaction Limits

| Transaction Limit            | Minimum | Maximum     |
| ---------------------------- | ------- | ----------- |
| Amount limit per transaction | $0.00   | Unlimited   |
| Maximum volume per day       | $0.00   | Unlimited   |
| Transaction per day          | $0.00   | $99,999,999 |
| Maximum Volume Per Month     | $0.00   | Unlimited   |

## 3D Secure

3D Secure (3DS) adds an extra layer of authentication to card-not-present (CNP) transactions, helping prevent unauthorized card use and protecting both you and Zūm Rails from fraud.

#### What is 3D Secure?

When a customer makes a card payment, 3D Secure prompts them to complete an extra verification step—usually by entering a code sent by their bank or through biometric verification via their banking app. This process is commonly known through card network brands like Visa Secure or Mastercard Identity Check.

Successfully authenticated payments are covered by a liability shift. If a 3DS-authenticated payment is later disputed as fraudulent, the liability shifts from you to the card issuer (e.g., TD, CIBC, Scotiabank).

#### How to Implement 3D Secure?

1\. **Get Authorized**

To use 3D Secure, you must first authenticate with the Zūm Rails API. Refer to our [Authentication](https://docs.zumrails.com/api-reference/authentication) Guide.

**2. Create a 3DS Connect Token**

Create a token with the following payload:

```json
{
  "ConnectTokenType": "ThreeDS",
  "UserId": "1111c68f-e927-4e93-b55a-bbec31aaa111",
  "Amount": 10.0,
  "Configuration": {
    "TransactionMethod": "VisaDirect"
  }
}
```

**3. Initialize the 3DS SDK**

Pass the token into the 3DS SDK. If a challenge is required, the SDK will display a popup for the customer to complete the authentication. When the flow is completed, the SDK returns a callback with the following parameters:

```json
{
  "userId": "57c7c68f-e927-4e93-b55a-bbec31aaa632",
  "cardEci": "05",
  "cardDsTransId": "d65e93c3-35ab-41ba-b307-767bfc19eae3",
  "cardAuthenticationValue": "9ec1JHwF5eWa8/j/hlS5DjHZBsY=",
  "origin": "ZUM_RAILS"
}
```

4. **Use 3DS Parameters in the Transaction API**

To complete the payment, include the following values in your transaction creation request:

* cardEci
* cardDsTransId
* cardAuthenticationValue

For a full list of parameters and payload structure, please refer to the [Transaction API Reference](https://docs.zumrails.com/api-reference/transactions#creating-a-new-transaction).

{% hint style="info" %}
**NOTE**

These values are required for all card transactions that involve 3DS, except for Visa Direct Accounts Payable.
{% endhint %}

**Testing Credentials**

<table><thead><tr><th width="133">Networks/Brands</th><th width="187.39996337890625">Card Number</th><th width="162.800048828125">Type of Transaction</th><th>ECI</th><th>Status/Success</th></tr></thead><tbody><tr><td>Visa</td><td>4005519200000004; 4124939999999990; 4444333322221111</td><td>Frictionless</td><td>05</td><td>Y</td></tr><tr><td>Visa</td><td>4009348888881881; 4485660000000007</td><td>Frictionless</td><td>07</td><td>N</td></tr><tr><td>Visa</td><td>4012000033330026; 4485666666666668</td><td>Challenge/Prompt</td><td>Depends on the challenge completion</td><td>Depends on the challenge completion</td></tr><tr><td>Visa</td><td>4012000077777777; 4124930001898619</td><td>-</td><td>-</td><td>Error: Card not enrolled</td></tr><tr><td>Visa</td><td>4166676667666746</td><td>Frictionless</td><td>00</td><td>R - Issuer rejected authentication and requests authorization not to be attempted</td></tr><tr><td>Mastercard</td><td>5555341244441115; 5406004444444443; 5407721000353481</td><td>Frictionless</td><td>02</td><td>Y</td></tr><tr><td>Mastercard</td><td>5577000055770004; 5415244444444444</td><td>Frictionless</td><td>00</td><td>N</td></tr><tr><td>Mastercard</td><td>5100060000000002; 5472065555555557</td><td>Challenge/Prompt</td><td>Depends on the challenge completion</td><td>Depends on the challenge completion</td></tr><tr><td>Amex</td><td>370000000000002; 370000999999990</td><td>Frictionless</td><td>05</td><td>Y</td></tr><tr><td>Amex</td><td>370000000100018; 370000222222228</td><td>Frictionless</td><td>07</td><td>N</td></tr><tr><td>Amex</td><td>378282246310005; 340000111111117</td><td>Challenge/Prompt</td><td>Depends on the challenge completion</td><td>Depends on the challenge completion</td></tr></tbody></table>

{% hint style="info" %}
To get started with 3D Secure, please contact us via the chat feature in the Zūm Rails portal or email us at <support@zumrails.com>.
{% endhint %}

## Transaction Events

* Transaction with type Accounts Receivable started
* Wallet was funded
* Transaction completed

## Testing

To simulate an Visa Direct failure, include an event name from the list above in the COMMENT field when creating a transaction. If you don't mention an event in the COMMENT, the transaction will change its status to "Completed" in the sandbox environment. Learn more about testing in [transactions](https://docs.zumrails.com/api-reference/transactions "mention").

{% tabs %}
{% tab title="Simulating Success" %}

```json
{
  "ZumRailsType": "FundZumWallet",
  "TransactionMethod": "VisaDirect",
  "Amount": 123.45,
  "Memo": "Memo description",
  "Comment": "This transaction will succeed because there's no keyword",
  "UserID": "1d431e8b-...85452adb4eee",
  "WalletId": "8ebd932b-...b92633e14297"
}
```

{% endtab %}

{% tab title="Simulating Failure" %}

```json
{
  "ZumRailsType": "FundZumWallet",
  "TransactionMethod": "VisaDirect",
  "Amount": 123.45,
  "Memo": "Memo description",
  "Comment": "VisaDirectInsufficientFunds",
  "UserID": "1d431e8b-...85452adb4eee",
  "WalletId": "8ebd932b-...b92633e14297"
}
```

{% endtab %}
{% endtabs %}
