Interac Withdrawal (PayPer)

Pay.Per´s Interac Withdrawal is an withdrawal banking method from Canada.

Payper’s Interac e-Transfer Payout API allows merchants to quickly disburse funds directly to their customer’s bank account in real time, including weekends.

With Interac e-Transfer Payouts, the merchant´s customers will receive an email allowing them to select their bank account and authorize the transfer.

The following method IDs are covered in this section:

IDNameCredit/Debit State
435Interac WithdrawalWithdrawnByProvider

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

ProviderID: 204

After initiating the payment with Pay.per, the merchant´s customer will receive an eMail with instructions to receive their payout using their credentials.


Redirect Integration

Not supported at this moment.

Flow diagram

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:

IP-Address (required)The user´s IP address.

Example initiatePaymentRequest:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xmlns="http://www.cqrpayments.com/PaymentProcessing">
	<merchantID>TestMerchant</merchantID>
	<shopID>TestShop</shopID>
	<merchantTransactionID>2cafb1c3-4c7a-4d4e-8768-1a569c319177</merchantTransactionID>
	<paymentMethodID>435</paymentMethodID>
	<amount currencyCode="CAD">11.11</amount>
	<userID>afb6629f-0169-4777-943f-22e73a</userID>
	<userData>
		<username>afb6629f-0169-4777-943f-22e73a</username>
		<firstname>Ion</firstname>
		<lastname>Popescu</lastname>
		<currencyCode>CAD</currencyCode>
		<languageCode xsi:nil="true"/>
		<email>[email protected]</email>
		<address>
			<street>Test Street 209</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>10.155.19.254</userIP>
	<userSessionID>f208d795-c72f-4d22-b370-26e5a1fef27c</userSessionID>
	<creationTypeID>1</creationTypeID>
	<specificPaymentData>
		<data xsi:type="keyStringValuePair">
			<key>PaymentDescription</key>
			<value>My äüöáè payment!</value>
		</data>
	</specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentResponse for InitiatedByProvider:

<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>435</key>
			<value>Interac Withdrawal</value>
		</paymentMethod>
		<merchantTransactionID>2cafb1c3-4c7a-4d4e-8768-1a569c319177</merchantTransactionID>
		<paymentID>3215decc-ed70-4873-875f-15e815c6b6e5</paymentID>
		<userID>afb6629f-0169-4777-943f-22e73a</userID>
		<paymentProvider>
			<key>204</key>
			<value>Payper</value>
		</paymentProvider>
		<amount currencyCode="CAD">11.11</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>10.155.19.254</userIP>
		<state>
			<id>02c34df9-7905-4c3b-9d34-4c046f0b8a73</id>
			<definition>
				<key>3</key>
				<value>InitiatedByProvider</value>
			</definition>
			<createdOn>2022-09-13T12:08:42.4213583Z</createdOn>
			<paymentStateDetails>
				<detail xsi:type="keyStringValuePair">
					<key>PaymentStateReasonID</key>
					<value>1</value>
				</detail>
			</paymentStateDetails>
		</state>
		<isExecuted>false</isExecuted>
		<baseAmount currencyCode="EUR">8.02</baseAmount>
		<paymentDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderTransactionID</key>
				<value>30678243656569432411425523055</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderExternalID</key>
				<value>1624</value>
			</detail>
			<detail xsi:type="keyBooleanValuePair">
				<key>UrgentPayment</key>
				<value>true</value>
			</detail>
		</paymentDetails>
	</payment>
</initiatePaymentResponse>

Example initiatePaymentResponse for PendingOnProvider:

