Interac Online Deposit

Pay.Per´s Interac Online deposit is an online banking payment method from Canada.

Payper’s Interac Online API allows the merchant to accept customers who prefer to pay with Interac Online. Although a legacy Interac product, it is a secure and easy online payment option for many Canadians.

The following method IDs are covered in this section:

IDNameCredit/Debit State
434Interac Online DepositDepositedByProvider (29)

Payment method interaction type: Redirection to External Payment Provider (see Interaction Types).

ProviderID: 204

After initiating the payment with Pay.per, the customer is redirected to a online banking selection page to complete their online payment.

The customer is redirected back from the online banking page to the merchant.

Redirect Integration

Not supported at this moment.

Backend2BackendIntegration

The merchant needs to ensure to include an user in the initiatepaymentRequest with the following data:

User.dataDescrition
eMail (required)The customer´s eMail address.
phone (required)The customer´s phone number. Please use this format: "+14034881071"
FirstName (required)The customer´s first name.
LastName (required)The customer´s last name
Address.Street (required)The customer´s street address.
Address.City (required)The customer´s city.
Address.State (required)The customer´s state in ISO format, e.g. "Alberta"
Address.Country (required)The customer´s country.
Address.postal_code (required)The customer´s zip code, either 5-digit zip code for US customer (e.g. "12345") or 6-character alphanumeric postal code (e.g. "A1A 1A1") for Canadian customers

The following data needs to be passed as well:

key (value type, account type, required)Value
IP-Address (required)The user´s IP address.

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)Value
HomePageURL
(string, required)
The URL to redirect user in case of successful payment

Example initiatePaymentRequest:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                        xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <merchantID>TestMerchant</merchantID>
    <shopID>TestShop</shopID>
    <merchantTransactionID>10000103</merchantTransactionID>
    <paymentMethodID>434</paymentMethodID>
    <amount currencyCode="CAD">1.00</amount>
    <userID>afb6629f-0169-4777-943f-22e73a1</userID>
    <userData>
        <username>afb6629f-0169-4777-943f-22e731a1</username>
        <firstname>testfirstname</firstname>
        <lastname>testlastname</lastname>
        <currencyCode>CAD</currencyCode>
        <languageCode xsi:nil="true"/>
        <email>[email protected]</email>
        <address>
            <street>Teststreet 1</street>
            <houseName xsi:nil="true"/>
            <houseNumber xsi:nil="true"/>
            <houseNumberExtension xsi:nil="true"/>
            <postalCode>T1A 0N1</postalCode>
            <city>Hamilton</city>
            <state>ON</state>
            <countryCode2>CA</countryCode2>
            <telephoneNumber>+14034881071</telephoneNumber>
        </address>
        <gender>Male</gender>
        <identificationNumberType xsi:nil="true"/>
        <drivingLicenseNumber xsi:nil="true"/>
        <drivingLicenseIssuingState xsi:nil="true"/>
    </userData>
    <userIP>127.0.0.1</userIP>
    <userSessionID>08b980b9-b5be-4d0a-9e1b-a6541d6ac9ce</userSessionID>
    <creationTypeID>1</creationTypeID>
     <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>HomePageUrl</key>
            <value>https://pxpfinancial.com</value>
        </data>
    </specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing"
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<payment xsi:type="paymentWithPaymentAccount">
		<merchantID>TestMerchant</merchantID>
		<shopID>TestShop</shopID>
		<paymentMethod>
			<key>434</key>
			<value>Interac Online Deposit</value>
		</paymentMethod>
		<merchantTransactionID>Payper_ProviderTesting_Online_001</merchantTransactionID>
		<paymentID>70ce5133-d6cb-4efb-aa1b-79c878a0cf17</paymentID>
		<userID>a6f548a1-7541-4c2c-91f7-1d7549</userID>
		<paymentProvider>
			<key>204</key>
			<value>Payper</value>
		</paymentProvider>
		<amount currencyCode="CAD">201.00</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>127.0.0.1</userIP>
		<state>
			<id>8ec00df3-3062-45ab-915d-f02d1ed16806</id>
			<definition>
				<key>30</key>
				<value>RedirectURLCreated</value>
			</definition>
			<createdOn>2022-09-12T07:58:18.6596592Z</createdOn>
			<paymentStateDetails>
				<detail xsi:type="keyStringValuePair">
					<key>RedirectionUrl</key>
					<value>https://sandbox.interac.payper.ca/interacOnline/30676372713998500493862421822</value>
				</detail>
				<detail xsi:type="keyStringValuePair">
					<key>PaymentStateReasonID</key>
					<value>1</value>
				</detail>
			</paymentStateDetails>
		</state>
		<isExecuted>false</isExecuted>
		<baseAmount currencyCode="EUR">145.16</baseAmount>
		<paymentDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderTransactionID</key>
				<value>30676372713998500493862421822</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderExternalID</key>
				<value>679</value>
			</detail>
		</paymentDetails>
	</payment>
</initiatePaymentResponse>

Possible payment states in initiatePaymentResponse:

Payment StateDescription
RedirectURLCreated (287)OK state; Redirect user to the URL

