SplitPay as a Separate API Call

If you use one of the mobile solutions, or a PMI that does not support SplitPay directly, but your merchant uses ProPay, you will always get back a ProPay transaction number.  You can create the SplitPay trigger using that transaction number.

More than one trigger
You can create SplitPay triggers to provide portions of a transaction to multiple parties.  You need to be careful, though, that you aren’t doing something that credit card brands would consider ‘aggregating’  (Using your own merchant account and then paying out the party who actually provides a good or service).  Brands take a pretty dim view of this behavior, and ProPay watches SplitPay closely for signs that aggregation is going on.
How to call this method?

HTTP URL's
HTTP Method PUT
HTTP Header Authorization
Example Request

Example Response

{
 "accountNum":32531945,
 "recAccntNum":32531946,
 "amount":100,
 "transNum":1234,
 "InvoiceNumber":"invoice number",
 "comment1":"comment 1",
 "comment2":"comment 2"
}

{
 "AccountNumber":32531945,
 "Status":"00",
 "TransactionNumber":1234
}

Implementation Details
Request Submission

namespace ProPayApi_TimedPull
{
using System;
using System.Text;

using RestSharp;

/*
ProPay provides the following code “AS IS.”
ProPay makes no warranties and ProPay disclaims all warranties and conditions, express, implied or statutory,
including without limitation the implied warranties of title, non-infringement, merchantability, and fitness for a particular purpose.
ProPay does not warrant that the code will be uninterrupted or error free,
nor does ProPay make any warranty as to the performance or any results that may be obtained by use of the code.
*/
public class TimedPullProgram
{
public static void Main(string[] args)
{
var timedPullResponse = PerformTimedPull();
}
private static TransferResult PerformTimedPull()
{
var baseUrl = "https://xmltest.propay.com/api/propayapi/PropayMerchantService.svc/";
var request = BuildTimedPullTestData();
var restRequest = CreateRestRequest("/TimedPull", Method.PUT);
restRequest.AddBody(request);
return Execute<TransferResult>(restRequest, baseUrl);
}

private static TimedPullRequest BuildTimedPullTestData()
{
var timedPullRequest = new TimedPullRequest
{
accountNum = 32531945,
amount = 100,
comment1 = "comment 1",
comment2 = "comment 2",
InvoiceNumber = "invoice number",
recAccntNum = 32531946, // this is the account number that will be receiving the funds
transNum = 1234 // this is the transaction number to split
};

return timedPullRequest;
}

/// <summary>
/// Request factory to ensure API key is always first parameter added.
/// </summary>
/// <param name="resource">The resource name.</param>
/// <param name="method">The HTTP method.</param>
/// <returns>Returns a new <see cref="RestRequest"/>.</returns>
private static RestRequest CreateRestRequest(string resource, Method method)
{

var credentials = GetCredentials();

var restRequest = new RestRequest { Resource = resource, Method = method, RequestFormat = DataFormat.Json, };
restRequest.AddHeader("accept", "application/json");
restRequest.AddHeader("Authorization", credentials);
return restRequest;
}

private static string GetCredentials()
{
var termId = "AffTermId01"; // put affiliate term id here, if you have it
var certString = "TestAffiliateMerchCertString01"; // put affiliate cert string here
var encodedCredentials = Convert.ToBase64String(termId == null ? Encoding.Default.GetBytes(certString) : Encoding.Default.GetBytes(certString + ":" + termId));

var credentials = string.Format("Basic {0}", encodedCredentials);
return credentials;
}

/// <summary>
/// Executes a particular http request to a resource.
/// </summary>
/// <typeparam name="T">The response type.</typeparam>
/// <param name="request">The REST request.</param>
/// <param name="baseUrl">The base URL.</param>
/// <returns>Returns a response of the type parameter.</returns>
private static T Execute<T>(IRestRequest request, string baseUrl) where T : class, new()
{
var client = new RestClient(baseUrl);
var response = client.Execute<T>(request);

if (response.ErrorException != null)
{
Console.WriteLine(
"Error: Exception: {0}, Headers: {1}, Content: {2}, Status Code: {3}",
response.ErrorException,
response.Headers,
response.Content,
response.StatusCode);
}

return response.Data;
}

/// <summary>
/// The request for Timed pull transaction.
/// </summary>
public class TimedPullRequest
{
/// <summary>
/// Gets or sets the proPay account identifier. This is the 'from' account and the account upon which the cc transaction was initially performed.
/// </summary>
public long accountNum { get; set; }

/// <summary>
/// Gets or sets the ProPay account identifier.
/// This is the account to which the split will be sent when the transaction settles.
/// </summary>
public long recAccntNum { get; set; }

/// <summary>
/// Gets or sets the amount to be split off to the receiving account number when the transaction settles. 100=$1.00.
/// </summary>
public long amount { get; set; }

/// <summary>
/// Gets or sets the ProPay transaction identifier. 
/// It is when this transaction settles that the timed pull will occur.
/// </summary>
public long transNum { get; set; }

/// <summary>
/// Gets or sets the invoice number for the transaction.
/// </summary>
public string InvoiceNumber { get; set; }

/// <summary>
/// Gets or sets the first comment.
/// </summary>
public string comment1 { get; set; }

/// <summary>
/// Gets or sets the second comment.
/// </summary>
public string comment2 { get; set; }
}

/// <summary>
/// Response object for timed pull or Propay-To-Propay transaction.
/// </summary>
public class TransferResult
{
/// <summary>
/// Gets or sets the proPay account identifier. This is the 'from' account and the account upon which the cc transaction was initially performed.
/// </summary>
public long AccountNumber { get; set; }

/// <summary>
/// Gets or sets the ProPay transaction identifier. It is when this transaction settles that the timed pull will occur.
/// </summary>
public long TransactionNumber { get; set; }

/// <summary>
/// Gets or sets the status.
/// </summary>
public string Status { get; set; }
}
}
}

