Skip to main content
To test Card payments in general, Yuno provides the Yuno Test Payment Gateway. It works as a connection, however, it is available only in the sandbox environment.

Connecting with Yuno

General information

Integration configuration

Production environment

Set up the Yuno Test Payment Gateway

  1. Complete the Test Payment Gateway Integration configuration.
  2. After establishing the connection, you must designate the Yuno Test Payment Gateway as your card payment provider in your routing section. Access Routing on the Yuno Dashboard, select Not published, find the Card option, and click Set Up.
  1. Create a new route for Card. If you are unsure how to create it, check the Configure dynamic routing.
    1. On the Routing dashboard, add conditions to trigger the card payment. You can use card brand or country as trigger conditions, for example.
    2. For the created condition, add the Yuno Test Payment Gateway.
    3. For the All other payments options, select the Cancel option. The below image presents an example of a routing configuration where the card brand condition was used, accepting payments with Visa and Mastercard brands.
  1. Now you need to make the cards available for testing. Access Checkout builder on the Yuno Dashboard. Activate the toggle button for Card and publish the checkout using the Publish button.
Use the Create payment guide to learn how to test card payments.

Test card payments with Yuno Testing Gateway

On this page, you will find a walk-through guide on creating a card payment using the Yuno Testing Gateway. Yuno Testing Gateway is a Yuno solution to test card payment in general. It works as a connection. However, it is only available in the sandbox environment.

Requirements

Before starting following the steps described in this guide, you need to:

Steps summary

The create payment process normally requires finishing the four steps listed below.
  1. Create a customer
  2. Create a checkout session
  3. Create a One-Time Token
  4. Create the payment

Create a payment

1. Create a customer

Use the Create Customer to register the customer info. You will need to provide personal customer information. In addition, you also need to supply the merchant_customer_id, a unique identifier for the customer used on your system.
Customer Complementary InformationWhen creating a Customer, certain information is not required but can improve the user’s payment experience if provided. Phone, billing address, and shipping address are examples of non-mandatory data you can provide. If you add optional information, be aware of the required mandatory fields.
At the end of the create a customer process, you will receive an id, which identifies the user within the Yuno system. Use the id to initialize the checkout. If you are creating a payment for an existing user who was previously created and already has an id, you can skip this step.

2. Create a checkout session

With a customer registered, you can create a checkout session. The checkout is when the customer finalizes their order and proceeds to pay for the products or services they wish to acquire. Therefore, at this stage, you will provide information regarding the payment amount and the location where it is being created.
Route Conditions FilteringWhen creating the route, you can define conditions that work as filters. If you have used country as a condition, check if the provided country when creating the checkout session is on the condition list. Otherwise, the card payment may not be processed by the Yuno Testing Gateway.
Use the Create Checkout Session endpoint. Notice that the customer_id required to perform the request is the id you received when creating the customer in Step 1. From the request response to the Create Checkout Session endpoint, you will receive the checkout_session information. It will be used to create the one-time token (OTT) and the payment on the next steps.

3. Create a one-time token (OTT)

An OTT is a unique identifier Yuno generates to protect your customer privacy and security. It serves as an identifier for payment details and prevents sensitive data from being stored on your servers. Therefore, you can use OTTs to make it simple for your customers to repeat payments without re-entering their payment information, making the process more secure and convenient. You will always get the OTT from the Yuno SDK on your production application. However, to make it easier for you to test the payment creation process, Yuno provides the Create OTT endpoint. You will need to provide the checkout_session received in Step 2 and define the payment type as CARD through the type parameter. In the response, you will receive the one-time-token, which you will use to create the payment.

4. Create a payment

You will create a payment using the Create Payment endpoint. Below you find a deeper description of how to create a payment.

4.1 Provide the required attributes

Provide customer-related information, including the checkout_session from Step 2 through checkout.session and customer_payer object that contains the id from Step 1. Certain objects are not mandatory when creating a payment. However, if you provide this information, the user’s payment experience will be enhanced. Be aware of the mandatory fields if you wish to provide this information.

4.2 Choose the capture type

Yuno provides two options for payment capture:
  • Single-step: Authorization and capture are performed simultaneously. You only need to create the payment. The authorization and capture are performed automatically. For the single-step option, you need to send the capture attribute as true on the request.
  • Two steps: Authorization and capture are performed at different moments. After creating the payment, you will need to perform an authorization request and a capture request. If you wish to process the payment in Two Steps, send capture as false and after creating the payment, use the Authorize Payment and the Capture Authorization to complete the process.

