Ecrypt
Ecrypt payment gateway integration supporting credit card processing, authorization, capture, refunds, voids, $0 account validation, and secure card storage via the Ecrypt customer wallet.
Supported Functionality
| Feature | Supported |
|---|---|
| Authorization | ✅ |
| Capture | ✅ |
| Refund | ✅ |
| Card Tokenization | ✅ |
| 3D Secure | ❌ |
| MOTO | ❌ |
| $0 Transactions | ✅ |
Adding an Ecrypt Merchant
To connect a Merchant using the Ecrypt Gateway,
- First add Merchant
- Select Ecrypt as the Gateway
- Add Gateway Details as outlined below
| Gateway Details | Description |
|---|---|
| Private API Key* | The private API key from the Ecrypt dashboard under Settings > API/Security Keys. Ecrypt does not use a separate sandbox address — whether the key is a test or production key determines which environment the transaction is processed in. |
| Use Preferred Payments endpoint | Ecrypt is also sold as Preferred Payments. Check this box to send requests to api.preferredpayments.com instead of api.ecrypt.com. Both addresses serve the same API — use whichever the merchant was boarded on. |
| Store cards in the Ecrypt vault | Check this box to store the card with Ecrypt after the first approved transaction. Renewals will then charge the stored card instead of resending the card details. |
| Bypass $0 Transaction Authorizations | Ecrypt has a validation endpoint for $0.00 transactions. When unchecked, Vrio will validate the card through that endpoint and the result will determine if the transaction is successful. Check this box to bypass the gateway entirely for $0 transactions. Learn more about $0.00 transaction handling. |
| Merchant Payment Methods* | The types of payment methods this merchant accepts - Credit card, check, ach, etc. |
| Merchant Card Types* | Card types to be accepted on this Merchant |
| Merchant Default Currency* | Default currency that will be used, if currency is not specified |
| Merchant Currencies* | All currencies accepted on this merchant |
*Required
Card Tokenization
When Store cards in the Ecrypt vault is checked, Vrio stores the card with Ecrypt after the first approved transaction so that renewals do not have to resend the card details.
How it works:
- The initial charge is sent with the full card details and is approved as normal.
- Vrio creates an Ecrypt customer record for the cardholder.
- Vrio adds the card to that customer's wallet by referencing the approved transaction — the card details are not sent a second time.
- Renewals charge the stored wallet in a single request.
The customer and wallet identifiers are stored together in the format {ecrypt_customer_id}|{wallet_id}.
If the card cannot be stored
Storing the card happens after the payment is approved, so a failure to store it never affects the payment. The transaction remains successful and the order is processed as normal — the renewal simply sends the card details again instead of using the stored card.
$0.00 Transactions
Ecrypt cannot charge $0.00, so Vrio sends $0 transactions to the Ecrypt validation endpoint instead. This confirms the card is real and active without charging it, and the result determines whether the transaction is successful.
Unlike gateways that require a $1 authorization and immediate void to validate a card, no charge is ever placed against the card.
Check Bypass $0 Transaction Authorizations to skip the gateway entirely and treat all $0 transactions as successful. The card is not validated when this is checked.
3D Secure
Ecrypt does not currently support 3D Secure, either natively or by passing authentication values from a third-party provider. Any 3DS data on the order will not be sent.
Request
Required Data Mapping
Below is a table that shows how Vrio maps its data to the Ecrypt API. Values in bold are hard coded values, the rest are dynamic based on the payment.
Auth / Sale (New Card)
| Ecrypt API | VRIO |
|---|---|
| payment.method | CREDITCARD |
| payment.credit_card.name_on_card | billing_fname + billing_lname |
| payment.credit_card.account_number | customers_card.card_number |
| payment.credit_card.expires | customers_card.card_exp_month + customers_card.card_exp_year (MMYY) |
| payment.credit_card.verification_value | customers_card.card_cvv |
| payment.credit_card.postal_code | customers_address.billing_zipcode |
| amount.currency | transactions.currency_value |
| amount.value | transactions.transaction_total |
| order.total | transactions.transaction_total |
| order.email | customers.email |
| order.bill_to.name | billing_fname + billing_lname |
| order.bill_to.line1 | customers_address.billing_address1 |
| order.bill_to.line2 | customers_address.billing_address2 |
| order.bill_to.city | customers_address.billing_city |
| order.bill_to.state | customers_address.billing_state |
| order.bill_to.postal_code | customers_address.billing_zipcode |
| order.bill_to.country | customers_address.billing_country |
| order.metadata.vrio_transaction_id | transactions.transaction_id |
| order.metadata.vrio_order_id | orders.order_id |
Sale is sent to the sale endpoint and Auth to the authorize endpoint. The request body is otherwise identical.
Auth / Sale (Stored Card)
When the card has been stored in the Ecrypt vault, renewals send the stored card instead of the card details.
| Ecrypt API | VRIO |
|---|---|
| payment.method | CUSTOMER |
| payment.stored.wallet | The stored wallet identifier |
| payment.stored.initiated_by | CUSTOMER if an initial charge (cycle 1) MERCHANT if a renewal charge (cycle 2+) |
| payment.stored.initial | RECURRING if the charge is recurring, or on any renewal charge (cycle 2+) |
| amount.currency | transactions.currency_value |
| amount.value | transactions.transaction_total |
The order details are passed exactly as they are on a new card transaction.
Capture
| Ecrypt API | VRIO |
|---|---|
| transaction_id | The Gateway Response ID (gateway_response_id) of the authorization |
| amount | transactions.transaction_total |
Void
| Ecrypt API | VRIO |
|---|---|
| transaction_id | The Gateway Response ID (gateway_response_id) of the original transaction |
Refund
| Ecrypt API | VRIO |
|---|---|
| transaction_id | The Gateway Response ID (gateway_response_id) of the original transaction |
| amount | transactions.transaction_total |
Optional Data Mapping
Card Tokenization
If Store cards in the Ecrypt vault is checked, after a successful payment Vrio will create an Ecrypt customer and add the approved transaction's card to that customer's wallet.
Customer
| Ecrypt API | VRIO |
|---|---|
| first_name | customers_address.billing_fname |
| last_name | customers_address.billing_lname |
| merchant_identifier | **VRIO-**customers.customer_id |
| email_address | customers.email |
| phone_number | customers_address.billing_telephone |
Wallet
| Ecrypt API | VRIO |
|---|---|
| transaction_id | The Gateway Response ID (gateway_response_id) of the approved transaction |
| default | true |
| billing_address.name | billing_fname + billing_lname |
| billing_address.line1 | customers_address.billing_address1 |
| billing_address.line2 | customers_address.billing_address2 |
| billing_address.city | customers_address.billing_city |
| billing_address.state | customers_address.billing_state |
| billing_address.postal_code | customers_address.billing_zipcode |
| billing_address.country | customers_address.billing_country |
The resulting identifiers are stored in the format: {ecrypt_customer_id}|{wallet_id}
Response Data Mapping
Below is a table that shows how Vrio maps data from the Ecrypt API response.
| Ecrypt API | VRIO |
|---|---|
| 100 (success) / 200 (decline) | response_code |
| transaction_id | gateway_response_id |
| request_id | gateway_response_gateway_id |
| response_code | gateway_response_code |
| response_text | response |
| auth_code | gateway_auth_code |
| avs.code | gateway_response_avs |
| cvv.code | gateway_response_cvv |
| ecrypt_customer_id|wallet_id | customer_card_merchant_token |
Ecrypt returns validation failures in a separate format from declines. When the request itself is rejected — an invalid card number, for example — the response carries an error list rather than a response code, and Vrio maps it as follows.
| Ecrypt API | VRIO |
|---|---|
| errors[0].type | gateway_response_code |
| errors[0].message | response |
Testing
Note : Placing test orders with an Ecrypt test account or using Ecrypt test cards will not automatically set the order as a test in Vrio. Be sure to flag the order as a test using the is_test flag after the order is processed. For more details on placing test orders, click here.
Test Cards
| Region | Card Type | Number |
|---|---|---|
| US | Visa | 4111111111111111 |
| US | MasterCard | 5431111111111111 |
| US | Discover | 6011000991300009 |
| US | American Express | 341111111111111 |
| Canada | Visa | 4242424242424242 |
| Canada | MasterCard | 5454545454545454 |
| Canada | Discover | 6011000992927602 |
| Canada | American Express | 373599005095005 |
Declines are triggered by the amount, not the card
Ecrypt does not use a dedicated decline card. To force a decline in the test environment, send an amount below $1.00 on a US account, or exactly $0.05 on a Canadian account. The maximum amount accepted in the test environment is $11.00.
To trigger an address match, use 888 as the address and 77777 as the postal code. To trigger a card security code match, use 999 as the CVV. An invalid card number returns a validation error rather than a decline.
FAQ
Q: My renewal is sending the full card details instead of using the stored card. Why?
A: Either Store cards in the Ecrypt vault is not checked on the merchant, or the card could not be stored when the initial transaction was processed. Storing the card is deliberately kept separate from taking the payment, so a failure to store it does not decline the transaction — the renewal falls back to sending the card details, which Ecrypt accepts. Check the initial transaction's response data to see whether the card was stored.
Q: My test transaction keeps declining and I do not know why.
A: Ecrypt triggers test declines by amount rather than by card number. Any amount below $1.00 will decline on a US account. Check the amount on the offer before assuming the card or the credentials are at fault.
Q: Does Ecrypt support 3D Secure?
A: No. Ecrypt does not offer 3D Secure and does not accept authentication values from a third-party provider. If 3D Secure is a requirement, use a gateway that supports it.
Q: Which endpoint should I use, Ecrypt or Preferred Payments?
A: Both serve the same API and the same account. Use whichever address the merchant was boarded on — if you are unsure, leave Use Preferred Payments endpoint unchecked.
Updated about 2 hours ago
