To initiate a payment with a promo financing offer, you need the shopper's Synchrony account details. Here we describe how to use the shopper Synchrony card to initiate the payment.
Requirements
Before you begin, take into account the following requirements and preparations.
| Requirement | Description |
|---|---|
| Integration type | Terminal API integration with Adyen-provided payment terminals. |
| Limitations | The shopper needs to:
|
| Setup steps | Before you begin, determine together with Synchrony:
|
How it works
- You send a card acquisition request with a promo financing flag.
- We pass on your request to Synchrony.
- You receive a card acquisition response with the offer from Synchrony.
- You send a confirmation input request with the details of the offer so the shopper can accept or decline the offer on the terminal.
- If the shopper accepts the offer, you send a payment request with a promo financing confirm flag.
- We inform Synchrony that the offer has been accepted.
- You get paid in full within a few days.
1. Use Synchrony card to get a promo financing offer
To check with Synchrony if they can offer your shopper promo financing, you need to send a card acquisition request with promo financing data in SaleToAcquirerData.
-
Prepare the
SaleToAcquirerDatavalue either as a JSON object converted to a Base64-encoded string, or as a string of key-value pairs using ampersand (&) as a separator. For instructions, select the tabs. -
Make a card acquisition request specifying:
-
The standard
SaleToPOIRequest.MessageHeaderobject, withMessageClassset to Service andMessageCategoryset to CardAcquisition.Parameter Required Description ProtocolVersion
3.0 MessageClass
Service MessageCategory
CardAcquisition MessageType
Request ServiceID
Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal ( POIID) being used.SaleID
Your unique ID for the POS system component to send this request from. POIID
The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
-
The
CardAcquisitionRequestobject, including:Parameter Required Description SaleData.SaleTransactionID
An object with: TransactionID: your reference to identify a payment. We recommend using a unique value per payment.TimeStamp: date and time of the request in UTC format.PaymentType: either omit this parameter or specify Normal.
SaleData.SaleToAcquirerDataThe value you prepared in the previous step, either the Base64-encoded string or the key-value pairs string. CardAcquisitionTransaction
An object with TotalAmount: the transaction amount, or a placeholder amount. You can update the amount later in the payment request.PaymentType: either omit this parameter or specify Normal.
If the shopper presented a Synchrony card, we send the promo financing request to Synchrony.
-
-
In the
CardAcquisitionResponse, check the following fields.Parameter Description POIData.POITransactionIDKeep the TimeStampandTransactionID, because you need these card acquisition details in your payment request.PaymentInstrumentDataThe PaymentBrandindicates if the shopper used a Synchrony card, by showing a value like synchrony_cbcc or synchrony_plcc.Response.AdditionalResponseIf synchrony.promo.apris included, this means Synchrony decided to offer promo financing. The value of this field, for example 30.74, indicates the APR after the promo period ends.
Note that you receive either a Base64 string that you need to decode to get a JSON object, or a string of form-encoded key-value pairs.If
synchrony.promo.apris included in theAdditionalResponseof the card acquisition response, make sure to save theTimeStampandTransactionID. You need these card acquisition details in your payment request.- If the card type is not eligible for promo financing by Synchrony (because it is not a Synchrony card), skip the next step and make the payment.
- If the card is eligible but Synchrony didn't offer financing, skip the next step and make the payment.
- If Synchrony offered financing, go to Ask the shopper's consent to ask the shopper for their consent.
2. Ask the shopper's consent
Skip this step if the card acquisition response shows it is not possible to offer promo financing.
After receiving a financing offer with an APR in the card acquisition response, you must enable the shopper to review the offer and indicate if they accept it. The text shown to the shopper must include the APR and the duration of the promotional period. The duration is related to the transaction amount and agreed on beforehand between you and Synchrony.
For example:
Your purchase qualifies for the following promotion:
No interest if paid in full within X months.
If the Promotional Balance is not paid in full within X months, interest will be imposed from the transaction date at an APR of XX.XX%.
Minimum monthly payments are required.
Or if the APR is variable, the text should mention that and include what the variable rate is based on.
To let the shopper review and accept the offer on the payment terminal:
-
Make a Confirmation input request specifying:
-
The standard
SaleToPOIRequest.MessageHeaderobject, withMessageClassset to Device andMessageCategoryset to Input.Parameter Required Description ProtocolVersion
3.0 MessageClass
Device MessageCategory
Input MessageType
Request ServiceID
Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal ( POIID) being used.SaleID
Your unique ID for the system where you send this request from. POIID
The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
-
The InputRequest.DisplayOutput object to define what is shown on the terminal:
Parameter Description DeviceCustomerDisplay InfoQualifyDisplay OutputContent.OutputFormatText OutputContent.PredefinedContent.ReferenceIDGetConfirmation OutputContent.OutputTextAn array of four Textfields containing your own text to show on the terminal:- The title. On a portrait display, this is limited to about 20 characters.
- Additional text which can be long. Use
\nto add a line break. - The label for the "Decline" button on the left.
- The label for the "Accept" button on the right.
-
The InputRequest.InputData object to handle the user input:
Parameter Description DeviceCustomerInput InfoQualifyInput InputCommandGetConfirmation MaxInputTime(Integer) Time-out in seconds. This is the time that the user gets to finish their input.
The following example asks the shopper to accept or decline a finance offer.
-
-
Wait for the shopper to read the text and provide their answer.
-
When you receive the
InputResponse, check if the shopper accepted or declined the offer:Input.ConfirmedFlag: true indicates the shopper accepted the offer by selecting the right button on the display ("Accept") or the Confirm key
on the keypad.Input.ConfirmedFlag: false indicates the shopper declined the offer by selecting the left button on the display ("Decline") or the Cancel key
on the keypad.
-
If the input request times out, the
InputResult.ResponsehasAdditionalResponse: message=Screen%20timeout,Result: Failure, andErrorCondition: Cancel. -
If you make a payment request while the input request is waiting for input on the terminal, the payment request overrides the input request. The
InputResult.ResponsehasAdditionalResponse: message=A%20higher%20priority%20request%20has%20been%20received,Result: Failure, andErrorCondition: Busy.
3. Make a payment
The final step is to make a payment request with a reference to the card acquisition. If the shopper accepted the promo financing offer, the request must include promo financing confirmation data in SaleToAcquirerData. If the shopper didn't accept or if the purchase didn't qualify for promo financing, you omit this data.
Proceed as follows:
-
If the shopper accepted the financing offer, prepare the
SaleToAcquirerDatavalue either as a JSON object converted to a Base64-encoded string, or as a string of key-value pairs using ampersand (&) as a separator. For instructions, select the tabs. -
Make a payment request specifying:
-
The standard
SaleToPOIRequest.MessageHeaderobject, withMessageClassset to Service andMessageCategoryset to Payment.Parameter Required Description ProtocolVersion
3.0 MessageClass
Service MessageCategory
Payment MessageType
Request ServiceID
Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal ( POIID) being used.SaleID
Your unique ID for the POS system component to send this request from. POIID
The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
-
The PaymentRequest object with:
Parameter Required Description SaleData.SaleTransactionID
An object with: TransactionID: your reference to identify a payment. We recommend using a unique value per payment.TimeStamp: date and time of the request in UTC format.
SaleData.SaleToAcquirerDataFor a payment with financing, provide the value you prepared in the previous step, either the Base64-encoded string or the key-value pairs string.
For a payment without financing, omit the promo financing confirmation data.
PaymentTransaction.AmountsReq
An object with: Currency: the transaction currency.RequestedAmount: the final transaction amount.
PaymentData.CardAcquisitionReference
An object referring to the card acquisition: TimeStamp: The time stamp returned in thePOIData.POITransactionIDof the card acquisition response.TransactionID: the transaction ID returned in thePOIData.POITransactionIDof the card acquisition response.
-
-
In the
PaymentResponse, check theResponse.AdditionalResponseto see if promo financing was offered:- If
synchrony.promo.apris included, this means Synchrony decided to accept the promo financing request. The value of this field, for example 30.74, indicates the APR after the promo period ends.
Note that you receive the
AdditionalResponseeither as a Base64 string that you need to decode to get a JSON object, or as a string of form-encoded key-value pairs. - If
We inform Synchrony that their financing offer was accepted.