4.3 Define the payment workflow

When creating the payment, you need to inform which integration from Yuno you are using. When creating a payment, you must inform it through the workflow attribute, which can be:
  • CHECKOUT: If you are using the Yuno SDK to create the payment.
  • DIRECT: If you are using a back-to-back integration. To use this workflow, you need to be PCI compliant.
  • REDIRECT: If you are using a back-to-back integration and provider redirection.

4.4 Provide the payment method information

Inform the payment method information through the object payment_method. Here, you will provide the one-time-token through the attribute token and select the payment type equal to CARD, the one informed in Step 3, based on the Payment type list. In addition, you need to add the card information on the object detail.card. You can use the payment description or specific card data to get the desired result when you test payment with Yuno Test Payment Gateway. The following sections describe in detail each approach.
Yuno System ProcessYuno system follows a sequential process, initially examining card data and subsequently evaluating the provided description. Consequently, if there is a disparity in the status indicated by the card data and the description for a testing payment, Yuno will prioritize and reflect the status associated with the card data.
4.4.1 - Payment Description
To get the desired payment result using the payment description, you need to define the expected result as the description of the payment you create. For example, if you are testing a payment and expect a successful result, the payment description should be “SUCCEEDED”. You will find all available options in the Transaction Codes section.
4.4.2 - Card detail
Another option to get the expected payment results is to use one of the testing cards provided by Yuno. In the tables below, you find a list of cards and their data details to use when using the Yuno Testing Gateway. The Transaction Response Code column defines the returned payment status when you use the corresponding card.
NumberExpiration DateSecurity CodeCardholder NameTransaction Response Code
450799000000000211/28123John DoeSUCCEEDED
450799000000001011/28123John DoeINSUFFICIENT_FUNDS
450799000000002811/28123John DoeDECLINED_BY_BANK
450799000000003611/28123John DoeDO_NOT_HONOR
450799000000004411/28123John DoeINVALID_SECURITY_CODE
450799000000005111/28123John DoeINVALID_CARD_DATA
450799000000006911/28123John DoeREPORTED_STOLEN
450799000000007711/28123John DoeERROR
NumberExpiration DateSecurity CodeCardholder NameTransaction Response Code
525244000000000211/28123John DoeSUCCEEDED
525244000000001011/28123John DoeINSUFFICIENT_FUNDS
525244000000002811/28123John DoeDECLINED_BY_BANK
525244000000003611/28123John DoeDO_NOT_HONOR
525244000000004411/28123John DoeINVALID_SECURITY_CODE
525244000000005111/28123John DoeINVALID_CARD_DATA
525244000000006911/28123John DoeREPORTED_STOLEN
525244000000007711/28123John DoeERROR
NumberExpiration DateSecurity CodeCardholder NameTransaction Response Code
37000000000000211/281234John DoeSUCCEEDED
37000000000001011/281234John DoeINSUFFICIENT_FUNDS
37000000000002811/281234John DoeDECLINED_BY_BANK
37000000000003611/281234John DoeDO_NOT_HONOR
37000000000004411/281234John DoeINVALID_SECURITY_CODE
37000000000005111/281234John DoeINVALID_CARD_DATA
37000000000006911/281234John DoeREPORTED_STOLEN
37000000000007711/281234John DoeERROR
NumberExpiration DateSecurity CodeCardholder NameTransaction Response Code
364716600000000211/28123John DoeSUCCEEDED
364716600000001011/28123John DoeINSUFFICIENT_FUNDS
364716600000002811/28123John DoeDECLINED_BY_BANK
364716600000003611/28123John DoeDO_NOT_HONOR
364716600000004411/28123John DoeINVALID_SECURITY_CODE
364716600000005111/28123John DoeINVALID_CARD_DATA
364716600000006911/28123John DoeREPORTED_STOLEN
364716600000007711/28123John DoeERROR
NumberExpiration DateSecurity CodeCardholder NameTransaction Response Code
113900000000000211/28123John DoeSUCCEEDED
113900000000001011/28123John DoeINSUFFICIENT_FUNDS
113900000000002811/28123John DoeDECLINED_BY_BANK
113900000000003611/28123John DoeDO_NOT_HONOR
113900000000004411/28123John DoeINVALID_SECURITY_CODE
113900000000005111/28123John DoeINVALID_CARD_DATA
113900000000006911/28123John DoeREPORTED_STOLEN
113900000000007711/28123John DoeERROR

