Merchant Provisioning
Merchant Provisioning occurs after an onboarding application is approved and is responsible for creating and managing gateway credentials and terminals.
Merchant Provisioning is separate from the Onboarding API and operates as a downstream system.
While onboarding collects and reviews merchant application data, provisioning:
- Creates the merchant record on the gateway
- Generates terminal credentials (
termID+password) - Enables or disables terminals
- Pushes credential updates to the Partner
Relationship to Onboarding
Once an onboarding application reaches a terminal state (Approved or Declined), the onboarding lifecycle is complete.
If the application is Approved, SportsPay begins the provisioning process.
- The merchant is provisioned on the gateway.
- One or more terminals (
termID) are created. - Gateway credentials are generated.
- The Merchant Credential Callback is sent.
The approval webhook does not include gateway credentials.
Provisioning occurs after approval and may complete minutes later.
An organization may hold more than one application through the Onboarding API, and therefore more than one merchant account, where SportsPay has enabled multiple applications for the Partner platform. See Multiple Terminals per Organization.
Merchant Credential Callback
The Merchant Credential Callback is a server-to-server POST request sent by SportsPay when gateway credentials are created or updated.
Partners should use this callback to store or update the merchant's gateway credentials in their system.
This callback is separate from onboarding webhooks.
Important Distinction
| Feature | Onboarding Webhook | Merchant Credential Callback |
|---|---|---|
| Purpose | Track application state | Deliver gateway credentials |
| Trigger | Application state change | Terminal creation or update |
| Contains | appID, state, merchID | termID, password |
| Timing | During onboarding | After provisioning |
| Requires API onboarding? | Yes | No |
The credential callback may be triggered for:
- API-onboarded merchants
- Merchants onboarded through legacy or embedded flows
- Terminal enable events
- Terminal disable events
- Account closures
Endpoint Configuration
Unlike onboarding webhooks (which use the webhookURL provided in the application request), the Merchant Credential Callback is sent to a fixed endpoint configured internally within SportsPay.
This endpoint:
- Is environment-specific (Test vs Production)
- Is not dynamically defined per application
- Must be configured with SportsPay prior to go-live
Contact SportsPay to update this endpoint.
When Is the Callback Sent?
The callback is triggered when:
- A merchant is approved and provisioned
- A terminal (
termID) is created - A terminal is enabled
- A terminal is disabled
- Gateway credentials are updated
The callback may occur at any time during the merchant’s lifecycle.
One terminal per callbackEach Merchant Credential Callback carries a single
termIDandpassword. Credentials are never batched into one payload. An organization with more than one merchant account will receive a separate callback for each terminal, sent as each account is provisioned.
Example Callback Payload
{
"orgName": "Little Tigers Club",
"merchID": "ABCD1234",
"orgID": "1ebbdbb7-4a55-6ec6-ac8c-02bb3c474244",
"partnerID": "432341",
"termID": "ABCD1265",
"password": "iyPZVvdD",
"platform": "Acme Registration",
"status": "active"
}Field Definitions
| Field | Description |
|---|---|
merchID | SportsPay merchant identifier |
orgID | Partner-provided organization identifier required for API onboarding. A single orgID may be associated with more than one merchant account where multiple applications are enabled. |
partnerID | Optional Partner-defined grouping identifier used for reporting and internal mapping. Multiple merchIDs may share the same partnerID. |
termID | Terminal identifier used for transaction submission |
password | Gateway password associated with the terminal |
status | Terminal state (active, disabled) |
platform | Partner platform identifier |
While
merchIDandtermIDmay sometimes appear similar, they are configured independently. Both values should be stored.
Identifier Model & Merchant Mapping
The Merchant Credential Callback may include several identifiers used for merchant mapping:
orgIDmerchIDpartnerID
The presence of certain identifiers depends on how the merchant was onboarded.
Identifier Availability
appIDis not included in the credential callback.orgIDis only present if the merchant was onboarded via the API.partnerIDis optional and may be included for both API and non-API merchants. When provided, it can be used to group multiple merchants for reporting.- A single
orgIDmay appear across multiple callbacks, each carrying a differenttermID, where the organization holds more than one merchant account.
Not all identifiers will be present in every callback payload.
Partners should map each identifier to its purpose:
| To identify | Use |
|---|---|
| The gateway credential | termID |
| The merchant account | merchID |
| The owning organization | orgID |
| A reporting group | partnerID |
orgIDdoes not identify a merchant accountWhere an organization holds more than one merchant account,
orgIDalone is not sufficient to identify a single account or credential. Gateway credentials must be stored againsttermID.
Uniqueness Rules
The orgID, merchID, termID, and partnerID serve different purposes and have different uniqueness requirements.
orgID (Required for Onboarding API)
- Assigned by the Partner when creating an onboarding application
- Identifies the organization a merchant account belongs to
- Is not guaranteed to be unique per merchant account
By default, orgID maps to a single application through the Onboarding API, and therefore to one merchID and one termID.
Where SportsPay has enabled multiple applications for the Partner platform, an organization may hold several merchant accounts under the same orgID, each with its own merchID, termID, and password.
partnerID (Optional / External Reference)
- Provided by the Partner
- Used as a reporting/grouping identifier so Partners can view financial reporting aggregated across multiple merchant accounts.
- Does not need to be unique
For example, a Partner may assign the same partnerID to multiple merchIDs in order to view deposits, fees, and transaction reporting as a single grouped set.
Summary
| Identifier | Uniqueness Required | Purpose |
|---|---|---|
orgID | No* | Identifies the organization a merchant account belongs to |
merchID | Yes | Unique per merchant account |
termID | Yes | Unique per terminal — the key for stored gateway credentials |
partnerID | No | External grouping/reference identifier |
* Unique per organization, but a single orgID may map to multiple merchant accounts where multiple applications are enabled.
partnerIDis treated as a reference value, not a primary key
Multiple Terminals per Organization
Through the Onboarding API, an organization is provisioned with a single merchant account by default.
Partners who need an organization to hold more than one SportsPay merchant account — for example a separate account per program, season, division, or location — can request this. The configuration is applied by SportsPay on the back end; there is no request parameter for it.
See Onboarding → Multiple Applications per Organization.
Where this is enabled, each approved application is provisioned as its own merchant account, with its own merchID, termID, and password.
Provisioning must be configured before this can be enabledSportsPay pushes one
termIDandpasswordper callback. An organization with three merchant accounts will receive three separate callbacks, sent as each account is provisioned — potentially weeks or months apart.The Partner's system must store each new credential pair as a new record. A system that keys stored credentials on
orgIDwill silently overwrite the organization's existing terminal when the next one arrives.
Required Partner Behaviour
Before multiple applications can be enabled for a Partner platform, the Partner must confirm their credential storage handles the following.
| Requirement | Detail |
|---|---|
Key on termID, not orgID | Stored credential records must be keyed on termID. A system keyed on orgID will overwrite the organization's existing terminal when the next one arrives. |
| Insert, don't overwrite | A callback carrying a new termID for a known orgID must create a new credential record. It must not update, replace, or deactivate the existing one. |
Update on repeat termID | A callback carrying a known termID is an update to that terminal — an enable, disable, or credential change — and should update that record in place. |
| Support concurrent terminals | More than one termID may be active under the same orgID at the same time. The Partner's system must route each transaction to the correct terminal. |
Callback Handling Logic
on credential_callback(orgID, merchID, termID, password, status):
existing = lookup_credential_by(termID)
if existing:
# enable / disable / credential update for a known terminal
update(existing, password, status)
else:
# new merchant account for this organization
insert_new_credential(orgID, merchID, termID, password, status)
Do not implement this as an upsert onorgIDAn upsert keyed on
orgIDwill destroy the organization's previously issued terminal. Look the record up bytermID, and insert when it is not found.
Terminal Status
| Status | Meaning |
|---|---|
active | Terminal is enabled and can process transactions |
disabled | Terminal is disabled and cannot process transactions |
A callback will be sent if a terminal is disabled or re-enabled. Partners should update their records accordingly.
Status applies to the individual terminal, not the organization. Where an organization holds multiple terminals, disabling one does not affect the others.
Platform-Specific Implementation
The Merchant Credential Callback may be customized for each Partner integration.
While the core credential fields (termID, password, merchID) remain consistent, the overall payload structure, authentication method, and supplemental metadata may vary based on the Partner’s integration requirements.
Customizations may include:
- Additional identifiers required for merchant mapping
- Platform-specific metadata fields
- Custom
platformvalues - Custom authentication mechanisms
- Extended payload structures
- Whether the platform supports multiple applications and merchant accounts per organization
SportsPay defines the final callback contract during integration. Partners must confirm their production callback specification prior to going live.
Security
The Merchant Credential Callback supports:
- Custom header authentication (e.g.,
X-Api-Key) - Separate keys for Test and Production environments
Your endpoint should:
- Validate authentication headers
- Return HTTP
200–299on success - Be idempotent (duplicate callbacks may occur)
Updated 8 days ago