<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>XXXX</merchantID>
		<shopID>XXXX</shopID>
		<paymentMethod>
			<key>435</key>
			<value>Interac Withdrawal</value>
		</paymentMethod>
		<merchantTransactionID>2cafb1c3-4c7a-4d4e-8768-1a569c319177</merchantTransactionID>
		<paymentID>3215decc-ed70-4873-875f-15e815c6b6e5</paymentID>
		<userID>afb6629f-0169-4777-943f-22e73a</userID>
		<paymentProvider>
			<key>204</key>
			<value>Payper</value>
		</paymentProvider>
		<amount currencyCode="CAD">11.11</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>10.155.19.254</userIP>
		<state>
			<id>ea1fafbf-6640-4017-9859-d3cba1c9a62e</id>
			<definition>
				<key>120</key>
				<value>PendingOnProvider</value>
			</definition>
			<createdOn>2022-09-13T12:08:42.4213583Z</createdOn>
			<paymentStateDetails>
				<detail xsi:type="keyStringValuePair">
					<key>PaymentStateReasonID</key>
					<value>1</value>
				</detail>
			</paymentStateDetails>
		</state>
		<isExecuted>false</isExecuted>
		<baseAmount currencyCode="EUR">8.02</baseAmount>
		<paymentDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderTransactionID</key>
				<value>30678243656569432411425523055</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderExternalID</key>
				<value>1624</value>
			</detail>
      <detail xsi:type="keyBooleanValuePair">
				<key>UrgentPayment</key>
				<value>false</value>
			</detail>
		</paymentDetails>
	</payment>
</initiatePaymentResponse>

Example initiatePaymentResponse for an error state

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                         xmlns="http://www.cqrpayments.com/PaymentProcessing">
	<payment xsi:type="paymentWithPaymentAccount">
		<merchantID>XXXX</merchantID>
		<shopID>XXXX</shopID>
		<paymentMethod>
			<key>435</key>
			<value>Interac Withdrawal</value>
		</paymentMethod>
		<merchantTransactionID>25a199b7-fcd2-4330-84eb-8f44455db07b</merchantTransactionID>
		<paymentID>5a05d570-d19f-4cd6-8ff6-af2830350321</paymentID>
		<userID>f5074d2c-748a-4951-826b-54d6c6</userID>
		<paymentProvider>
			<key>204</key>
			<value>Payper</value>
		</paymentProvider>
		<amount currencyCode="CAD">20.10</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>127.0.0.1</userIP>
		<state>
			<id>4eee951d-ac1a-4b0c-b5f8-c33ed349364b</id>
			<definition>
				<key>4</key>
				<value>InitiateErrorReportedByProvider</value>
			</definition>
			<createdOn>2022-09-13T11:32:43.2177083Z</createdOn>
			<paymentStateDetails>
				<detail xsi:type="keyStringValuePair">
					<key>PaymentStateReasonID</key>
					<value>1</value>
				</detail>
			</paymentStateDetails>
		</state>
		<isExecuted>false</isExecuted>
		<baseAmount currencyCode="EUR">14.52</baseAmount>
		<paymentDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderExternalID</key>
				<value>1581</value>
			</detail>
		</paymentDetails>
	</payment>
</initiatePaymentResponse>

Possible payment details in initiatePaymentResponse:

ProviderTransactionIDTransactionID at provider
ProviderExternalIDProviderExternalID sent by PXP to provider
UrgentPaymentField to return the customer´s auto deposit status.

📘

UrgentPayment

This field will return the customer´s auto deposit status and show if the payment is processed immediately or with a delay.

The possible values are "true" or "false" (boolean).

True is returned if Payper can confirm that at the time of the request that this customer has auto deposit enabled. In some cases this only indicates a high likelihood that the customer has auto deposit enabled.

False is returned if Payper can confirm that at the time of request that this customer does not have auto deposit enabled, or when Payper cannot query the status of the auto deposit at this time.

Possible payment states in initiatePaymentResponse:

