Synchrony

Board merchants to Synchrony's consumer financing program and track each enrollment through approval.

Overview

Synchrony offers consumer financing programs that merchants make available to their customers. In Preczn, Synchrony is a boarding-only connection: Preczn submits the merchant's enrollment to Synchrony and tracks it through approval, but loans and payments don't route through Preczn. Boarding a merchant takes three steps:

  1. Configure the connection. Add your Synchrony credentials once, at the platform level.
  2. Collect the merchant's data. Collect business, mailing address, owner, and banking details, a campaign code, and the merchant's acceptance of Synchrony's terms.
  3. Board the merchant. Preczn submits the enrollment, then checks Synchrony for status changes once a day and sends you a webhook on each change.

For general boarding, see Merchant Onboarding, Onboarding Data Requirements, and Boarding Forms.

Configuring the Connection

In the Dashboard, go to Connections → Add Connection and select Synchrony. Synchrony supplies both values.

Dashboard fieldRequiredDescription
Client ID✅ YesThe client ID for Synchrony's enrollment API.
Client Secret✅ YesThe client secret for Synchrony's enrollment API.

Click Verify connection to check the credentials, then click Connect. Preczn checks the credentials by requesting an access token from Synchrony, in the test or live environment that matches the mode you're in. If Synchrony doesn't issue a token, Preczn doesn't save the connection.

ℹ️ Test and live credentials are different

Synchrony issues a separate credential set for each environment. Use your test credentials in Test mode and your live credentials in Live mode. See Live vs Test Mode.

Your merchants don't need Synchrony credentials of their own. The only merchant-level value is the campaign code.

Required Merchant Data

Preczn automatically creates a Default Synchrony Requirements template when you add the connection. Until a merchant meets every requirement, its Synchrony connection stays in Requirements, and missingRequiredData lists what's missing. For how requirements are evaluated, see Onboarding Data Requirements.

AreaWhat Synchrony requires
BusinessLegal name, DBA name, phone, tax ID, business address (street, city, state, postal code), date established, annual sale volume, and annual finance volume
Mailing addressStreet, city, state, postal code, and country. A second address line is optional.
OwnersFor every owner: first and last name, email, phone, SSN, and home address (street, city, state, postal code, country). One owner must be marked as the primary representative.
BankingRouting number and account number, with one account marked as the primary account
Campaign codeThe Synchrony campaign code for the merchant. See Campaign code.
Terms acceptanceThe date and IP address of the merchant's acceptance of Synchrony's terms. See Terms and conditions.

Synchrony doesn't take documents.

⚠️ The mailing address is required, even when it matches the business address

Synchrony requires a mailing address, and Preczn doesn't copy the business address into it. On the API, send it in the merchant's mailingAddress object. On a boarding form, the merchant enters it in the Mailing fields.

ℹ️ US businesses only

Synchrony enrolls US businesses. Phone numbers, states, and postal codes must be in US formats. See How Preczn sends your data.

Principal and funding account

Synchrony receives one owner and one bank account per merchant:

  • The principal is the owner marked as the primary representative (primaryRepresentative). If the merchant has only one owner, Preczn sends that owner. The requirements template still applies to every owner, so every owner needs the owner fields in the table above.
  • The funding account is the account marked as the primary account. If no account is marked, Preczn sends the first account.

Boarding form fields

If you board with a boarding form, turn on two fields in the form template. Synchrony requires both, and form templates hide them by default:

  • Annual Sale Volume
  • Annual Finance Revenue Volume

Form templates show the other fields Synchrony requires by default, including the Mailing address fields and the owner's home address, email, phone, and SSN. Keep them turned on. A hidden field can't be filled in, so the connection stays in Requirements.

Campaign Code

Synchrony issues a campaign code for each program and tier. Each merchant's Synchrony connection carries its own code, and Preczn sends it with the enrollment. Ask Synchrony which code applies to each merchant.

Set the code in one of these ways:

  • In the Dashboard, open the merchant's Synchrony connection and enter the Campaign Code.
  • Through the API, send connectionspecificRequirements.synchronyCampaignCode with Update Connection Details:
{
  "connectionspecificRequirements": {
    "synchronyCampaignCode": "YOUR_CAMPAIGN_CODE"
  }
}

The code can be up to 255 characters. Preczn trims leading and trailing spaces. To clear a stored code, send an empty string. Sending null, or leaving the field out, keeps the stored code.

Preczn doesn't check the code itself. Synchrony checks it when Preczn submits the enrollment and rejects an unrecognized code. The connection then moves to Error, and actionDescription shows Synchrony's message.

⚠️ Set the code before you board