Response Handling

Request Submission

<p>/*<br />
ProPay provides the following code &quot;AS IS.&quot;<br />
ProPay makes no warranties and ProPay disclaims all warranties and conditions, express, implied or statutory,<br />
including without limitation the implied warranties of title, non-infringement, merchantability, and fitness for a particular purpose.<br />
ProPay does not warrant that the code will be uninterrupted or error free,<br />
nor does ProPay make any warranty as to the performance or any results that may be obtained by use of the code.<br />
*/</p>

<p>&nbsp;</p>

<p>&lt;?php<br />
class ProPayApi<br />
{<br />
&nbsp;&nbsp;&nbsp; /* change this to the production url for going live after testing <a href="https://api.propay.com">https://api.propay.com</a> */<br />
&nbsp;&nbsp;&nbsp; private $_apiBaseUrl = &#39;https://xmltestapi.propay.com&#39;;</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp; private $_certStr;<br />
&nbsp;&nbsp;&nbsp; private $_termid;</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp; /** for timed pull */<br />
&nbsp;&nbsp;&nbsp; private $_timedPullData;<br />
&nbsp;&nbsp;&nbsp; private $_timedPullInfo;</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @param string $certStr<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @return $this<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; public function setCertStr($certStr)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;_certStr = $certStr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $this;<br />
&nbsp;&nbsp;&nbsp; }</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @param string $termid<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @return $this<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; public function setTermid($termid)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;_termid = $termid;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $this;<br />
&nbsp;&nbsp;&nbsp; }</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @return string<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; private function _getAuth()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $this-&gt;_certStr . &#39;:&#39; . $this-&gt;_termid;<br />
&nbsp;&nbsp;&nbsp; }</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * Processes the timed pull with the provided data<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @return $this<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; public function processTimedPull() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $data_string = json_encode($this-&gt;_timedPullData);</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ch = curl_init($this-&gt;_apiBaseUrl . &#39;/ProPayAPI/timedPull&#39;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, &quot;PUT&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curl_setopt($ch, CURLOPT_USERPWD, $this-&gt;_getAuth());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curl_setopt($ch, CURLOPT_HTTPHEADER, array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;Content-Type: application/json&#39;,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;Content-Length: &#39; . strlen($data_string)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ));</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;_timedPullInfo = curl_exec($ch);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $this;<br />
&nbsp;&nbsp;&nbsp; }</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @param array $timedPullData<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @return $this<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp; public function setTimedPullData($timedPullData) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;_timedPullData = $timedPullData;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $this;<br />
&nbsp;&nbsp;&nbsp; }</p>