Payment StateDescription
InitiatedByProvider (3)OK state; the payment has been initiated by PayPer.
InitiateErrorReportedByProvider (4)Error state; Technical error during payment initialization. Final state.
PendingOnProviderIntermediate state (rare state set before InitiatedByProvider)
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>435</key>
		<value>Interac Withdrawal</value>
	</paymentMethod>
	<merchantTransactionID>9480359b-05b9-4dc7-9897-96ded2dc26fa</merchantTransactionID>
	<paymentID>a32833ca-5f65-44a9-8442-dc2002b3bc6f</paymentID>
	<userID>a92f94cf-3c60-426a-b763-5d3778</userID>
	<paymentProvider>
		<key>204</key>
		<value>Payper</value>
	</paymentProvider>
	<amount currencyCode="CAD">13.92</amount>
	<creationType>
		<key>1</key>
		<value>User</value>
	</creationType>
	<userIP>10.155.19.254</userIP>
	<state>
		<id>d2592468-063a-443d-b243-7435ebd6a2ea</id>
		<definition>
			<key>225</key>
			<value>ValidationFailed</value>
		</definition>
		<createdOn>2023-03-28T10:29:33.5662887Z</createdOn>
		<paymentStateDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderErrorResponseCode</key>
				<value>1115</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderErrorResponseMessage</key>
				<value>invalid ip address!</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">10.05</baseAmount>
	<paymentDetails>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderExternalID</key>
			<value>57495</value>
		</detail>
	</paymentDetails>
</payment>
</initiatePaymentResponse>

📘

Possible duplication of InitiatedByProvider state in initiatePaymentResponse and notification

The state InitiatedByProvider will be returned in the initiatePaymentResponse and also in the handlePaymentStateChangedNotification.

There 2 options:
a) The Interac Withdrawal will be processed without a delay by Pay.per.

The initiatePaymentResponse will list the state InitiatedByProvider and a handlePaymentStateChangedNotification for InitiatedByProvider will also be sent.

Alternatively, the initiatePaymentResponse will include an error, such as ValidationFailed or InitiateRefusedByProvider

b) The Interac Withdrawal will be batched and processed with a delay.

The initiatePaymentResponse will include the state PendingOnProvider. Later the state InitiatedByProvider will be notified to the merchant in the handlePaymentStateChangedNotificiation.

If an error occurs, it is possible that after the state PendingOnProvider an error state - such as ValidationFailed- will be notified in the handlePaymentStateChangedNotification.

Optional customer validation

After the withdrawal has been initiated with PayPer, a customer validation may follow.

The payment will go to the following states:

StateDescription
PendingOnUserVerificationThe user will receive an email asking him/her for additional verification. This is a one-time step - after the verification has been completed successfully, any follow-up payment will directly go to PendingOnCustomer state.
UserVerificationFailedUser verification has failed.
ProviderResponseCode 6014 indicate that the customer failed to verify the account.
ProviderResponseCode 6013 indicates a timeout. On production the expiry is set to 48 hours, but it can be configured by PayPer.
A different ProviderResponseCode may also be returned.
PendingOnCustomerPayout has been sent, waiting for customer to accept.
This state is reach after sucessful user verification and on any follow-up payment.

Sample handlePaymentStateChangedNotificationRequest for PendingOnUserVerification:

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <payment xmlns="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
    <merchantID>B2BTestMerchant</merchantID>
    <shopID>PayperMockShop</shopID>
    <paymentMethod>
      <key>435</key>
      <value>Interac Withdrawal</value>
    </paymentMethod>
    <merchantTransactionID>7ce6a62b-ee67-4453-b6bf-c595099a31c4</merchantTransactionID>
    <paymentID>f59fbbb7-8588-4a38-a0a4-41a5cbb3d119</paymentID>
    <userID>c69e6aa3-c0f5-48ca-b403-6bc326</userID>
    <paymentProvider>
      <key>204</key>
      <value>Payper</value>
    </paymentProvider>
    <amount currencyCode="CAD">20.1000</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <userIP>127.0.0.1</userIP>
    <state>
      <id>54cd9a06-00d7-4a2e-af0b-f81429a0a014</id>
      <definition>
        <key>589</key>
        <value>PendingOnUserVerification</value>
      </definition>
      <createdOn>2025-01-27T13:05:27.237</createdOn>
      <paymentStateDetails>
        <detail xsi:type="keyIntValuePair">
          <key>PaymentStateReasonID</key>
          <value>1</value>
        </detail>
      </paymentStateDetails>
    </state>
    <isExecuted>false</isExecuted>
    <baseAmount currencyCode="EUR">14.5200</baseAmount>
    <paymentDetails>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderExternalID</key>
        <value>320772</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderTransactionID</key>
        <value>7895904982907547</value>
      </detail>
    </paymentDetails>
  </payment>
</handlePaymentStateChangedNotificationRequest>