Preczn submits the enrollment once. A code you change after the submission never reaches Synchrony. The Dashboard locks the Campaign Code after the enrollment is submitted.

Terms and Conditions

Preczn requires the merchant's acceptance of Synchrony's terms before it submits the enrollment. Preczn records the acceptance in two connection fields:

FieldDescription
connectionspecificRequirements.tosDateThe date and time the merchant accepted the terms
connectionspecificRequirements.tosIpThe IP address of the device the merchant accepted the terms from

A requirements template can't make these fields optional.

We recommend boarding Synchrony merchants with a boarding form, because the form shows Synchrony's terms and records the acceptance for you.

On a boarding form, the form adds a Synchrony Terms & Conditions step that shows Synchrony's terms. The merchant scrolls to the end of the terms, checks the acceptance box, and enters the first and last name of the person signing. Preczn records tosDate and tosIp when the merchant submits the step. The step appears when the form shows terms (displayTos). In a multi-connection form, it appears under Synchrony.

Without a boarding form, send tosDate and tosIp with Update Connection Details. This is useful for programmatic testing, where no merchant goes through a form.

⚠️ Building your own form? Get the terms text from Synchrony

If you build your own form to collect Synchrony merchants, coordinate with Synchrony on the terms text your form must show before you record tosDate and tosIp.

How Preczn Sends Your Data

Preczn adjusts some values to meet Synchrony's rules. The adjustments are silent, so check the enrollment with Synchrony if a value looks different from what you sent.

  • Some characters are removed from names, street addresses, and cities, because Synchrony rejects them: ~ ( ) ^ = { } [ ] ;. For example, Smith (East) Plumbing is sent as Smith East Plumbing.

  • The two street lines are joined into one line, separated by a space.

  • Long values are shortened to Synchrony's limits:

    ValueMaximum length
    Legal name120 characters
    DBA name255 characters
    Street address (both lines combined)76 characters
    City25 characters
    Owner first name, owner last name20 characters each
    Owner email80 characters
  • Postal codes are sent as five digits. A ZIP+4 code loses its last four digits.

  • Only the year is sent from the date established.

  • Annual sale volume is rounded to whole dollars and capped at 99,999,999. A higher value is sent as 99,999,999.

Some values fail the submission instead. Preczn doesn't send the enrollment, the connection moves to Error, and actionDescription starts with Synchrony enrollment data mapping failed: and names the field:

  • A business or owner phone number that isn't 10 US digits. A leading 1 is removed first, so +1 417 555 0100 is accepted.
  • A business, mailing, or owner state that isn't a valid 2-letter US state code.

After you fix the value, onboard the merchant again.

Boarding a Merchant

Start boarding with Onboard Merchant to Connection when the connection is Ready, or submit a boarding form that includes Synchrony. Boarding is asynchronous: the request returns right away, and Preczn submits the enrollment in the background.

sequenceDiagram
    participant V as Vertical SaaS Platform
    participant P as Preczn
    participant S as Synchrony

    V->>P: Onboard merchant (or submit boarding form)
    P->>S: Submit enrollment
    S-->>P: Enrollment created (enrollment ID)
    P->>P: Store enrollment ID, set status = Sent
    P-->>V: Merchant webhook (Sent)

    loop Once a day
        P->>S: Check enrollment status
        P->>P: Map to Preczn status
        P-->>V: Merchant webhook (on change)
    end

    S-->>P: Enrollment approved (merchant ID)
    P->>P: Store merchant ID, set status = Active
    P-->>V: Merchant webhook (Active)

ℹ️ Submission can take up to 90 seconds

The connection shows Queued until the submission finishes.

Preczn submits each enrollment once

Synchrony creates a new enrollment for every submission it accepts, and it doesn't detect duplicates. To avoid duplicates, Preczn submits an enrollment only while the connection has no enrollment ID. After Synchrony returns an ID, onboarding the merchant again does nothing.

Every failed submission moves the connection to Error with actionRequired set to true. What to do next depends on whether Synchrony returned an enrollment ID:

What happenedConnectionWhat to do
Preczn couldn't build the enrollmentError, no enrollment ID. actionDescription names the field.Fix the value, then onboard the merchant again.
Synchrony rejected the enrollmentError. actionDescription shows Synchrony's message.If the connection has no enrollment ID, fix the problem and onboard again. If it has one, Synchrony created an enrollment: contact Synchrony.
The submission timed out or Synchrony had a server errorError, no enrollment IDConfirm with Synchrony whether the enrollment exists before you onboard again. Onboarding again submits a new enrollment.

If Preczn can't get an access token from Synchrony, it retries the submission automatically.

How Preczn checks status

