Point-of-sale icon

Promotional financing

Offer customer financing through Synchrony Financial on in-store purchases.

Promotional financing enables customers to pay by taking out a loan that offers deferred interest or 0% interest during a promotional period. This makes it easier for customers to make big purchases.

The customer makes monthly payments to the financing company as with a regular loan, but without paying interest. The minimum required monthly payment may not be enough to pay off the loan when the promotional period ends. If there is an unpaid balance by the end of the promotional period, the customer needs to make further monthly payments and start paying interest. The Annual Percentage Rate (APR) in that case differs per customer and can be calculated from the start of the promotional period (deferred interest) or from the end of the promotional period.

Requirements

When using Adyen payment terminals, you can offer your customers promotional financing through Synchrony.

You need to:

  • Have a Terminal API integration.
  • Determine together with Synchrony what promo type and financing code values to use in your requests.
    • The promo type represents the APR for when the promo period ends and there is a balance left on the loan.
    • The financing code represents the duration of the promo period, which is related to the transaction amount.
  • Inform the customer of the terms and conditions of the financing offer.

The customer needs to:

  • Have a Synchrony card.
  • Accept the terms and conditions of the financing offer.

How it works

  1. You send a card acquisition request with a promo financing flag.
  2. We pass on your request to Synchrony.
  3. You receive a card acquisition response with the offer from Synchrony.
  4. You send a confirmation input request with the details of the offer so the customer can accept or decline the offer on the terminal.
  5. If the customer accepts the offer, you send a payment request with a promo financing confirm flag.
  6. We inform Synchrony that the offer has been accepted.
  7. You get paid in full within a few days.

Step 1: Get a promo financing offer

To check with Synchrony if they can offer your customer promo financing, you need to send a card acquisition request with promo financing data in SaleToAcquirerData.

  1. Prepare the SaleToAcquirerData value 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.

    1. Create a JSON object with the following parameters:

      • synchrony.promo.financing: set to true
      • synchrony.promo.type: set to a value agreed upon between you and Synchrony, representing the APR. For example 0201.
    2. Convert the JSON object to Base64.

  2. Make a card acquisition request specifying:

    • MessageHeader: the standard SaleToPOIRequest.MessageHeader object. Specify:

      Parameter Required Description
      ProtocolVersion -white_check_mark- 3.0
      MessageClass -white_check_mark- Service
      MessageCategory -white_check_mark- CardAcquisition
      MessageType -white_check_mark- Request
      ServiceID -white_check_mark- 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 -white_check_mark- Your unique ID for the POS system component to send this request from.
      POIID -white_check_mark- The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
    • CardAcquisitionRequest: the request body. Specify:

      Parameter Required Description
      SaleData.SaleTransactionID -white_check_mark- 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.SaleToAcquirerData The value you prepared in the previous step, either the Base64-encoded string or the key-value pairs string.
      CardAcquisitionTransaction -white_check_mark- 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 customer presented a Synchrony card, we send the promo financing request to Synchrony.

  3. In the CardAcquisitionResponse, check the following fields.

    Parameter Description
    POIData.POITransactionID Keep the TimeStamp and TransactionID, because you need these card acquisition details in your payment request.
    PaymentInstrumentData The PaymentBrand indicates if the customer used a Synchrony card, by showing a value like synchrony_cbcc.
    Response.AdditionalResponse If synchrony.promo.apr is 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.
  4. Decide on the next step:

    • If the card type is not eligible for promo financing by Synchrony (because it is not a Synchrony card), go to Step 3 to make the payment.
    • If the the card is eligible but Synchrony didn't offer financing, go to Step 3 to make the payment.
    • If Synchrony offered financing, go to Step 2 to ask the customer for their 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 customer to review the offer and indicate if they accept it. The text shown to the customer 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 customer review and accept the offer on the payment terminal:

  1. Make a Confirmation input request specifying:

    • MessageHeader: the standard SaleToPOIRequest.MessageHeader object. Specify:

      Parameter Required Description
      ProtocolVersion -white_check_mark- 3.0
      MessageClass -white_check_mark- Device
      MessageCategory -white_check_mark- Input
      MessageType -white_check_mark- Request
      ServiceID -white_check_mark- 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 -white_check_mark- Your unique ID for the system where you send this request from.
      POIID -white_check_mark- The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
    • InputRequest.DisplayOutput to define what is shown on the terminal:

      Parameter Description
      Device CustomerDisplay
      InfoQualify Display
      OutputContent.OutputFormat Text
      OutputContent.PredefinedContent.ReferenceID GetConfirmation
      OutputContent.OutputText An array of four Text fields containing your own text to show on the terminal:
      1. The title. On a portrait display, this is limited to about 20 characters.
      2. Additional text which can be long. Use \n to add a line break.
      3. The label for the "Decline" button on the left.
      4. The label for the "Accept" button on the right.
    • InputRequest.InputData to handle the user input:

      Parameter Description
      Device CustomerInput
      InfoQualify Input
      InputCommand GetConfirmation
      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.

  2. Wait for the customer to read the text and provide their answer.

  3. 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.Response has AdditionalResponse: message=Screen%20timeout, Result: Failure, and ErrorCondition: 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.Response has AdditionalResponse: message=A%20higher%20priority%20request%20has%20been%20received, Result: Failure, and ErrorCondition: Busy.

Step 3: Make a payment

The final step is to make a payment request with a reference to the card acquisition. If the customer accepted the promo financing offer, the request must include promo financing confirmation data in SaleToAcquirerData. If the customer didn't accept or if the purchase didn't qualify for promo financing, you omit this data.

Proceed as follows:

  1. If the customer accepted the financing offer, prepare the SaleToAcquirerData value 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.

    1. Create a JSON object with the following parameters:

      • synchrony.promo.financingConfirm: set to true
      • synchrony.promo.financingCode: set to a value determined between you and Synchrony. This value represents the duration of the promo period and is based on the transaction amount. For example, you and Synchrony agreed that if the amount is less than 100 USD, the promo period is 6 months and the financing code is 1.
    2. Convert the JSON object to Base64.

  2. Make a payment request specifying:

    • MessageHeader: the standard SaleToPOIRequest.MessageHeader object. Specify:

      Parameter Required Description
      ProtocolVersion -white_check_mark- 3.0
      MessageClass -white_check_mark- Service
      MessageCategory -white_check_mark- Payment
      MessageType -white_check_mark- Request
      ServiceID -white_check_mark- 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 -white_check_mark- Your unique ID for the POS system component to send this request from.
      POIID -white_check_mark- The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
    • PaymentRequest: the request body. Specify:

      Parameter Required Description
      SaleData.SaleTransactionID -white_check_mark- 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.SaleToAcquirerData

      For 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 -white_check_mark- An object with:
      • Currency: the transaction currency.
      • RequestedAmount: the final transaction amount.
      PaymentData.CardAcquisitionReference -white_check_mark- An object referring to the card acquisition:
      • TimeStamp: The time stamp returned in the POIData.POITransactionID of the card acquisition response.
      • TransactionID: the transaction ID returned in the POIData.POITransactionID of the card acquisition response.
  3. In the PaymentResponse, check the Response.AdditionalResponse to see if promo financing was offered:

    • If synchrony.promo.apr is 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 the AdditionalResponse either as a Base64 string that you need to decode to get a JSON object, or as a string of form-encoded key-value pairs.

We inform Synchrony that their financing offer was accepted.