The merchant system should retrieve the redirect URL from the key RedirectionUrl
InitiateErrorReportedByProvider (4)Error state; Technical error during payment initialization. Final state.
InitiateRequestProviderCommunicationErrorOccured (325)Technical communication error state. Final state.
InitiateRefusedByProvider (550)Generic provider decline
ValidationFailed (225)Error state returned if submitted data is incorrect.

Incorrect field information will be returned in ProviderErrorResponseCode, ProviderErrorResponseMessage _and _ProviderResponseMessageAdvice

Sample initiatePaymentResponse with state ValidationFailed:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentResponse xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
                         xmlns:xsd=http://www.w3.org/2001/XMLSchema
                         xmlns=http://www.cqrpayments.com/PaymentProcessing>
<payment
         xsi:type="paymentWithPaymentAccount">
	<merchantID>B2BTestMerchant</merchantID>
	<shopID>PayperMockShop</shopID>
	<paymentMethod>
		<key>434</key>
		<value>Interac Online Deposit</value>
	</paymentMethod>
	<merchantTransactionID>30f7e6e0-849d-41e1-ae78-372a752bfb36</merchantTransactionID>
	<paymentID>a883cd39-51a2-40e4-a788-df661eb552a1</paymentID>
	<userID>1a04a008-ff20-407c-a69a-f218cd</userID>
	<paymentProvider>
		<key>204</key>
		<value>Payper</value>
	</paymentProvider>
	<amount currencyCode="CAD">104.01</amount>
	<creationType>
		<key>1</key>
		<value>User</value>
	</creationType>
	<userIP>127.0.0.1</userIP>
	<state>
		<id>3a740f93-db9b-45fa-b9d2-eb446c7c47c9</id>
		<definition>
			<key>225</key>
			<value>ValidationFailed</value>
		</definition>
		<createdOn>2023-03-28T10:40:38.7194932Z</createdOn>
		<paymentStateDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderErrorResponseCode</key>
				<value>1116</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderErrorResponseMessage</key>
				<value>udf1 must be unique!</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderResponseMessageAdvice</key>
				<value>Sorry your request was declined!, please contact support for more information.</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>PaymentStateReasonID</key>
				<value>1</value>
			</detail>
		</paymentStateDetails>
	</state>
	<isExecuted>false</isExecuted>
	<baseAmount currencyCode="EUR">75.11</baseAmount>
	<paymentDetails>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderExternalID</key>
			<value>57501</value>
		</detail>
	</paymentDetails>
</payment>
</initiatePaymentResponse>

After redirection of the customer to Payper, a notification is being sent from Payper to PXP Financial.

Transition from redirect to final (success) state could take from a few seconds up to 24 hours.

📘

Intermediate states

The intermediate states PendingOnCustomer and PendingOnProvider are only available on InteracETransferDeposit.

These states below are final states:

Payment StateDescription
Expired (102)The payment request has expired.
DepositedByProvider (29)The payment was reported as successful by the provider.
RefusedByProvider (100)The payment has been declined.
Expired (102)The payment request has expired. An Interac Online payment will expire 48 hours from midnight UTC the following day.
Aborted (524)The payment has been cancelled by the merchant or by PayPer on behalf of the merchant.

📘

Expiry

An Interac Online payment will expire 48 hours from midnight UTC the following day.

For example, if an Interac eTransfer transaction is created at September 16th at 21:00 UTC, it will expire 48 hours from September 17th 00:00UTC so on September 19th at 00:00 UTC.

Notifications

The standard notification mechanism is used for notifying the merchant in the background (asynchronously) about payment state changes. For more information see PaymentStateChangedNotification.

Example handlePaymentStateChangedNotificationRequest:

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                              xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                              xmlns="http://www.cqrpayments.com/PaymentProcessing">
	<payment xsi:type="paymentWithPaymentAccount">
		<merchantID>TestMerchant</merchantID>
		<shopID>TestShop</shopID>
		<paymentMethod>
			<key>434</key>
			<value>Interac Online Deposit</value>
		</paymentMethod>
		<merchantTransactionID>b0008724-1820-443b-92ec-94c21cac54c8</merchantTransactionID>
		<paymentID>745700ba-6125-48b2-a1ce-c5e2de66dac6</paymentID>
		<userID>86a1c05d-9bf5-4093-91ea-342d1b</userID>
		<paymentProvider>
			<key>204</key>
			<value>Payper</value>
		</paymentProvider>
		<amount currencyCode="CAD">110.0100</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>127.0.0.1</userIP>
		<state>
			<id>1ac3bc42-1f4f-46ae-be2c-c7ea86e462d0</id>
			<definition>
				<key>29</key>
				<value>DepositedByProvider</value>
			</definition>
			<createdOn>2022-09-12T07:38:52.81</createdOn>
			<paymentStateDetails xsi:nil="true"/>
		</state>
		<isExecuted>true</isExecuted>
		<baseAmount currencyCode="EUR">79.4500</baseAmount>
		<paymentDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderExternalID</key>
				<value>646</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderTransactionID</key>
				<value>874e6383-d1ee-48f9-9c21-0628c5955094</value>
			</detail>
		</paymentDetails>
	</payment>
</handlePaymentStateChangedNotificationRequest>

Provider Testing

Open the redirectURL and choose between "approve" or "decline".