Sample handlePaymentStateChangedNotification for state UserVerificationFailed:

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <payment xmlns="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
    <merchantID>B2BTestMerchant</merchantID>
    <shopID>PayperMockShop</shopID>
    <paymentMethod>
      <key>435</key>
      <value>Interac Withdrawal</value>
    </paymentMethod>
    <merchantTransactionID>f7d5a84b-170c-4f3a-b017-08b81b7683c3</merchantTransactionID>
    <paymentID>a6733da6-6e36-48ae-a58c-f62c59e827fb</paymentID>
    <userID>c397dfb5-7c77-4f2c-bbd6-23837b</userID>
    <paymentProvider>
      <key>204</key>
      <value>Payper</value>
    </paymentProvider>
    <amount currencyCode="CAD">20.1000</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <userIP>127.0.0.1</userIP>
    <state>
      <id>953018b1-a3dd-4d69-92ea-811285d9f756</id>
      <definition>
        <key>592</key>
        <value>UserVerificationFailed</value>
      </definition>
      <createdOn>2025-01-27T13:08:55.847</createdOn>
      <paymentStateDetails>
        <detail xsi:type="keyStringValuePair">
          <key>ProviderResponseCode</key>
          <value>6014</value>
        </detail>
        <detail xsi:type="keyIntValuePair">
          <key>PaymentStateReasonID</key>
          <value>1</value>
        </detail>
      </paymentStateDetails>
    </state>
    <isExecuted>false</isExecuted>
    <baseAmount currencyCode="EUR">14.5200</baseAmount>
    <paymentDetails>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderExternalID</key>
        <value>320773</value>
      </detail>
    </paymentDetails>
  </payment>
</handlePaymentStateChangedNotificationRequest>

Final states

These states below are final states:

Payment StateDescription
WithdrawnByProvider (20)The payment was completed successfully. Customer has successfully deposited their payout.
Expired (102)Customer did not deposit their payout and it has expired. An eTransfer withdrawal will expire 30 days from midnight UTC the following day.
AbortedByCustomer (101)Payout has been declined by the customer.
AbortedByProvider (352)Payout was returned - customer did not receive the funds.
Aborted (524)Payment called by merchant or by PayPer on behalf of the merchant.

Sample handlePaymentStateChangedNotification for state WithdrawnByProvider:

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <payment xmlns="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
    <merchantID>B2BTestMerchant</merchantID>
    <shopID>PayperMockShop</shopID>
    <paymentMethod>
      <key>435</key>
      <value>Interac Withdrawal</value>
    </paymentMethod>
    <merchantTransactionID>811fbdb9-7d81-447d-8eda-448820434eef</merchantTransactionID>
    <paymentID>0dd21d9e-9105-421e-a6d3-ad59e55199df</paymentID>
    <userID>0c3e86c5-351d-4ce0-bcca-d32680</userID>
    <paymentProvider>
      <key>204</key>
      <value>Payper</value>
    </paymentProvider>
    <amount currencyCode="CAD">20.1600</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <userIP>127.0.0.1</userIP>
    <state>
      <id>5e87508a-7ab0-40ef-86ae-4463db27d7f6</id>
      <definition>
        <key>20</key>
        <value>WithdrawnByProvider</value>
      </definition>
      <createdOn>2025-02-03T09:50:32.533</createdOn>
      <paymentStateDetails xsi:nil="true" />
    </state>
    <isExecuted>true</isExecuted>
    <baseAmount currencyCode="EUR">14.5600</baseAmount>
    <paymentDetails>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderExternalID</key>
        <value>324278</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderTransactionID</key>
        <value>1559713715151042</value>
      </detail>
    </paymentDetails>
  </payment>
</handlePaymentStateChangedNotificationRequest>