<p>&nbsp;</p>

<p>&nbsp;&nbsp;&nbsp; /**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * gets the timed pull info after processing, looks something like...<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @return mixed<br />
&nbsp;&nbsp;&nbsp;&nbsp; * { &quot;AccountNumber&quot;: 123456, &quot;Status&quot;: &quot;00&quot;, &quot;TransactionNumber&quot;: 1 }<br />
&nbsp;*/<br />
&nbsp;&nbsp;&nbsp; public function getTimedPullInfo() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $this-&gt;_timedPullInfo;<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>

<p>&nbsp;</p>

<p>$data = [<br />
&nbsp;&nbsp;&nbsp; &quot;accountNum&quot; =&gt; 123456,<br />
&nbsp;&nbsp;&nbsp; &quot;recAccntNum&quot; =&gt; 987654,<br />
&nbsp;&nbsp;&nbsp; &quot;amount&quot; =&gt; 100,<br />
&nbsp;&nbsp;&nbsp; &quot;transNum&quot; =&gt; 2,<br />
&nbsp;&nbsp;&nbsp; &quot;invNum&quot; =&gt; &quot;Invoice&quot;,<br />
&nbsp;&nbsp;&nbsp; &quot;comment1&quot; =&gt; &quot;Test Comments&quot;,<br />
&nbsp;&nbsp;&nbsp; &quot;comment2&quot; =&gt; &quot;Test Comments2&quot;<br />
];</p>

