Transfers & Splits

SportsPay's Transfers functionality allows for the movement of funds between merchants or the distribution of payments across multiple recipients.

Transfers can be categorized into three main types:

  1. Inter-Merchant Transfer (Send): Initiates a transfer from one merchant to another.
  2. Inter-Merchant Transfer (Reverse): Reverses a previously completed transfer.
  3. Splits: A shortform method to add one or more transfers to a transaction, where each split is treated as an individual transfer that can also be done through the Inter-Merchant Transfer Send and Reverse functions.

This guide provides detailed instructions on how to execute these transfers effectively using the SportsPay API.


1. Inter-Merchant Transfers

Inter-Merchant Transfers allow the transfer of funds between merchant accounts, such as sharing revenue, paying membership fees, or handling multi-party financial scenarios.

1.1 Send Transfer

Purpose: To send funds from one merchant to another.

Request

The Inter-Merchant Transfer API Reference outlines the required and optional parameters needed for your request. The minimum required information in your request includes the merchants Terminal ID ( TERMID) and Password (PASS), the type of transaction (T for Transfers), the subtype (S to Send a Transfer), the Transfer Group (TRANGP), the Terminal ID of the merchant receiving the funds (RECV), the reason for the transfer (MSG), and a unique Reference Number (REF).

Refer to Inter-Merchant Transfer API Reference

Example Send Transfer Request:

# Example Transfer request
curl --request POST \
  --url https://svra.interpaypos.com:1443/ \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "TERMID": "TEST0058",
    "PASS": "zX3Ht5va",
    "TYPE": "T",
    "SUBTYPE": "S",
    "TRANGP": "GROUP1",
    "RECV": "TERM1234",
    "AMT": "200.00",
    "MSG": "Commission payment",
    "REF": "Ref-123456"
  }'

1.2 Reverse Transfer

Purpose: To reverse a complete transfer.

Request

The Inter-Merchant Transfer API Reference outlines the required and optional parameters needed for your request. The minimum required information in your request includes the merchants Terminal ID ( TERMID) and Password (PASS), the type of transaction (T for Transfers), the subtype (R to Reverse a Transfer), the Transfer Group (TRANGP), the reason for the reversal (MSG), and the reference number of the original transfer (ORIGREF).

Refer to Inter-Merchant Transfer API Reference

Example Reverse Transfer Request:

# Example Transfer Reversal request
curl --request POST \
  --url https://svra.interpaypos.com:1443/ \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "TERMID": "TERM1234",
    "PASS": "zX3Ht5va",
    "TYPE": "T",
    "SUBTYPE": "R",
    "TRANGP": "GROUP1",
    "ORIGREF": "Ref-123456",
    "MSG": "Reversal of commission payment"
  }'

Response

  • TEXT: "APPROVED" for a successful transfer or a relevant error message.
  • CODE: "0000" for success, other codes for errors.

2. Splits

Split Payments allow a single transaction to be distributed across multiple recipients, with each split treated as a separate transfer. These transfers can be sent in the same format as Inter-Merchant Transfers.

Splits can be added to the following transaction types:

  • Sale (S)
  • Refund (R)
  • Completion (C):
  • Force Post (F)
  • Start Session (Type=W and Action=StartSession)
🚧

Splits cannot be added to Schedules

2.1 Sending Splits

To initiate a split payment, include the SPLIT parameter in your request. Each split entry represents a single transfer to a recipient.

🚧

When using JSON requests, the SPLIT field must be provided as a string using the split syntax shown below. It is not sent as a JSON object or array

The SPLIT string consists of one or more split entries:

  • Each entry is enclosed in square brackets ([])
  • Fields within an entry are separated by ampersands (&)
  • Each entry represents one recipient and transfer amount