4.4.3 - 3DS Test Cards

Use these cards and OTP codes to test 3DS flows through our preview environment using a Netcetera Demo Merchant (NDM) Simulator, which is configured to mock a Directory Server and/or ACS with predefined schemes and testing card numbers. It does not reach external test DS/ACS, it only helps complete 3DS flows for testing purposes.
Card NumberExpected Response 3DS 2.xExpected Response 3DS 1.x DS (VERes)Expected Response 3DS 1.x ACS (PARes)
341502098634895AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
348638267931507BROWSER_CHALLENGEENROLLED_YTRANSACTION_CHALLENGE_OTP
345695399207589NOT_AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
349531373081938APPLICATION_CHALLENGEENROLLED_YTRANSACTION_STATUS_N
342316317472410APPLICATION_CHALLENGE_SDK_TRANS_ID_INVALID_FORMATENROLLED_YTRANSACTION_STATUS_N
347899129656655AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
345197771649926NOT_AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
372021106351394BROWSER_CHALLENGEENROLLED_YTRANSACTION_CHALLENGE_OTP
3734123412340000ENROLLED_YTRANSACTION_STATUS_N
3434567891111005ENROLLED_YTRANSACTION_CHALLENGE_OTP
3794521996036850ENROLLED_YTRANSACTION_CHALLENGE_OTP
Card NumberExpected Response 3DS 2.xExpected Response 3DS 1.x DS (VERes)Expected Response 3DS 1.x ACS (PARes)
5333259155643223AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_Y
5306889942833340BROWSER_CHALLENGEENROLLED_YTRANSACTION_CHALLENGE_OTP
5328720384582224NOT_AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
5267648608924299APPLICATION_CHALLENGEENROLLED_YTRANSACTION_STATUS_N
5187434643593002APPLICATION_CHALLENGE_SDK_TRANS_ID_INVALID_FORMATENROLLED_YTRANSACTION_STATUS_N
5512459816707531AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_Y
5487971631330522NOT_AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
5424184049821670BROWSER_CHALLENGEENROLLED_YTRANSACTION_CHALLENGE_OTP
5204240438720050123BROWSER_CHALLENGEENROLLED_YTRANSACTION_CHALLENGE_OTP
5250548692069390ENROLLED_YTRANSACTION_CHALLENGE_OTP
5641523891636636ENROLLED_YTRANSACTION_CHALLENGE_OTP
Card NumberExpected Response 3DS 2.xExpected Response 3DS 1.x DS (VERes)Expected Response 3DS 1.x ACS (PARes)
4556557955726624AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_Y
4916994064252017BROWSER_CHALLENGEENROLLED_YTRANSACTION_CHALLENGE_OTP
4556104160382032NOT_AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
4024007189449340APPLICATION_CHALLENGEENROLLED_YTRANSACTION_STATUS_N
4024007179872394APPLICATION_CHALLENGE_SDK_TRANS_ID_INVALID_FORMATENROLLED_YTRANSACTION_STATUS_N
4929251897047956AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_Y
4716429323842524NOT_AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
4234123412340003ENROLLED_YTRANSACTION_CHALLENGE_OTP
4604633194219929ENROLLED_YTRANSACTION_CHALLENGE_OTP
4485436455354151BROWSER_FRICTIONLESS_MISSING_DS_TRANS_ID
4556962659911995APPLICATION_FRICTIONLESS_MISSING_SDK_TRANS_IDENROLLED_YTRANSACTION_STATUS_N
4539837572943550BROWSER_FRICTIONLESS_MISSING_DS_TRANS_IDENROLLED_YTRANSACTION_STATUS_N
4024007176265022BROWSER_CHALLENGE_MISSING_ACS_URLENROLLED_YTRANSACTION_STATUS_N
4716125059847899THREE_RIENROLLED_YTRANSACTION_STATUS_N
4556362626719763PROTOCOL_ERRORENROLLED_YTRANSACTION_STATUS_N
4234123412340000ENROLLED_YTRANSACTION_STATUS_Y
4234123412340006ENROLLED_YTRANSACTION_STATUS_U
4234123412340007ENROLLED_YTRANSACTION_STATUS_A
4234123412340001ENROLLED_N
4234123412340002NOT ENROLLED (VeRes is error 404 “Card account number not found in card ranges from Directory Server”)ENROLLED_N (NOT APPLICABLE)
4234123412340100MISSING_ROOT
4234123412340101MISSING_MESSAGE
4234123412340102INVALID_MESSAGE
4234123412340103MISSING_VERSION
4234123412340104ILLEGAL_VERSION
4234123412340105MISSING_URL
4234123412340106ILLEGAL_URL
4234123412340107MISSING_ENROLLED
4234123412340108ILLEGAL_ENROLLED
4234123412340109ILLEGAL_EXTENSION
4234123412340200ERROR_CUSTOM
4234123412340201ERROR_1
4234123412340202ERROR_2
4234123412340203ERROR_3
4234123412340204ERROR_4
4234123412340205ERROR_5
4234123412340206ERROR_6
4234123412340220ERROR_CUSTOM_WITH_DIFFERENT_MESSAGE_ID
4234123412340250ERROR_50
4234123412340251ERROR_51
4234123412340252ERROR_52
4234123412340253ERROR_53
4234123412340258ERROR_58
4234123412340298ERROR_98
4234123412340299ERROR_99
4234123412340300IREQ_CUSTOM
4234123412340301IREQ_ENROLLED_Y
4234123412340350IREQ_50
4234123412340351IREQ_51
4234123412340352IREQ_52
4234123412340353IREQ_53
4234123412340354IREQ_54
4234123412340355IREQ_55
4234123412340356IREQ_56
4234123412340358IREQ_58
4234123412340398IREQ_98
4234123412340399IREQ_99
4234123412340400UNSUPPORTED_VERSION
4234123412340401UNRECOGNIZED_CRITICAL_EXTENSION
4234123412340402SERVER_ERROR
4234123412340403TIMEOUT
Card NumberExpected Response 3DS 2.xExpected Response 3DS 1.x DS (VERes)Expected Response 3DS 1.x ACS (PARes)
3095000000000000AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_Y
3095000000000001BROWSER_CHALLENGEENROLLED_YTRANSACTION_CHALLENGE_OTP
3095000000000002NOT_AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
3095000000000005AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_Y
3095000000000006NOT_AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
Card NumberExpected Response 3DS 2.xExpected Response 3DS 1.x DS (VERes)Expected Response 3DS 1.x ACS (PARes)
3528000000000000AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_Y
3528000000000001BROWSER_CHALLENGEENROLLED_YTRANSACTION_CHALLENGE_OTP
3528000000000002NOT_AUTHENTICATED_APPLICATION_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
3528000000000005AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_Y
3528000000000006NOT_AUTHENTICATED_BROWSER_FRICTIONLESSENROLLED_YTRANSACTION_STATUS_N
Start rangeEnd rangeScheme
340000000000000349999999999999Amex
370000000000000379999999999999Amex
22210000000000002223000000000022Mastercard
22230000000000242720999999999999Mastercard
51000000000000005111111111111117Mastercard
51111111111111195599999999999999Mastercard
40000000000000004111110000000210Visa
41111100000002124234123412339999Visa
42341234123500004999999999999999Visa
30000000000000003099999999999999Diners
35280000000000003589009999999999JCB
OTP CodeTransaction StatusTransaction Status reasonECIauthenticationValue
1234Y/01JAmi21makAifmwqo2120cjq1AAA=
1111N0101/
2222R0101/
3333U0101/
4444A0101Qm181okmdyqh6yQmYuq1890QAAA=
The same OTP codes are valid for Visa, Mastercard and Amex scenarios.
OTP CodeTransaction StatusCAVVCAVV AlgorithmECI
1234YVGhpcyBpcyBhIHRlc3QgYmFzZTY=705
1111N///

5. Check the payment status

After performing the request to the Create Payment, you can check the payment status by analyzing the status and sub_status from the response. Check the Payment Status page to see all the options you can receive in response to the payment creation request. Depending on the processor and payment method, the status may take some time to update. Therefore, you may need to use endpoints to recover the payment status. To perform this task, you can use the Retrieve Payment by ID or Retrieve Payment by merchant_order_id endpoints. Another option is to use webhooks to receive notifications after each event. Yuno recommends you use webhooks to monitor asynchronous payments better. Check the Webhooks guide to learn how to configure the webhooks solution provided by Yuno.