Onboarding
Overview
The SportsPay Onboarding API enables Partners to programmatically create, update, and track merchant onboarding applications. It supports both embedded (immersive) and invite-only onboarding experiences.
Onboarding is responsible for:
- Collecting merchant application data
- Presenting pricing offers (
offerID) - Managing application lifecycle states
- Sending status webhooks
Onboarding is not responsible for:
- Creating gateway credentials
- Creating terminals (
termID) - Delivering transaction credentials
Once an application reaches a final state of Approved or Declined, the onboarding lifecycle is complete.
If approved, the merchant transitions to the Merchant Provisioning phase, where gateway credentials and terminals are created.
For post-approval credential delivery, see:
Merchant Provisioning
Quick Start
Typical integration flow:
- Partner creates an onboarding application using
POST /onboard/{offerID} - SportsPay returns an
appIDand secureappLink - Partner presents the onboarding UI to the merchant
- Merchant completes onboarding
- Partner monitors status via:
GET /onboard/{appID}- Webhooks
- If approved, the merchant moves to Merchant Provisioning
Integration Models
Immersive (Embedded) Onboarding
The Partner embeds SportsPay’s onboarding UI inside their application.
Flow
- Partner calls POST
/onboard/{offerID} - SportsPay returns:
appIDappLink
- Partner embeds
appLinkusing:- iframe
- modal
- new browser window
- in-app webview
- Merchant completes onboarding within Partner UI
Invite-Only Onboarding
Partner sets emailInvite=true and provides the appEmail.
SportsPay emails the merchant their secure onboarding link.
Partner displays a confirmation message in their system.
Hybrid
Partner may enable emailInvite=true while still embedding or using the returned appLink.
Core Identifiers
offerID
offerIDA SportsPay-assigned identifier representing the onboarding “offer” that the Partner is presenting to the merchant.
An offer is a pre-configured merchant application package that includes one or more pricing models set by the Partner. Each offer defines which pricing options the merchant will see and select from during onboarding.
appID
appIDThe unique identifier assigned by SportsPay when an application is created.
It is required in order to:
- Retrieve application status
- Update the application
appLink
appLinkA secure URL pointing to the merchant’s onboarding interface.
Partners may:
- Embed it
- Redirect the merchant to it
- Allow SportsPay to email it when
emailInvite=true
Application Lifecycle
| Status | Description |
|---|---|
| Created | Application record created |
| Opened | Merchant has opened the onboarding link |
| InProgress | Merchant is completing onboarding |
| Submitted | Merchant submitted the onboarding application |
| UnderReview | SportsPay is reviewing the application |
| Approved | Application approved |
| Declined | Application declined |
| Expired | Application has expired |
| Cancelled | Application has been terminated |
| Error | Error with the application |
Base URLs
| Environment | URL |
|---|---|
| Production | https://api.sportspay.com/onboard |
| Testhost | https://phq.sportspay.com/testhost/onboard |
API Endpoints
| Purpose | Method | Endpoint |
|---|---|---|
| Create Application | POST | /onboard/{offerID} |
| Update Application | POST | /onboard/{appID} |
| Get Application | GET | /onboard/{appID} |
Create Application
POST /onboard/{offerID}
/onboard/{offerID}Creates a new onboarding application tied to the provided identifiers (orgID and offerID).
The request payload contains two primary sections:
appInfo— Metadata about the onboarding application, including partner identifiers, onboarding configuration, and webhook settings.appData— Merchant business information used to pre-populate the onboarding application.
The exact request schema, field descriptions, and validation rules are documented in the API Reference.
Update Application
POST /onboard/{appID}
/onboard/{appID}Updates editable fields on the application.
offerIDcannot be changed after creation.
Refer to UpdateApp API Reference
Get Application Status
GET /onboard/{appID}
/onboard/{appID}Returns the application's current state.
The state field indicates the merchant’s progress through onboarding.
Refer to AppStatus API Reference
Webhooks
Application State Change (app_state_change)
app_state_change)SportsPay can notify your system whenever an onboarding application changes state.
Triggered States
CreatedOpenedInProgressSubmittedUnderReviewApprovedDeclinedExpiredCancelledError
Enabling Webhooks
Provide a webhookURL when creating or updating an application.
Endpoints:
POST /onboard/{offerID}POST /onboard/{appID}
Webhook Identification
| Field | Value | Description |
|---|---|---|
| module | onboarding | Product area generating the webhook |
| name | app_state_change | Indicates application state change |
Handling Webhooks
- Return HTTP 200–299 to acknowledge receipt
- Webhooks may be retried
- Implement idempotent processing
- Use
appIDas the primary identifier
Integration Flows
Immersive Flow
sequenceDiagram
Partner->>SportsPay: POST /onboard/{offerID}
SportsPay-->>Partner: appID + appLink
Partner->>Merchant: Embedded onboarding UI
Merchant->>SportsPay: Completes onboarding
Partner->>SportsPay: GET /onboard/{appID}
SportsPay-->>Partner: Status response
Invite-Only Flow
sequenceDiagram
Partner->>SportsPay: POST /onboard/{offerID} (emailInvite=true)
SportsPay-->>Merchant: Sends onboarding email
Partner->>Partner: Displays "Invite Sent"
Merchant->>SportsPay: Completes application
Partner->>SportsPay: GET /onboard/{appID}
SportsPay-->>Partner: Status response
Errors
| Code | Description | Message |
|---|---|---|
| 0 | Success | Success |
| 1001 | Missing required field | Missing required field |
| 1002 | Invalid data | Invalid value for field |
| 1003 | Malformed payload | Request payload is malformed |
| 1004 | Application already exists | Application already exists |
| 1005 | Region mismatch | Offer not available for this region |
| 1006 | General failure | Request could not be completed |
| 1007 | OfferID or AppID invalid | Offer or application not found |
| 1008 | Offer not permitted | Offer not enabled for API use |
After Approval: Merchant Provisioning
Once an application reaches a final state of Approved, onboarding is complete and the merchant enters the provisioning phase.
Provisioning is responsible for:
- Creating the merchant record on the gateway
- Generating terminal credentials (
termID+password) - Enabling or disabling terminals
- Sending the Merchant Credential Callback
The approval webhook does not contain gateway credentials.
Gateway credentials are delivered separately through the Merchant Credential Callback, which is part of the Merchant Provisioning process.
For details see:
Merchant Provisioning
FAQ
Can an application be recreated?
No — SportsPay must reset it manually.
What identifiers should the Partner store?
Store both:
orgIDappID
Where do I obtain an offerID?
offerID?offerID values are created in SportsPay’s Rapid Onboarding tool within PaymentsHQ.
- Sandbox / Development: The SportsPay team will provide an
offerIDfor testing. - Production:
offerIDs are automatically generated in PaymentsHQ when you create Offers that bundle one or more pricing models.
Rapid Onboarding (API Context)
Rapid Onboarding defines the pricing options available to merchants during onboarding.
An Offer represents a predefined set of one or more Pricing Models. Each Offer is assigned a unique offerID, which is referenced in API requests to associate a merchant application with a specific pricing configuration.
Key Points for Integrators
offerIDvalues are not created via APIofferIDmust exist in PaymentsHQ before being referenced in API requests- One
offerIDmaps to a specific set of pricing models - The same
offerIDcan be reused across multiple merchant applications
Updated 11 days ago