Each SPLIT entry includes the following fields:

  • TRANGP: Transfer group identifier.
  • RECV: Terminal ID of the receiving merchant.
  • AMT: Amount to transfer in dollars and cents (e.g. 1.50)
  • MSG: Message describing the transfer (Max 30 alphanumeric characters).
  • REF: Unique reference number.
  • INV (Optional): Sender's invoice number (Alphanumeric; Between 5 and 20 characters)
  • RECVINV (Optional): Receiver’s invoice number. If not provided, the sender's INV value will be used.

Refer to Split Payment API Reference

Example Split Parameter:

(The Split is being added to a Host-Based Sale Transaction)

# Example Sale request with Card Data and Split
curl --request POST \
  --url https://svra.interpaypos.com:1443/ \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "TYPE": "S",
    "TERMID": "TEST0058",
    "PASS": "zX3Ht5va",
    "AMT": "150.00",
    "EXP": "1230",
    "CARD": "4000000000000002",
    "CVV2": "123",
    "REF": "Ref-123456",
    "CUSTNAME": "John Doe",
    "CUSTEMAIL": "[email protected]",
    "INV": "INV00123",
    "DESC": "Summer Registration",
    "USERFEE": "3.00",
    "SPLIT": "[TRANGP=TESTGRP&RECV=DEVM0002&AMT=400&REF=ABCDEFG123K&INV=GOVBODY1&RECVINV=PLAYERFEE&MSG=SIENNACOSTAINPAYMENT][TRANGP=TESTGRP&RECV=DEVM0003&AMT=400&REF=ABCDEFGH456&INV=GOVBODY1&RECVINV=PLAYERFEE&MSG=BROOKSCOSTAINPAYMENT]"
  }'

2.2 Reversing a Split Payment

To reverse a Split, use the Inter-Merchant Transfer Reversal request, providing the original reference number (ORIGREF) from the Split.

Response Codes

The response code describes the result of the entire transaction and all transfers in the SPLIT - in other words, it's all or nothing.

  • TEXT: "APPROVED" for a successful transfer or a relevant error message.
  • CODE: "0000" for success, other codes for errors.

Important Notes for Splits

  • Each SPLIT entry must be enclosed in square brackets ([]), and fields must be separated by ampersands (&).
  • All fields except INV and RECVINV are mandatory.
  • Ensure REF values are globally unique for all Terminal ID's included in the SPLIT.

3. Example: Baseball Club Payment Distribution

The following example demonstrates how transfers can be used in a real-world scenario. A Baseball Club collects a registration fee from a parent and distributes the funds to multiple recipients: the National Sports Organization, Provincial Governing Body, and the Registration Platform for website services.

TERMIDParty NameCost
BASEBALLTIDBaseball Club (Merchant)$ 60.00
NATLBODYNational Sports Organization$ 10.00
PROVBODYProvincial Governing Body$ 30.00
REGPARTNERRegistration Platform/Integration Partner$ 5.00
Total Sale Amount:$105.00

3.1 Steps for Inter-Merchant Transfers

1 - The parent pays the total sale amount to the Baseball Club, whose terminal ID is used for the transaction.

Transaction Example:

# Example Sale request
curl --request POST \
  --url https://svra.interpaypos.com:1443/ \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "TERMID": "BASEBALLTID",
    "PASS": "MYPASS",
    "REF": "ABCD1234",
    "TYPE": "S",
    "AMT": "105.00",
    "CARD": "1234123412341234",
    "EXPIRY": "0101",
    "INV": "12345"
  }'

2 - Transfers are then sent to each recipient (National Body, Provincial Body, and Registration Platform/Integration Partner) using the TRANGP for the Baseball Club.

Transfer to National Sports Organization:

# Example Transfer request
curl --request POST \
  --url https://svra.interpaypos.com:1443/ \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "TERMID": "BASEBALLTID",
    "PASS": "MYPASS",
    "REF": "BCDEF1234",
    "TYPE": "T",
    "SUBTYPE": "S",
    "TRANGP": "BBALLCLUB",
    "RECV": "NATLBODY",
    "AMT": "10.00",
    "INV": "12345",
    "MSG": "MEMBERSHIPFEE"
  }'