Synchrony doesn't send status updates to Preczn. Instead, Preczn asks Synchrony for the enrollment's status once a day, so a change at Synchrony can take up to a day to reach you.

Preczn checks a connection only while its status is Sent or Underwriting:

Connection statusDoes Preczn check Synchrony?
Sent, UnderwritingYes, once a day.
Active, Rejected, CancelledNo. These are final, and Preczn stops checking.
ErrorNo.

If a check fails, or Synchrony reports a stage Preczn doesn't recognize, the connection keeps its current status and Preczn checks again the next day.

Merchant Status

Each Synchrony connection moves through these Preczn statuses. When a status needs your attention, actionRequired is true and actionDescription explains why.

Preczn statusWhat it meansWhat to do
SentSynchrony created the enrollment. Preczn stores the Synchrony enrollment ID.Wait for Synchrony's review.
UnderwritingSynchrony is reviewing the enrollment. actionDescription shows Synchrony's current stage, for example Synchrony enrollment stage: Engaged.Wait. If the stage is On Hold, actionRequired is true: contact Synchrony.
ActiveSynchrony approved the enrollment. Preczn stores the Synchrony merchant ID when Synchrony provides one.None.
RejectedSynchrony declined the enrollment.Contact Synchrony for details.
CancelledThe enrollment was withdrawn or cancelled. actionDescription shows which, for example Synchrony enrollment stage: Withdrawn.None.
ErrorPreczn couldn't submit the enrollment, or Synchrony rejected it. actionDescription says why.See Preczn submits each enrollment once.

Synchrony IDs

Synchrony assigns two IDs, at different points in boarding. Preczn stores both on the merchant's Synchrony connection and returns them in connections[].connectionID, in API responses and merchant webhooks.

IDFieldWhen it appears
Enrollment IDconnectionID.applicationIdWhen Synchrony creates the enrollment and the status moves to Sent
Merchant IDconnectionID.midWhen Synchrony approves the enrollment and the status moves to Active

Give Synchrony the enrollment ID when you ask about an enrollment that's still in review.

Testing in the Sandbox

In Test mode, Preczn sends enrollments to Synchrony's test environment with your test credentials. Keep these points in mind:

  • Campaign codes can differ. Ask Synchrony which campaign codes work in its test environment. A live code can fail there with an unrecognized-code message.
  • Every submission creates an enrollment. Synchrony doesn't detect duplicates, in test or live.
  • Status changes depend on Synchrony. To test a status beyond Sent, share the enrollment ID with Synchrony and ask them to move the enrollment.
  • To submit again, reset the connection. In Test mode, open the merchant's Synchrony connection in the Dashboard and click Reset connection. The connection returns to Unconfigured and loses its enrollment ID, campaign code, and terms acceptance, so set those again before you onboard. Reset is available only in Test mode.

FAQ

Can I process loans or payments through Synchrony with Preczn?

No. Preczn boards merchants to Synchrony and tracks their enrollment, but Synchrony loans and payments don't route through Preczn.

Why is the connection still in Requirements after the boarding form was submitted?

Check missingRequiredData on the merchant. The most common gaps are:

  • The form template hides Annual Sale Volume or Annual Finance Revenue Volume. Both are hidden by default.
  • The mailing address is missing.
  • The campaign code isn't set.
  • An owner other than the principal is missing a home address, email, phone, or SSN. Synchrony's template applies to every owner.
The connection is in Error with a message from Synchrony. Can I fix it and resubmit?

Check connectionID.applicationId on the connection:

  • No enrollment ID: Synchrony didn't create an enrollment. Fix the problem named in actionDescription, then onboard the merchant again. To replace an unrecognized campaign code, use Update Connection Details. The Dashboard locks the Campaign Code while the connection is in Error.
  • An enrollment ID is present: Synchrony created the enrollment, and Preczn won't submit again. Contact Synchrony with the enrollment ID.
The submission timed out. Can I retry?

Not right away. Synchrony might have created the enrollment before the request timed out, and Synchrony doesn't detect duplicates. Confirm with Synchrony whether the enrollment exists before you onboard the merchant again. Give Synchrony the merchant's legal name and the submission time, which is the connection's lastDataTransmissionDate.

I updated the merchant's data in Preczn. Does Synchrony get the change?

No. Preczn sends the merchant's data once, when it submits the enrollment. To change data on an enrollment that Synchrony already has, work with Synchrony directly.

Where do I find the Synchrony enrollment ID and merchant ID?

Both are on the merchant's Synchrony connection, in connections[].connectionID. The enrollment ID (applicationId) appears when the status moves to Sent. The merchant ID (mid) appears when the status moves to Active. See Synchrony IDs.


Did this page help you?