<p>$proPayAPI = new ProPayApi();<br />
$result = $proPayAPI-&gt;setCertStr(&#39;thecertstringgoesin here&#39;)<br />
&nbsp;&nbsp;&nbsp; -&gt;setTermid(&#39;termid goes here&#39;)<br />
&nbsp;&nbsp;&nbsp; -&gt;setTimedPullData($data)<br />
&nbsp;&nbsp;&nbsp; -&gt;processTimedPull()<br />
&nbsp;&nbsp;&nbsp; -&gt;getTimedPullInfo();</p>

Response Handling

Request Submission

/**
 * ProPay provides the following code “AS IS.” ProPay makes no warranties and
 * ProPay disclaims all warranties and conditions, express, implied or
 * statutory, including without limitation the implied warranties of title,
 * non-infringement, merchantability, and fitness for a particular purpose.
 * ProPay does not warrant that the code will be uninterrupted or error free,
 * nor does ProPay make any warranty as to the performance or any results that
 * may be obtained by use of the code.
 */

import java.io.IOException;
import java.util.Random;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.ObjectMapper;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import com.mashape.unirest.request.HttpRequest;
import com.mashape.unirest.request.HttpRequestWithBody;

public class TimedPullSample {
 /**
* This URL would normally come from some configuration file or database.
*/
 final static String ApiUrl = "https://xmltestapi.propay.com/propayapi/";

 public static void main(String[] args) {
configureObjectMapper();

TimedPullSample program = new TimedPullSample();
TimedPullResponse response = program.timedPull();

System.out.println("Transaction Status:" + response.Status);
System.out.println("Account number: " + response.AccountNumber);
System.out.println("Transaction number: " + response.TransactionNumber);
 }

 /**
* Execute a timed pull transaction.
*
* @return The timed pull transaction response.
*/
 public TimedPullResponse timedPull() {
String resourceUrl = ApiUrl + "TimedPull";

final int FiveUsDollars = 500;

TimedPullRequest timedPullRequest = new TimedPullRequest();
timedPullRequest.TransactionNumber = this.getCardTransactionNumber();
timedPullRequest.Amount = FiveUsDollars;
timedPullRequest.AccountNumber = this.getSourceAccount();
timedPullRequest.ReceivingAccountNumber = this.getReceivingAccount();
timedPullRequest.InvoiceNumber = this.getInvoiceNumber();
timedPullRequest.Comment1 = "Wholesale cost";
timedPullRequest.Comment2 = "Tea Tree Oil";

HttpRequestWithBody request = this.createRequest(resourceUrl);

request.body(timedPullRequest);

return this.executeRequest(request, TimedPullResponse.class);
 }

 /**
* The source account's certificate string.
*
* This is different than the affiliate's certstring.
*
* Normally this would be in a database or configuration file.
*/
 private String getCertString() {
return "P1r305Pc4fy6S942m0p0la3c";
 }

 /**
* Gets a random invoice number.
*
* This would normally come from an internal invoice number tracking system.
*
* @return The invoice number.
*/
 private String getInvoiceNumber() {
Random rand = new Random();

int invoiceNumber = rand.nextInt(100) + 1;

return String.valueOf(invoiceNumber);
 }

 /**
* Get the account number for the account receiving the money.
*
* @return The receiving account number.
*/
 private long getReceivingAccount() {
return 97531246;
 }

 /**
* Get the account number for the source of the money.
*/
 private long getSourceAccount() {
return 97531250;
 }

 /**
* Get the transaction number from which to split funds.
*
* This would normally be generated as a result of an earlier call, see
* ProtectPay API Manual section "Process a PaymentMethodId" or the ProPay
* API manual section "Process a Credit Card Transaction".
*/
 private long getCardTransactionNumber() {
return 627;
 }

 /**
* Create the request instance. This ensures that the authentication header
* is attached to each request.
*
* @param resourceUrl
* The URL of the REST resource.
* @return The GetRequest instance.
*/
 private HttpRequestWithBody createRequest(String resourceUrl) {
String certString = this.getCertString();


HttpRequestWithBody restRequest = Unirest.put(resourceUrl).basicAuth(certString, null)
.header("accept", "application/json").header("Content-Type", "application/json");

return restRequest;
 }

 /**
* Execute a REST request.
*
* @param request
* The request to perform.
* @param responseClass
* The type instance of the return type.
* @return An instance of type T or null if there was an error.
*/
 private <T> T executeRequest(HttpRequest request, Class<T> responseClass) {
try {
HttpResponse<T> response = request.asObject(responseClass);
if (response.getStatus() != 200) { // HTTP OK response code
System.out.println(response.getStatusText());
return null;
}

return response.getBody();
} catch (UnirestException e) {
e.printStackTrace();
}

return null;
 }

 /**
* Configures the mapping between JSON and Classes.
*
* This is boilerplate Unirest & Jackson configuration. It should only need
* to be done once in a full solution.
*/
 private static void configureObjectMapper() {
Unirest.setObjectMapper(new ObjectMapper() {
private com.fasterxml.jackson.databind.ObjectMapper jacksonObjectMapper = new com.fasterxml.jackson.databind.ObjectMapper();

public <T> T readValue(String value, Class<T> valueType) {
try {
return jacksonObjectMapper.readValue(value, valueType);
} catch (IOException e) {
throw new RuntimeException(e);
}
}

public String writeValue(Object value) {
try {
return jacksonObjectMapper.writeValueAsString(value);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
});
 }
}

// -------------------------------------------------------------------------------------------- //
// Object files

// TimedPullRequest.java

import com.fasterxml.jackson.annotation.JsonProperty;

/*
ProPay provides the following code "AS IS."
ProPay makes no warranties and ProPay disclaims all warranties and conditions, express, implied or statutory,
including without limitation the implied warranties of title, non-infringement, merchantability, and fitness for a particular purpose.
ProPay does not warrant that the code will be uninterrupted or error free,
nor does ProPay make any warranty as to the performance or any results that may be obtained by use of the code.
*/

/**
 * A request for a timed pull transaction.
 */
public class TimedPullRequest {
 /**
* The proPay account identifier. This is the ‘from’ account and the account
* upon which the credit card transaction was initially performed.
*/
 @JsonProperty("accountNum")
 public long AccountNumber;

 /**
* The ProPay account identifier. This is the account to which the split
* will be sent when the transaction settles.
*/
 @JsonProperty("recAccntNum")
 public long ReceivingAccountNumber;

 /**
* The amount to be split off to the receiving account number when the
* transaction settles. 100=$1.00.
*/
 @JsonProperty("amount")
 public long Amount;

 /**
* The ProPay transaction identifier. It is when this transaction settles
* that the timed pull will occur.
*/
 @JsonProperty("transNum")
 public long TransactionNumber;

 /**
* The invoice number for the transaction.
*/
 public String InvoiceNumber;

 /**
* The first comment.
*/
 @JsonProperty("comment1")
 public String Comment1;

 /**
* The second comment.
*/
 @JsonProperty("comment2")
 public String Comment2;
}

// -------------------------------------------------------------------------------------------- //
// TimedPullResponse.java

/*
ProPay provides the following code "AS IS."
ProPay makes no warranties and ProPay disclaims all warranties and conditions, express, implied or statutory,
including without limitation the implied warranties of title, non-infringement, merchantability, and fitness for a particular purpose.
ProPay does not warrant that the code will be uninterrupted or error free,
nor does ProPay make any warranty as to the performance or any results that may be obtained by use of the code.
*/

/**
 * Response to a timed pull request.
 */
public class TimedPullResponse {
 /**
* The proPay account identifier. This is the ‘from’ account and the account
* upon which the credit card transaction was initially performed.
*/
 public long AccountNumber;

 /**
* The ProPay transaction identifier. It is when this transaction settles
* that the timed pull will occur.
*/
 public long TransactionNumber;

 /**
* The status.
*/
 public String Status;
}

Response Handling

The following sample uses the Unirest and Jackson libraries.

You can add them to your project using:

Apache Maven
<dependency>
<groupId>com.mashape.unirest</groupId>
<artifactId>unirest-java</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8.1</version>
</dependency>


Gradle/Grails
compile 'com.mashape.unirest:unirest-java:1.4.9'
compile 'com.fasterxml.jackson.core:jackson-databind:2.8.8.1'

Request Submission

Response Handling

Request Values

Element

Type

Notes

AccountNumber

Integer

The accountNum of the original merchant

Status

String

See section ProPay Appendix B for explanation of each status code returned

TransactionNumber

Integer

Transaction identifier for the recipient’s account.

Response Values

Element

Type

Max

Required

Notes

accountNum

Integer

 

Required

ProPay account identifier. This is the ‘from’ account and the account upon which the cc transaction or ach transaction was initially performed.

recAccntNum

Integer

 

Required

ProPay account identifier. This is the account to which the split will be sent when the transaction settles.

amount

Integer

 

Required

The amount to be split off to the recAccntNum when the transaction settles.

transNum

Integer

 

Required

ProPay transaction identifier. It is when this transaction settles that the timed pull will occur.

invNum

String

50

Optional

Optional Invoice Number for external tracking

comment1

String

120

Optional

Optional Comment Line 1

comment2

String

120

Optional

Optional Comment Line 2

How to call this method?

You should submit a post of XML data to the following URL
 
HTTP URL(s)
Example Request

Example Response

<?xml version='1.0'?>
<!DOCTYPE Request.dtd>
<XMLRequest>
<certStr>MyCertStr</certStr>
<class>partner</class>
<XMLTrans>
<transType>16</transType>
<accountNum>123456</accountNum>
<recAccntNum>987654</recAccntNum>
<amount>2000</amount>
<transNum>11</transNum>
</XMLTrans>
</XMLRequest>
<XMLResponse>
<XMLTrans>
<transType>16</transType>
<accountNum>123456</accountNum>
<transNum>5</transNum>
<status>00</status>
</XMLTrans>
</XMLResponse>
Implementation Details
Request Submission

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Values

Element

Type

Max

Required

Notes

accountNum

Integer

 

Required

ProPay account identifier. This is the ‘from’ account and the account upon which the cc transaction or ach transaction was initially performed.

recAccntNum

Integer

 

Required

ProPay account identifier. This is the account to which the split will be sent when the transaction settles.

amount

Integer

 

Required

The amount to be split off to the recAccntNum when the transaction settles.

transNum

Integer

 

Required

ProPay transaction identifier. It is when this transaction settles that the timed pull will occur.

invNum

String

50

Optional

Optional Invoice Number for external tracking

comment1

String

120

Optional

Optional Comment Line 1

comment2

String

120

Optional

Optional Comment Line 2

Response Values

Element

Type

Notes

transType

String

Always 16 for this transaction type

accountNum

Integer

The accountNum of the original merchant

status

String

See section ProPay Appendix for explanation of each status code returned

transNum

Integer

Transaction identifier for the recipient’s account.

How to call this method?

Example Request

Example Response

Implementation Details
Request Submission

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Values
Response Values