Transfer to Provincial Governing Body:

# Example Transfer request
curl --request POST \
  --url https://svra.interpaypos.com:1443/ \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "TERMID": "BASEBALLTID",
    "PASS": "MYPASS",
    "REF": "CDEFG1234",
    "TYPE": "T",
    "SUBTYPE": "S",
    "TRANGP": "BBALLCLUB",
    "RECV": "PROVBODY",
    "AMT": "30.00",
    "INV": "12345",
    "MSG": "UNIFORMFEE"
  }'

Transfer to Registration Platform/Integration Partner

# Example Transfer request
curl --request POST \
  --url https://svra.interpaypos.com:1443/ \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "TERMID": "BASEBALLTID",
    "PASS": "MYPASS",
    "REF": "DEFGU1234",
    "TYPE": "T",
    "SUBTYPE": "S",
    "TRANGP": "BBALLCLUB",
    "RECV": "REGPARTNER",
    "AMT": "5.00",
    "INV": "12345",
    "MSG": "WEBSITEFEE"
  }'

3.2 Achieving the Same with Splits

Instead of sending individual transfers, you can use the Split Payment feature to bundle these transfers into a single transaction. Each "split" represents a transfer to a different recipient.

Example Split Request:

  1. The parent pays the total sale amount to the Baseball Club, and the funds are split across multiple recipients using the SPLIT parameter.
    Transaction with Splits:
    # Example Sale request with Card Data and Multiple Splits
    curl --request POST \
      --url https://svra.interpaypos.com:1443/ \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
      --data '{
        "TERMID": "BASEBALLTID",
        "PASS": "MYPASS",
        "REF": "ABCD1234",
        "TYPE": "S",
        "AMT": "105.00",
        "CARD": "1234123412341234",
        "EXP": "0101",
        "INV": "12345",
        "SPLIT": "[TRANGP=BBALLCLUB&RECV=NATLBODY&AMT=10.00&REF=BCDEF1234&INV=12345&MSG=MEMBERSHIPFEE][TRANGP=BBALLCLUB&RECV=PROVBODY&AMT=30.00&REF=CDEFG1234&INV=12345&MSG=UNIFORMFEE][TRANGP=BBALLCLUB&RECV=REGPARTNER&AMT=5.00&REF=DEFGU1234&INV=12345&MSG=WEBSITEFEE]"
      }'

Breakdown of the Splits Request:

  • TERMID=BASEBALLTID: Terminal ID of the Baseball Club receiving the original payment.
  • PASS=MYPASS: Password for the Baseball Club's terminal.
  • REF=ABCD1234: Unique reference for the overall transaction.
  • TYPE=S: Host-based Sale transaction.
  • AMT=105.00: Total amount collected from the parent ($105.00).
  • CARD=1234123412341234&EXP=0101: Card details for the payment.
  • SPLIT: The array of splits, each formatted with:
    • TRANGP=BBALLCLUB: Transfer group identifier.
    • RECV: Terminal ID of the recipient (National Body, Provincial Body, Integration Partner).
    • AMT: Amount to transfer to each recipient in dollars and cents (e.g. 1.50)
    • REF: Unique reference number for each split.
    • INV: Invoice number associated with the transfer.
    • MSG: Description of the payment reason.

When to use each

Use Splits: When you need to distribute funds immediately as part of a single sale transaction and want to minimize the number of API calls. Splits are best for scenarios where multiple parties need to be paid at the same time from a single source.

Use Inter-Merchant Transfers: When you require more granular control over when and how funds are distributed, especially if the transfer timing differs from the original transaction. Inter-Merchant Transfers are useful when needing to send funds in bulk (such as collecting funds throughout the day and combining them into a single balancing transfer for each recipient).