Sample handlePaymentStateChangedNotification for state Expired:

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <payment xmlns="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
    <merchantID>B2BTestMerchant</merchantID>
    <shopID>PayperMockShop</shopID>
    <paymentMethod>
      <key>435</key>
      <value>Interac Withdrawal</value>
    </paymentMethod>
    <merchantTransactionID>4ff98b3e-6f7b-4c25-9407-762294d5cc06</merchantTransactionID>
    <paymentID>df8e2252-71bf-45ab-ad9e-c97c975d8d87</paymentID>
    <userID>95211916-72ef-4e2c-ae8f-ad277a</userID>
    <paymentProvider>
      <key>204</key>
      <value>Payper</value>
    </paymentProvider>
    <amount currencyCode="CAD">20.1800</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <userIP>127.0.0.1</userIP>
    <state>
      <id>eabd1d64-9d51-4e34-a2c6-7ede6880e86b</id>
      <definition>
        <key>102</key>
        <value>Expired</value>
      </definition>
      <createdOn>2025-02-03T09:51:24.687</createdOn>
      <paymentStateDetails>
        <detail xsi:type="keyIntValuePair">
          <key>PaymentStateReasonID</key>
          <value>1</value>
        </detail>
      </paymentStateDetails>
    </state>
    <isExecuted>false</isExecuted>
    <baseAmount currencyCode="EUR">14.5700</baseAmount>
    <paymentDetails>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderExternalID</key>
        <value>324285</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderTransactionID</key>
        <value>2862390296081139</value>
      </detail>
    </paymentDetails>
  </payment>
</handlePaymentStateChangedNotificationRequest>

Sample handlePaymentStateChangedNotification for state AbortedByCustomer:

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <payment xmlns="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
    <merchantID>B2BTestMerchant</merchantID>
    <shopID>PayperMockShop</shopID>
    <paymentMethod>
      <key>435</key>
      <value>Interac Withdrawal</value>
    </paymentMethod>
    <merchantTransactionID>147d2eb7-b039-4bf3-9056-29ba65cdb3b8</merchantTransactionID>
    <paymentID>f6fc49a5-bbbd-4905-8cca-aaab441bca83</paymentID>
    <userID>3ab20c04-0da1-48b9-8721-807ca9</userID>
    <paymentProvider>
      <key>204</key>
      <value>Payper</value>
    </paymentProvider>
    <amount currencyCode="CAD">20.1200</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <userIP>127.0.0.1</userIP>
    <state>
      <id>72258533-c901-4d97-a3bd-fa063eeb382a</id>
      <definition>
        <key>101</key>
        <value>AbortedByCustomer</value>
      </definition>
      <createdOn>2025-02-03T09:49:29.363</createdOn>
      <paymentStateDetails>
        <detail xsi:type="keyIntValuePair">
          <key>PaymentStateReasonID</key>
          <value>1</value>
        </detail>
      </paymentStateDetails>
    </state>
    <isExecuted>false</isExecuted>
    <baseAmount currencyCode="EUR">14.5300</baseAmount>
    <paymentDetails>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderExternalID</key>
        <value>324265</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderTransactionID</key>
        <value>191486392</value>
      </detail>
    </paymentDetails>
  </payment>
</handlePaymentStateChangedNotificationRequest>

Notifications

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

Provider Testing

For payout verification initiate a withdrawal with an email address ending in .com
If you use a .ca email address, it will be assumed that auto-deposit is enabled, and the transaction will bypass payout_verification if the name matches.

You will then receive an eMail asking you for additional verification:
Select either "Receive Microdeposit", "Enable Autodeposit" or "Complete Bank Verification".

To repeat a success test, you will need to use a different user, as a subsequent payment for the same user will not go through user validation.

If the customer fails the verification, a notification will be received with code 6014. In order to fail the verification, test with amount 13.37 for micro-deposit failures. It is necessary to fail all the three verification methods to receive code 6014.

Any other amount will result in a successful verification.

If the customer does not act on the verification eMail within the configured time period - 1 hour on TEST1 (sandbox) - the verification will expired and code 6013 will be triggered. In production the expiry period is set to 48 hours, but can be configured to a different value on the merchant´s request.


Please test with amounts ending as follows:

xx.00 state WithdrawnByProvider (webhook claimed)
xx.13 state AbortedByCustomer (declined)
xx.44 state AbortedByProvider (returned)
xx.55 state AbortedByProvider (failed)
xx.66 state Aborted (cancelled)
xx.99 state Expired (expired)