# Transactions

## Creating a new transaction

Use this endpoint if you want to add a new transaction.

`Method: POST`

`Endpoint: {{env}}/api/transaction`

**Canada**

{% tabs %}
{% tab title="EFT" %}

```json
{
  "ZumRailsType": "AccountsReceivable",
  "TransactionMethod": "Eft",
  "Amount": 123.45,
  "Memo": "Memo description",
  "Comment": "This transaction is just a test from a user to wallet",
  "UserId": "1d431e8b-...85452adb4eee",
  "WalletId": "8ebd932b-...b92633e14297"
}
```

{% endtab %}

{% tab title="Visa Direct" %}

```json
{
  "ZumRailsType": "AccountsReceivable",
  "TransactionMethod": "VisaDirect",
  "Amount": 123.45,
  "Memo": "Memo description",
  "Comment": "This transaction is just a test from a user to wallet",
  "UserId": "1d431e8b-...85452adb4eee",
  "WalletId": "8ebd932b-...b92633e14297"
}
```

{% endtab %}

{% tab title="Interac" %}

```json
{
  "ZumRailsType": "AccountsReceivable",
  "TransactionMethod": "Interac",
  "Amount": 123.45,
  "Memo": "Memo description",
  "Comment": "This transaction is just a test from a user to wallet",
  "User": {
    "CompanyName": "Example Company",
    "Email": "example@company.com"
  },
  "InteracNotificationChannel": "email",
  "WalletId": "8ebd932b-...b92633e14297",
  "InteracHasSecurityQuestionAndAnswer": true,
  "InteracSecurityQuestion": "Your question",
  "InteracSecurityAnswer": "Your answer"
}
```

{% endtab %}

{% tab title="Credit Card" %}

```json
{
  "ZumRailsType": "AccountsReceivable",
  "TransactionMethod": "CreditCard",
  "Amount": 123.45,
  "Memo": "Memo",
  "Comment": "This transaction is just a test from a user to wallet",
  "UserId": "1d431e8b-...85452adb4eee",
  "Authorize": {
    "Capture": false,
    "AutoExpireDays": 5
  }
}
```

{% endtab %}

{% tab title="Prepaid Card" %}

```json
{
    "Amount": 10.0,
    "ZumRailsType": "LoadCard",
    "TransactionMethod": "PrepaidCard",
    "Memo": "",
    "Comment": "",
    "WalletId": "1d431e8b-...85452adb4eee",
    "UserId": "8ebd932b-...b92633e14297"
}

```

{% endtab %}

{% tab title="Response" %}

```json
{
  "statusCode": 200,
  "message": "POST Request successful.",
  "isError": false,
  "result": {
    "Id": "0bc9894d-...f691024aca19"
  }
}
```

{% endtab %}
{% endtabs %}

**US**

{% tabs %}
{% tab title="ACH" %}

```json
{
  "ZumRailsType": "AccountsPayable",
  "TransactionMethod": "Ach",
  "Amount": 123.45,
  "Memo": "Memo",
  "Comment": "This transaction is just a test from a wallet to user",
  "UserId": "1d431e8b-...85452adb4eee",
  "WalletId": "8ebd932b-...b92633e14297",
  "PaymentInstrumentId": "92142401-...389ba0d87e75"
}
```

{% endtab %}

{% tab title="RTP-FedNow" %}

```json
{
  "ZumRailsType": "AccountsPayable",
  "TransactionMethod": "RtpFedNow",
  "Amount": 123.45,
  "Memo": "Memo",
  "Comment": "This transaction is just a test from a wallet to user",
  "UserId": "1d431e8b-...85452adb4eee",
  "WalletId": "8ebd932b-...b92633e14297",
  "PaymentInstrumentId": "92142401-...389ba0d87e75"
}
```

{% endtab %}

{% tab title="Debit Card" %}

```json
{
  "ZumRailsType": "AccountsPayable",
  "TransactionMethod": "DebitCard",
  "Amount": 123.45,
  "Memo": "Memo",
  "Comment": "This transaction is just a test from a wallet to user",
  "UserId": "1d431e8b-...85452adb4eee",
  "WalletId": "8ebd932b-...b92633e14297",
  "PaymentInstrumentId": "92142401-...389ba0d87e75"
}
```

{% endtab %}

{% tab title="Credit Card" %}

```json
{
  "ZumRailsType": "AccountsReceivable",
  "TransactionMethod": "CreditCard",
  "Amount": 123.45,
  "Memo": "Memo",
  "Comment": "This transaction is just a test from a user to wallet",
  "UserId": "1d431e8b-...85452adb4eee",
  "WalletId": "8ebd932b-...b92633e14297",
  "PaymentInstrumentId": "92142401-...389ba0d87e75"
}
```

{% endtab %}

{% tab title="Money Transfer" %}

```json
{
  "ZumRailsType": "AccountsReceivable",
  "TransactionMethod": "MoneyTransfer",
  "Amount": 123.45,
  "Memo": "Memo",
  "Comment": "This transaction is just a test from a user to wallet",
  "UserId": "1d431e8b-...85452adb4eee",
  "WalletId": "8ebd932b-...b92633e14297",
  "PaymentInstrumentId": "92142401-...389ba0d87e75"
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "statusCode": 200,
  "message": "POST Request successful.",
  "isError": false,
  "result": {
    "Id": "0bc9894d-...f691024aca19",
    "Amount": 123.45,
    "Comment": "This transaction is just a test from a wallet to user",
    "TransactionMethod": "Ach",
    "TransactionStatus": "InProgress",
    "Customer": {
      "Id": "911388da-5095-4cc9-bf51-cf636dd6c46b",
      "CompanyName": "US Company",
      "CompanyEmail": "uscompany@zumrails.com"
    },
    "ZumRailsType": "AccountsReceivable",
    "PaymentInstrumentId": "8951e72a-...d334f07fe908",
    "CreditCardResponseCode": "000",
    "CreditCardAdditionalResponseData": "APPROVAL",
    "User": {
      "Id": "8bad268a-5a76-4d59-8cc9-83e8e6cedfd1",
      "FirstName": "Jane",
      "LastName": "Smith",
      "Email": "jane.smith@example.com"
    },
    "Wallet": {
      "Id": "1662f74a-...d8b966ac7198",
      "Type": "Unified",
      "Currency": "USD"
    },
    "From": "Jane Smith - jane.smith@example.com",
    "Memo": "Memo",
    "To": "Zūm Wallet",
    "Currency": "USD",
    "CreatedAt": "2023-07-14T21:20:20.4715365Z",
    "TransactionHistory": [{
      {
        "Id": "1177131e-...d5a30d1f40ba",
        "CreatedAt": "2023-07-14T21:20:20.7628922Z",
        "Event": "Started",
        "EventDescription": "Transaction with type AccountsReceivable started, from Jane Smith - jane.smith@example.com to Zūm Wallet with amount: $123.45"
      },
    }]
  }
}
```

{% endtab %}
{% endtabs %}

**Input parameters**

{% tabs %}
{% tab title="Canada" %}

<table><thead><tr><th width="212">Parameter</th><th width="112">Type</th><th width="95.4000244140625">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>ZumRailsType</td><td>string</td><td>yes</td><td>Transaction type</td></tr><tr><td>TransactionMethod</td><td>string</td><td>yes</td><td>Transaction method</td></tr><tr><td>Amount</td><td>decimal</td><td>yes</td><td>Transaction amount</td></tr><tr><td>Memo</td><td>string</td><td>yes</td><td>Memo description. If customer transaction description type is "PerTransaction", this will be shown at the bank statements. Maximum of 15 characters. Only letters, numbers, dash, space and underscore are allowed</td></tr><tr><td>Comment</td><td>string</td><td>no</td><td>Internal comment you might want to add. Interac transactions will display the comment on the request.</td></tr><tr><td>FundingSourceId</td><td>guid</td><td>no</td><td>Funding Source Id</td></tr><tr><td>WalletId</td><td>guid</td><td>no</td><td>Wallet Id</td></tr><tr><td>UserId</td><td>guid</td><td>no</td><td>User Id</td></tr><tr><td>User</td><td><a href="users">User input</a></td><td>no</td><td>It's possible to create a transaction without adding a user first. Simply pass the user object (instead of the UserId) into the transaction body. For reference, check the payload example of the user object <a href="../users#create-a-new-user">here</a> and pass this when you create a transaction (check interac transaction payload example). Only available for EFT and interac transaction methods</td></tr><tr><td>AuthCode</td><td>string</td><td>no</td><td>Processor clients can use this to securely send user information in the transaction creation API.</td></tr><tr><td>ScheduledStartDate</td><td>date</td><td>no</td><td>The date when the transaction will be sent to the financial institution, in the format <code>YYYY-MM-DD</code>. Must be greater than today.</td></tr><tr><td>ClientTransactionId</td><td>string</td><td>no</td><td>This field can be used to store the Transaction id created in your system when the Transaction is initiated</td></tr><tr><td><strong>3D Secure</strong></td><td>-</td><td>-</td><td>Only needed for 3D secure - Visa Direct and Credit Card</td></tr><tr><td>CardEci</td><td>string</td><td>no</td><td>Received from 3D secure, required if using 3D Secure but optional for Visa Direct Accounts Payable transactions</td></tr><tr><td>CardXid</td><td>string</td><td>no</td><td>Received from 3D secure, required if using 3D Secure but optional for Visa Direct Accounts Payable transactions</td></tr><tr><td>CardCavv</td><td>string</td><td>no</td><td>Received from 3D secure, required if using 3D Secure but optional for Visa Direct Accounts Payable transactions</td></tr><tr><td><strong>Interac Fields</strong></td><td>-</td><td>-</td><td>Only needed for Interac transactions</td></tr><tr><td>UseInteracANR</td><td>boolean</td><td>no</td><td>Indicates whether a transaction will be deposited directly to the user's saved account. (This works only for Interac account payable). Read more about Interac ANR <a href="https://knowledge-base.zumrails.com/interac-anr">here</a>.</td></tr><tr><td>InteracHasSecurityQuestionAndAnswer</td><td>boolean</td><td>no</td><td>Indicate if there will be a question and answer for Interac</td></tr><tr><td>InteracSecurityQuestion</td><td>string</td><td>yes</td><td>The question for the user to process the interac request. Required if InteracHasSecurityQuestionAndAnswer is true. Pattern accepted: String [ 5 .. 40 ]. Characters accepted: a-zA-Z0-9àâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ </td></tr><tr><td>InteracSecurityAnswer</td><td>string</td><td>yes</td><td>The answer for the user to process the interac request. Required if InteracHasSecurityQuestionAndAnswer is true. Pattern accepted: String [ 3 .. 25 ]. Characters accepted: a-zA-Z0-9àâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ </td></tr><tr><td>SessionFingerprint</td><td>string</td><td>yes</td><td>A unique identifier for this sender, we recommend using <a href="https://github.com/fingerprintjs/fingerprintjs">fingerprintjs</a>. Required if peer-to-peer Interac transactions are enabled.</td></tr><tr><td>SessionIpAddress</td><td>string</td><td>yes</td><td>The IP address of the UserId, the sender, of the funds. Required if Accounts Payable with Interac, and peer-to-peer enabled.</td></tr><tr><td>InteracNotificationChannel</td><td>string</td><td>no</td><td>Indicates whether the notification will be sent via <strong>email</strong> or <strong>SMS</strong>. If not provided, the default value is <strong>email</strong>.</td></tr><tr><td><strong>Authorize</strong></td><td>-</td><td>no</td><td>Only needed for authorized hold Credit Card transactions</td></tr><tr><td>Capture</td><td>boolean</td><td>no</td><td>The field is required for authorized hold Credit Card transactions. Capture can be set to true or false</td></tr><tr><td>AutoExpireDays</td><td>number</td><td>no</td><td>The field is required for authorized hold Credit Card transactions. AutoExpireDays should be an number between 1 to 5.</td></tr></tbody></table>
{% endtab %}

{% tab title="US" %}

<table><thead><tr><th>Parameter</th><th width="122">Type</th><th width="129.5999755859375">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>ZumRailsType</td><td>string</td><td>yes</td><td>Transaction type</td></tr><tr><td>TransactionMethod</td><td>string</td><td>yes</td><td>Transaction method.</td></tr><tr><td>Amount</td><td>decimal</td><td>yes</td><td>Transaction amount</td></tr><tr><td>Memo</td><td>string</td><td>yes</td><td>Memo description.</td></tr><tr><td>Comment</td><td>string</td><td>no</td><td>Internal comment you might want to add.</td></tr><tr><td>FundingSourceId</td><td>guid</td><td>no</td><td>Funding Source Id</td></tr><tr><td>WalletId</td><td>guid</td><td>no</td><td>Wallet Id</td></tr><tr><td>UserId</td><td>guid</td><td>no</td><td>User Id</td></tr><tr><td>PaymentInstrumentId</td><td>string</td><td>yes</td><td>Payment instrument id</td></tr><tr><td>User</td><td><a href="users">User input</a></td><td>no</td><td>It's possible to create a transaction without adding a user first. Simply pass the user object (instead of the UserId) into the transaction body. For reference, check the payload example of the user object <a href="../users#create-a-new-user">here</a> and pass this when you create a transaction.</td></tr><tr><td>ScheduledStartDate</td><td>date</td><td>no</td><td>The date when the transaction will be sent to the financial institution, in the format <code>YYYY-MM-DD</code>. Must be greater than today.</td></tr><tr><td>ClientTransactionId</td><td>string</td><td>no</td><td>This field can be used to store the Transaction id created in your system when the Transaction is initiated</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

{% hint style="info" %}

* For **Interac transactions**, either a **memo** or a **comment** is required.\
  If both are provided, the **comment** will be shown in the Interac request.
* When creating a transaction with a **scheduled start date** (delay transaction initiation), the transaction will be queued and sent to the financial institution based on the specified schedule.
  {% endhint %}

{% hint style="info" %}
**INFO**

For different use cases, Zūm Rails recommends the following workflows:

* **Accounts Payable (AP):**\
  Fund the Zūm Wallet in advance to ensure funds are available for timely disbursements.
* **Accounts Receivable (AR):**\
  Move funds from the end user into the Zūm Wallet, then configure an automatic daily withdrawal to your funding source at the end of each day.
  {% endhint %}

**Response**

| Parameter | Type | Description    |
| --------- | ---- | -------------- |
| Id        | guid | Transaction id |

**ZumRailsType**

<table><thead><tr><th width="196">Type</th><th width="339">Description</th><th>Information to Provide</th></tr></thead><tbody><tr><td>FundZumWallet</td><td>Send money from your <strong>Funding Source</strong> to <strong>Zūm Wallet</strong></td><td><ul><li>FundingSourceId</li><li>WalletId</li></ul></td></tr><tr><td>WithdrawZumWallet</td><td>Withdraw money from <strong>Zūm Wallet</strong> to your <strong>Funding Source</strong></td><td><ul><li>FundingSourceId</li><li>WalletId</li></ul></td></tr><tr><td>AccountsPayable</td><td>Send money (accounts payable) from your <strong>Zūm Wallet</strong> to a <strong>User</strong></td><td><ul><li>UserId</li><li>WalletId</li></ul></td></tr><tr><td>AccountsPayable</td><td>Send money (accounts payable) from your <strong>Funding Source</strong> to a <strong>User</strong></td><td><ul><li>FundingSourceId</li><li>UserId</li></ul></td></tr><tr><td>AccountsReceivable</td><td>Receive money (accounts receivable) from a <strong>User</strong> to your <strong>Zūm Wallet</strong></td><td><ul><li>UserId</li><li>WalletId</li></ul></td></tr><tr><td>AccountsReceivable</td><td>Receive money (accounts receivable) from a <strong>User</strong> to your <strong>Funding Source</strong></td><td><ul><li>UserId</li><li>FundingSourceId</li></ul></td></tr><tr><td>UnloadCard</td><td>Debit transaction to the <strong>Zūm Wallet</strong> from the card</td><td><ul><li>UserId</li><li>WalletId</li></ul></td></tr><tr><td>LoadCard</td><td>Credit transaction loading the card from the <strong>Zūm Wallet</strong></td><td><ul><li>UserId</li><li>WalletId</li></ul></td></tr></tbody></table>

{% hint style="warning" %}
Credit Card transactions in Canada are settled directly into the merchant account. Hence, it is not required to specify the `WalletId` or `FundingSourceId` while creating a Credit Card transaction
{% endhint %}

**TransactionMethod**

{% tabs %}
{% tab title="Canada" %}

| Type         |
| ------------ |
| Eft          |
| Interac      |
| VisaDirect   |
| CreditCard   |
| PrepaidCard  |
| {% endtab %} |

{% tab title="US" %}

| Method        | Description               |
| ------------- | ------------------------- |
| Ach           | Standard ACH transaction  |
| SameDayAch    | Same-day ACH transaction  |
| RtpFedNow     | RTP/FedNow transaction    |
| DebitCard     | DebitCcard transaction    |
| CreditCard    | Credit Card transaction   |
| MoneyTransfer | MoneyTransfer transaction |
| {% endtab %}  |                           |
| {% endtabs %} |                           |

**InteracNotificationChannel**

{% tabs %}
{% tab title="Canada" %}

| InteracNotificationChannel |
| -------------------------- |
| email                      |
| sms                        |
| {% endtab %}               |
| {% endtabs %}              |

{% hint style="danger" %}
In a sandbox environment, real bank operations are not performed. It provides a way to simulate success, failures and review situations.
{% endhint %}

{% hint style="danger" %}
Interac transactions in sandbox will be simulated like the real flow. Hence, emails will be sent out to the user email mentioned when the transaction is created. Make sure to use a real email address to be able to simulate this flow and complete the transaction. Whether notification type is SMS the user will receive an **email simulating the SMS message**, containing a link to complete or decline the transaction. The user must have a **valid mobile phone number** associated with their profile to use the SMS notification option.
{% endhint %}

**Keywords to simulate a transaction failure (Canada)**

{% hint style="warning" %}
To simulate a failure, use one of the keywords to simulate failure (shown below) in the field COMMENT while creating a transaction. If no keyword is informed, or something else is informed, the transaction will eventually change status to "Completed". This service is executed every minute.
{% endhint %}

<table><thead><tr><th width="214">Eft</th><th>VisaDirect</th><th>Interac</th><th>CreditCard</th></tr></thead><tbody><tr><td>EftFailedValidationRejection</td><td>VisaDirectGenericError</td><td>InteracFailedRecipientContactInfoMissing</td><td>CreditCardDeclined</td></tr><tr><td>EftFailedInsufficientFunds</td><td>VisaDirectDoNotHonor</td><td>InteracFailedInvalidEmailFormat</td><td>CreditCardError *</td></tr><tr><td>EftFailedCannotLocateAccount</td><td>VisaDirectInsufficientFunds</td><td>InteracFailedInvalidPhoneNumber</td><td>CreditCardHeldForReview *</td></tr><tr><td>EftFailedStopPayment</td><td>VisaDirectNotPermittedToCardHolderInformed</td><td>InteracFailedMultipleTransferLevelErrors</td><td>CreditCardGenericError *</td></tr><tr><td>EftFailedAccountClosed</td><td>VisaDirectAmountLimitNotAuthorized</td><td>InteracFailedRevoked</td><td>CreditCardUnknownResponse *</td></tr><tr><td>EftFailedNoDebitAllowed</td><td>VisaDirectRejectedAmlOrFraud</td><td>InteracFailedBulkCancellationRequest</td><td>CreditCardHoldCallOrPickUpCard *</td></tr><tr><td>EftFailedFundsNotFree</td><td>VisaDirectRejectedAccountLimitExceeded</td><td>InteracFailedRecipientRejected</td><td>CreditCardSecViolation *</td></tr><tr><td>EftFailedCurrencyAccountMismatch</td><td>VisaDirectReenterTransaction</td><td>InteracFailedAuthentication</td><td>CreditCardServNotAllowed *</td></tr><tr><td>EftFailedPayorPayeeDeceased</td><td>VisaDirectInvalidTransaction</td><td>InteracFailedReachedCancellationCutOff</td><td>CreditCardCvvMismatch *</td></tr><tr><td>EftFailedFrozenAccount</td><td>VisaDirectInvalidCardNumber</td><td>InteracFailedNotificationDeliveryFailure</td><td>CreditCardInvalidMerchantId *</td></tr><tr><td>EftFailedInvalidErrorAccountNumber</td><td>VisaDirectIssuerOrSwitchInoperative</td><td>InteracFailedAmountGreaterThanMax</td><td>CreditCardAmountExceeded *</td></tr><tr><td>EftFailedErrorPayorPayeeName</td><td>VisaDirectUnsupportedCardType</td><td>InteracFailedDebtorRejected</td><td>CreditCardRefundAmountExceeded *</td></tr><tr><td>EftFailedRefusedNoAgreement</td><td>VisaDirectInvalidExpiryDate</td><td>InteracFailedFundsDepositFailed</td><td>CreditCardCashbackNotApp *</td></tr><tr><td>EftFailedNotInAccountAgreementP</td><td>VisaDirectInvalidPIN</td><td>InteracFailedClientEmailedToRequestCancellation</td><td>CreditCardExpiredCard *</td></tr><tr><td>EftFailedNotInAccountAgreementE</td><td>VisaDirectInvalidSecret</td><td>InteracFailedGenericError</td><td>CreditCardNoAccountFound *</td></tr><tr><td>EftFailedAgreementRevoked</td><td></td><td>InteracFailedNameMismatch</td><td>CreditCardNotPermittedToCardHolderInformed *</td></tr><tr><td>EftFailedDefaultByAFinancialInstitution</td><td></td><td>InteracFailedInvalidAccountNumber</td><td>CreditCardInvalidCardNumber *</td></tr><tr><td>EftFailedTransactionNotAllowed</td><td></td><td>InteracFailedRequestBlockedByUser</td><td>CreditCardRejectedAmlOrFraud *</td></tr><tr><td></td><td></td><td></td><td>CreditCardTypeNotAccepted *</td></tr><tr><td></td><td></td><td></td><td>CreditCardDomesticDebitDeclined *</td></tr><tr><td></td><td></td><td></td><td>CreditCardClosedAccount *</td></tr></tbody></table>

\* Not available for all Credit Card customers

{% hint style="info" %}
**NOTE**

You can simulate late failures (after transaction completion) by using a comment: (event name), Latefailure. This feature is only available for EFT transaction error. If the string is incorrect, the transaction will fail with the event specified within it.
{% endhint %}

## Get a specific transaction

Use this endpoint if you want to get all the information for a specific transaction. The transaction id is informed in the url.

`Method: GET`

`Endpoint: {{env}}/api/transaction/{transaction_id}`

{% tabs %}
{% tab title="Response (Canada)" %}

```json
{
  "statusCode": 200,
  "message": "GET Request successful.",
  "isError": false,
  "result": {
    "Id": "b7a8a505...364e8836404e",
    "CreatedAt": "2020-05-13T17:59:47.039462",
    "Memo": "Memo test",
    "Comment": "This is a transaction to test",
    "Amount": 123.45,
    "Customer": {
      "Id": "e15bbe9b...dc256ba3a247",
      "CompanyName": "Sam's Gym"
    },
    "User": {
      "Id": "c11cc378...8f34ac8173be",
      "FirstName": "John",
      "LastName": "111",
      "Email": "lxtkzblpk12wurb4tczfy@gmail.com",
      "IsActive": true
    },
    "Wallet": {
      "Id": "8ebd932b...b92633e14297",
      "Type": "Unified"
    },
    "FundingSource": {
      "Id": "1d431e8b...85452adb4eee",
      "Institution": "Institution",
      "InstitutionNumber": "123",
      "TransitNumber": "12345",
      "AccountNumber": "1234567"
    },
    "EventHistory": [
      {
        "CreatedAt": "2020-05-13T17:59:47.284943",
        "Event": "EFTFileUploaded",
        "EventDescription": "EFT file uploaded to Financial Institution"
      },
      {
        "CreatedAt": "2020-05-13T17:59:47.284943",
        "Event": "Started",
        "EventDescription": "Transaction with type FundZumWallet started, from Funding Source to Zūm Wallet with amount: $123.45"
      }
    ],
    "ZumRailsType": "FundZumWallet",
    "TransactionMethod": "Eft",
    "TransactionStatus": "InProgress",
    "RecurrentTransactionId": "16d2406f...87d397a8356f",
    "FailedTransactionEvent": null,
    "From": "Zūm Wallet",
    "To": "User john 111",
    "FailedAt": null,
    "IsRefundable": false,
    "AuthorizedHoldExpiredAt": ""
  }
}
```

{% endtab %}

{% tab title="Response (US)" %}

```json
{
  "statusCode": 200,
  "message": "GET Request successful.",
  "isError": false,
  "result": {
    "Id": "b7a8a505...364e8836404e",
    "CreatedAt": "2020-05-13T17:59:47.039462",
    "Memo": "Memo test",
    "Comment": "This is a transaction to test",
    "Amount": 123.45,
    "Currency": "USD",
    "TelecheckApprovalCode": "1228",
    "PaymentInstrumentId": "8951e72a-....d334f07fe908",
    "Customer": {
      "Id": "e15bbe9b...dc256ba3a247",
      "CompanyName": "Sam's Gym"
    },
    "User": {
      "Id": "c11cc378...8f34ac8173be",
      "FirstName": "John",
      "LastName": "111",
      "Email": "lxtkzblpk12wurb4tczfy@gmail.com",
      "IsActive": true
    },
    "Wallet": {
      "Id": "8ebd932b...b92633e14297",
      "Type": "Unified",
      "Currency": "USD"
    },
    "FundingSource": {
      "Id": "1d431e8b...85452adb4eee",
      "Institution": "Institution",
      "InstitutionNumber": "123",
      "RoutingNumber": "12345",
      "AccountNumber": "1234567"
    },
    "TransactionChargeback": [
      {
        "Id": "e5ec36c3...5445500db505"
        "AcquirerReferenceNumber" : "1674915201620667421592979",
        "AuthorizationCode" : "OK5234",
        "ChargebackAmount" : 9.91,
        "ChargebackControlNumber" : "771638347",
        "ChargebackStatus" : "Disputed",
        "ChargebackWorkTypeCode" : "1",
        "DisputeCurrencyCode" : "USD",
        "DisputeReasonCode" : "1350",
        "DueDate" : "2024-04-14",
        "FileId" : "685221186",        
        "MemberMessageText" : "Misrepresentation",
        "ReceivedDate" : "2024-04-10",
      }
    ],
    "TransactionHistory": [
      {
        "CreatedAt": "2020-05-13T17:59:47.284943",
        "Event": "Started",
        "EventDescription": "Transaction with type AccountsPayable started, from Funding Source to Zūm Wallet with amount: $123.45"
      }
    ],
    "ZumRailsType": "AccountsPayable",
    "TransactionMethod": "Ach",
    "TransactionStatus": "InProgress",
    "From": "Zūm Wallet",
    "To": "User john 111",
    "FailedAt": null,
    "PaymentInstrumentId": "92142401-d17e-4906-91e8-389ba0d87e75"
  }
}
```

{% endtab %}
{% endtabs %}

**Response**

{% tabs %}
{% tab title="Canada" %}

<table><thead><tr><th width="253">Parameter</th><th width="103">Type</th><th>Description</th></tr></thead><tbody><tr><td>Id</td><td>guid</td><td>Transaction id</td></tr><tr><td>CreatedAt</td><td>datetime</td><td>When the transaction was created</td></tr><tr><td>Memo</td><td>string</td><td>Transaction memo</td></tr><tr><td>Comment</td><td>string</td><td>Transaction comment</td></tr><tr><td>Amount</td><td>decimal</td><td>Transaction amount</td></tr><tr><td>ZumRailsType</td><td>string</td><td>Transaction type</td></tr><tr><td>TransactionStatus</td><td>string</td><td>Indicate the status of the transaction</td></tr><tr><td>RecurrentTransactionId</td><td>guid</td><td>The id of the recurrent transaction that created this transaction (null if inexistent)</td></tr><tr><td>FailedTransactionEvent</td><td>string</td><td>If the transaction has failed, the <a href="#status-and-events">transaction event</a> that caused it (null otherwise)</td></tr><tr><td>ScheduledStartDate</td><td>date</td><td>The date transaction will be sent to the financial institution.</td></tr><tr><td>ClientTransactionId</td><td>string</td><td>The Transaction id you informed in the creation of this transaction</td></tr><tr><td>InteracUrl</td><td>string</td><td>The interac URL to complete the transaction, if available</td></tr><tr><td>InteracDebtorInstitutionNumber</td><td>string</td><td>The Financial Institution used to complete the Interac Request money. This information is not available for all requests; it depends on the bank being used to process the payment.</td></tr><tr><td>InteracDebtorFullName</td><td>string</td><td>The Full Name used to complete the Interac Request money. This information is not yet 100% accurate; often is the same name is sent. Gradually, each Institution is improving and sending this information for Zūm Rails. This information is not available for all requests; it depends on the bank being used to process the payment.</td></tr><tr><td>InteracDebtorAccountNumber</td><td>string</td><td>The Account Number used to complete the Interac Request money. This information is not available for all requests; it depends on the bank being used to process the payment.</td></tr><tr><td>InteracCreditorInstitutionNumber</td><td>string</td><td>The Financial Institution used to complete the Interac Send money. This information is not available for all requests; it depends on the bank being used to process the payment.</td></tr><tr><td>InteracCreditorFullName</td><td>string</td><td>The Full Name used to complete the Interac Send money. This information is not yet 100% accurate; often is the same name is sent. Gradually, each Institution is improving and sending this information for Zūm Rails. This information is not available for all requests; it depends on the bank being used to process the payment.</td></tr><tr><td>InteracCreditorAccountNumber</td><td>string</td><td>The Account Number used to complete the Interac Send money. This information is not available for all requests; it depends on the bank being used to process the payment.</td></tr><tr><td>InteracNotificationChannel</td><td>string</td><td>Indicates whether the Interac notification is email or sms.</td></tr><tr><td>UseInteracANR</td><td>boolean</td><td>Indicates whether a transaction will be deposited directly to the user's saved account. (This works only for account payable transactions from wallet to user)</td></tr><tr><td>From</td><td>string</td><td>From description for the transaction</td></tr><tr><td>To</td><td>string</td><td>To description for the transaction</td></tr><tr><td>IsRefundable</td><td>boolean</td><td>Indicates if the transaction is IsRefundable</td></tr><tr><td>FailedAt</td><td>datetime</td><td>When the transaction was failed (null otherwise)</td></tr><tr><td>AuthorizedHoldExpiredAt</td><td>datetime</td><td>When the transaction was the authorized hold Credit Card transaction (null otherwise)</td></tr><tr><td><strong>Customer</strong></td><td></td><td>Basic Customer data</td></tr><tr><td>CompanyName</td><td>string</td><td>Company Name</td></tr><tr><td>Id</td><td>guid</td><td>Id for the related customer</td></tr><tr><td><strong>User</strong></td><td></td><td>If transaction has a user - * Not all information from a user is returned in this endpoint</td></tr><tr><td>Id</td><td>guid</td><td>The user id</td></tr><tr><td>First Name</td><td>string</td><td>User first name</td></tr><tr><td>Last Name</td><td>string</td><td>User last name</td></tr><tr><td>Company Name</td><td>string</td><td>User company name</td></tr><tr><td>IsActive</td><td>boolean</td><td>Indicates if the user is active or not</td></tr><tr><td><strong>Wallet</strong></td><td></td><td>If transaction has a wallet * Not all information from a user is returned in this endpoint</td></tr><tr><td>Id</td><td>guid</td><td>The wallet id</td></tr><tr><td>Type</td><td>string</td><td>The wallet type</td></tr><tr><td><strong>FundingSource</strong></td><td></td><td>If transaction has a funding source * Not all information from a user is returned in this endpoint</td></tr><tr><td>Id</td><td>guid</td><td>The funding source id</td></tr><tr><td>Institution</td><td>string</td><td>The institution name</td></tr><tr><td>InstitutionNumber</td><td>string</td><td>The institution number</td></tr><tr><td>TransitNumber</td><td>string</td><td>The transit number</td></tr><tr><td>AccountNumber</td><td>string</td><td>The account number</td></tr><tr><td><strong>TargetWallet</strong></td><td></td><td>If transaction has a target wallet</td></tr><tr><td>Id</td><td>guid</td><td>The target wallet id</td></tr><tr><td>Type</td><td>string</td><td>The target wallet type</td></tr><tr><td><strong>TransactionHistory</strong></td><td></td><td>List of transaction history events</td></tr><tr><td>CreatedAt</td><td>datetime</td><td>When the transaction event happened</td></tr><tr><td>Event</td><td>string</td><td>The event happened</td></tr><tr><td>EventDescription</td><td>string</td><td>The event description</td></tr></tbody></table>
{% endtab %}

{% tab title="US" %}

<table><thead><tr><th width="230.20001220703125">Parameter</th><th width="132.7999267578125">Type</th><th>Description</th></tr></thead><tbody><tr><td>Id</td><td>guid</td><td>Transaction id</td></tr><tr><td>CreatedAt</td><td>datetime</td><td>When the transaction was created</td></tr><tr><td>Memo</td><td>string</td><td>Transaction memo</td></tr><tr><td>Comment</td><td>string</td><td>Transaction comment</td></tr><tr><td>Amount</td><td>decimal</td><td>Transaction amount</td></tr><tr><td>Currency</td><td>string</td><td>Transaction currency</td></tr><tr><td>ZumRailsType</td><td>string</td><td>Transaction type</td></tr><tr><td>TransactionStatus</td><td>string</td><td>Indicates the status of the transaction</td></tr><tr><td>FailedTransactionEvent</td><td>string</td><td>If the transaction has failed, the <a href="https://docs.zumrails.com/docs/us/api-specification/transactions/#status-and-events">transaction event</a> that caused it (null otherwise)</td></tr><tr><td>ScheduledStartDate</td><td>date</td><td>The date on which the transaction will be sent to the financial institution</td></tr><tr><td>ClientTransactionId</td><td>string</td><td>The Transaction id you informed in the creation of this transaction</td></tr><tr><td>From</td><td>string</td><td>From description for the transaction</td></tr><tr><td>To</td><td>string</td><td>To description for the transaction</td></tr><tr><td>FailedAt</td><td>datetime</td><td>When the transaction was failed (null otherwise)</td></tr><tr><td>TelecheckApprovalCode</td><td>string</td><td>When the transaction method is ACH with provider Telecheck (null otherwise)</td></tr><tr><td>TelecheckDenialRecordNumber</td><td>string</td><td>When the transaction method is ACH with provider Telecheck and the transaction was denied (null otherwise)</td></tr><tr><td>PaymentInstrumentId</td><td>string</td><td>Payment instrument id</td></tr><tr><td>CreditCardResponseCode</td><td>string</td><td>Response code when the transaction method is Credit Card with provider RapidConnect (null otherwise)</td></tr><tr><td>CreditCardAdditionalResponseData</td><td>string</td><td>Additional response data when the transaction method is Credit Card with provider RapidConnect (null otherwise)</td></tr><tr><td>CreditCardAuthorizationId</td><td>string</td><td>Authorization id when the transaction method is Credit Card with provider RapidConnect (null otherwise)</td></tr><tr><td>CreditCardAuthorizationNetworkId</td><td>string</td><td>Authorization network id when the transaction method is Credit Card with provider RapidConnect (null otherwise)</td></tr><tr><td>CreditCardAuthorizationNetworkName</td><td>string</td><td>Authorization network name when the transaction method is Credit Card with provider RapidConnect (null otherwise)</td></tr><tr><td>CreditCardErrorData</td><td>string</td><td>Error message when the transaction method is Credit Card with provider RapidConnect (null otherwise)</td></tr><tr><td><strong>Customer</strong></td><td></td><td>Basic Customer data</td></tr><tr><td>Id</td><td>guid</td><td>Id for the related customer</td></tr><tr><td>CompanyName</td><td>string</td><td>Company Name</td></tr><tr><td><strong>User</strong></td><td></td><td>If transaction has a user - * Not all information from a user is returned in this endpoint</td></tr><tr><td>Id</td><td>guid</td><td>The user id</td></tr><tr><td>First Name</td><td>string</td><td>User first name</td></tr><tr><td>Last Name</td><td>string</td><td>User last name</td></tr><tr><td>Company Name</td><td>string</td><td>User company name</td></tr><tr><td>IsActive</td><td>boolean</td><td>Indicates if the user is active or not</td></tr><tr><td><strong>Wallet</strong></td><td></td><td>If transaction has a wallet * Not all information from a user is returned in this endpoint</td></tr><tr><td>Id</td><td>guid</td><td>The wallet id</td></tr><tr><td>Type</td><td>string</td><td>The wallet type</td></tr><tr><td><strong>FundingSource</strong></td><td></td><td>If transaction has a funding source * Not all information from a user is returned in this endpoint</td></tr><tr><td>Id</td><td>guid</td><td>The funding source id</td></tr><tr><td>Institution</td><td>string</td><td>The institution name</td></tr><tr><td>InstitutionNumber</td><td>string</td><td>The institution number</td></tr><tr><td>TransitNumber</td><td>string</td><td>The transit number</td></tr><tr><td>RoutingNumber</td><td>string</td><td>The account number</td></tr><tr><td><strong>TargetWallet</strong></td><td></td><td>If transaction has a target wallet</td></tr><tr><td>Id</td><td>guid</td><td>The target wallet id</td></tr><tr><td>Type</td><td>string</td><td>The target wallet type</td></tr><tr><td><strong>TransactionChargeback</strong></td><td></td><td>List of transaction chargebacks</td></tr><tr><td>Id</td><td>guid</td><td>The transaction chargeback id</td></tr><tr><td>AcquirerReferenceNumber</td><td>string</td><td>Reference number associated with the inquiry</td></tr><tr><td>AuthorizationCode</td><td>string</td><td>Authorization code from association(s)</td></tr><tr><td>ChargebackAmount</td><td>decimal</td><td>Chargeback amount</td></tr><tr><td>ChargebackControlNumber</td><td>string</td><td>Chargeback control number</td></tr><tr><td>ChargebackStatus</td><td>string</td><td>Chargeback status</td></tr><tr><td>ChargebackWorkTypeCode</td><td>string</td><td>Chargeback work type code</td></tr><tr><td>DisputeCurrencyCode</td><td>string</td><td>Dispute currency code</td></tr><tr><td>DisputeReasonCode</td><td>string</td><td>Dispute reason code</td></tr><tr><td>DueDate</td><td>string</td><td>Due date (format "yyyy-MM-dd)</td></tr><tr><td>FileId</td><td>string</td><td>File id</td></tr><tr><td>MemberMessageText</td><td>string</td><td>Member message text</td></tr><tr><td>ReceivedDate</td><td>string</td><td>Received date (format "yyyy-MM-dd)</td></tr><tr><td><strong>TransactionHistory</strong></td><td></td><td>List of transaction history events</td></tr><tr><td>CreatedAt</td><td>datetime</td><td>When the transaction event happened</td></tr><tr><td>Event</td><td>string</td><td>The event that happened</td></tr><tr><td>EventDescription</td><td>string</td><td>The event description</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## Status and events <a href="#status-and-events" id="status-and-events"></a>

Zūm Rails offers 6 main statuses for transactions:

**Transaction Status**

<table><thead><tr><th width="132">Type</th><th>Description</th></tr></thead><tbody><tr><td>InProgress</td><td>Indicates the transaction is being processed</td></tr><tr><td>Completed</td><td>Indicates the transaction is completed, this is a permanent status for Interac, Visa Direct and Credit Card. For EFT, a completed transaction might still fail up to 90 days after it's completion.</td></tr><tr><td>Failed</td><td>Indicates the transaction has failed, this is a permanent status.</td></tr><tr><td>Cancelled</td><td>Indicates the transaction has canceled, this is a permanent status.</td></tr><tr><td>Scheduled</td><td>Indicates the transaction is scheduled.</td></tr><tr><td>InReview</td><td>Indicates the transaction is under review. As of now, only Interac transactions uses this status. Once a transaction is "Under Review" you need to "Take Action" on the transaction from within the portal or via API implementation to guide Interac on how you want to treat this transaction. It could also happen that "Completed" transactions are flagged as "Under Review". This is when Interac requires a response from the Merchant stating if the transactions is legit/fraud/scam. Click <a href="https://knowledge-base.zumrails.com/interac-transaction-in-review">here</a> to read more. A transaction might be under review up to 7 days, after that our system will automatically cancel it.</td></tr><tr><td>Pending Cancellation</td><td>Indicates a cancellation request has been submitted for the transaction, but a response from the payment provider is still pending. This status applies to certain payment methods, such as Interac and ACH, where cancellations are not immediate and require provider confirmation.</td></tr></tbody></table>

**Transaction Events**

Zūm Rails also offers a more detailed transaction event, to indicate every step the transaction passed. Depending on the transaction methods, the events will change.

{% tabs %}
{% tab title="Canada" %}

<table><thead><tr><th width="129">Method</th><th>Event</th><th>Description</th></tr></thead><tbody><tr><td>All</td><td>Started</td><td>When the transaction started</td></tr><tr><td>All</td><td>Succeeded</td><td>When the transaction succeeds, when it finishes without any error</td></tr><tr><td>All</td><td>WalletFunded</td><td>When the transaction funds a wallet</td></tr><tr><td>All</td><td>WalletWithdrawn</td><td>When the transaction withdrawn a wallet</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>Eft</td><td>EFTFileCreated</td><td>When an EFT file is created. One transaction might have up to 2 files</td></tr><tr><td>Eft</td><td>EFTFileUploaded</td><td>When an EFT file is uploaded</td></tr><tr><td>Eft</td><td>EFTAnswerReceived</td><td>When an EFT file response is received</td></tr><tr><td>Eft</td><td>EFTAnswerProcessed</td><td>When an EFT file is processed</td></tr><tr><td>Eft</td><td>EftFailedValidationRejection</td><td>When EFT could not be created, due an invalid information provided</td></tr><tr><td>Eft</td><td>EftFailedInsufficientFunds</td><td>When transaction is rejected, due non sufficient funds available</td></tr><tr><td>Eft</td><td>EftFailedCannotLocateAccount</td><td>When account is not located, account, transit or institution numbers are invalid</td></tr><tr><td>Eft</td><td>EftFailedStopPayment</td><td>Account do not allow EFT</td></tr><tr><td>Eft</td><td>EftFailedAccountClosed</td><td>When account is closed</td></tr><tr><td>Eft</td><td>EftFailedNoDebitAllowed</td><td>Account do not allow EFT</td></tr><tr><td>Eft</td><td>EftFailedFundsNotFree</td><td>When transaction is rejected, due non sufficient funds available</td></tr><tr><td>Eft</td><td>EftFailedCurrencyAccountMismatch</td><td>When the currency of the transaction does not match the currency of the account</td></tr><tr><td>Eft</td><td>EftFailedPayorPayeeDeceased</td><td>Account do not allow EFT</td></tr><tr><td>Eft</td><td>EftFailedFrozenAccount</td><td>Account do not allow EFT</td></tr><tr><td>Eft</td><td>EftFailedInvalidErrorAccountNumber</td><td>When account is not located, account numbers are invalid</td></tr><tr><td>Eft</td><td>EftFailedErrorPayorPayeeName</td><td>When account is not located, first, last or company name (business) mismatch</td></tr><tr><td>Eft</td><td>EftFailedRefusedNoAgreement</td><td>Account do not allow EFT</td></tr><tr><td>Eft</td><td>EftFailedNotInAccountAgreementP</td><td>Account do not allow EFT</td></tr><tr><td>Eft</td><td>EftFailedNotInAccountAgreementE</td><td>Account do not allow EFT</td></tr><tr><td>Eft</td><td>EftFailedAgreementRevoked</td><td>Account do not allow EFT</td></tr><tr><td>Eft</td><td>EftFailedDefaultByAFinancialInstitution</td><td>Generic error provided by the financial institution</td></tr><tr><td>Eft</td><td>EftFailedCustomerInitiatedReturnCreditOnly</td><td>When the payee has requested the credit to be returned</td></tr><tr><td>Eft</td><td>EftFailedTransactionNotAllowed</td><td>When the bank account is banned</td></tr><tr><td>Eft</td><td>EftFailedCustomerInitiatedReturnCreditOnly</td><td>When the payee has requested the credit to be returned</td></tr><tr><td>Eft</td><td>EftFailedNoPrenotificationP1</td><td>No Confirmation/Pre-Notification – Personal</td></tr><tr><td>Eft</td><td>EftFailedNoPrenotificationP2</td><td>No Confirmation/Pre-Notification – Business</td></tr><tr><td>Eft</td><td>EFTFileCreated</td><td>When the EFT file is created</td></tr><tr><td>Eft</td><td>EFTAnswerReceived</td><td>When the EFT answer is received</td></tr><tr><td>Eft</td><td>EFTAnswerProcessed</td><td>When the EFT answer is processed</td></tr><tr><td>Eft</td><td>NotEnoughBalanceInWalletError</td><td>When the wallet has not balance enough</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>VisaDirect</td><td>VisaDirectGenericError</td><td>When a generic error happened in the network</td></tr><tr><td>VisaDirect</td><td>VisaDirectDoNotHonor</td><td>When the information provided was inconsistent, such as address or name on card</td></tr><tr><td>VisaDirect</td><td>VisaDirectInsufficientFunds</td><td>When not sufficient funds available in the card</td></tr><tr><td>VisaDirect</td><td>VisaDirectNotPermittedToCardHolderInformed</td><td>When the card holder did not authorize the transaction or the card is restricted for this usage</td></tr><tr><td>VisaDirect</td><td>VisaDirectAmountLimitNotAuthorized</td><td>When the limit informed invalid, too high or exceeds the withdrawal frequency limit, too many transactions for this card in the current period</td></tr><tr><td>VisaDirect</td><td>VisaDirectRejectedAmlOrFraud</td><td>When visa identified this transaction as AML or potential fraud</td></tr><tr><td>VisaDirect</td><td>VisaDirectWaitingSettlementIntoClientsAccounts</td><td>Waiting for funds to be settled into client's account</td></tr><tr><td>VisaDirect</td><td>VisaDirectSettledIntoClientsAccount</td><td>When visa funds are settled into client's account</td></tr><tr><td>VisaDirect</td><td>VisaDirectInvalidCardNumber</td><td>When the card has an invalid number</td></tr><tr><td>VisaDirect</td><td>VisaDirectChargeback</td><td>When the card number is invalid</td></tr><tr><td>VisaDirect</td><td>VisaDirectReenterTransaction</td><td>When an error happened. Retry creating the transaction</td></tr><tr><td>VisaDirect</td><td>VisaDirectInvalidTransaction</td><td>When transaction was considered invalid by visa direct</td></tr><tr><td>VisaDirect</td><td>VisaDirectIssuerOrSwitchInoperative</td><td>When issuer or switch is inoperative</td></tr><tr><td>VisaDirect</td><td>VisaDirectUnsupportedCardType</td><td>When a type card is not supported</td></tr><tr><td>VisaDirect</td><td>VisaDirectRejectedAccountLimitExceeded</td><td>When an account limit reaches the exceed amount</td></tr><tr><td>VisaDirect</td><td>VisaDirectInvalidExpiryDate</td><td>When a VisaDirect transaction due to invalid expiration dates</td></tr><tr><td>VisaDirect</td><td>VisaDirectInvalidPIN</td><td>When a VisaDirect transaction due to invalid pin</td></tr><tr><td>VisaDirect</td><td>VisaDirectInvalidSecret</td><td>When a VisaDirect transaction due to invalid secret</td></tr><tr><td>VisaDirect</td><td>VisaDirectTimeoutLimitReachedError</td><td>When a VisaDirect transaction timeout limit reached</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>Interac</td><td>InteracSent</td><td>When the transaction is sent to interac</td></tr><tr><td>Interac</td><td>InteracAcknowledgedCredit</td><td>When a credit transaction is received by interac</td></tr><tr><td>Interac</td><td>InteracAcknowledgedDebit</td><td>When a debit transaction is received by interac</td></tr><tr><td>Interac</td><td>InteracFailedRecipientContactInfoMissing</td><td>Need to add recipient email or mobile phone number</td></tr><tr><td>Interac</td><td>InteracFailedInvalidEmailFormat</td><td>If the email provided is not valid. * We minimize this error by validating it before</td></tr><tr><td>Interac</td><td>InteracFailedInvalidPhoneNumber</td><td>If the phone number provided is not valid</td></tr><tr><td>Interac</td><td>InteracFailedMultipleTransferLevelErrors</td><td>If there is more than one error in the file</td></tr><tr><td>Interac</td><td>InteracFailedRevoked</td><td>When the transaction is revoked</td></tr><tr><td>Interac</td><td>InteracFailedBulkCancellationRequest</td><td>When the transaction was cancelled by request</td></tr><tr><td>Interac</td><td>InteracFailedRecipientRejected</td><td>When the transaction was cancelled due to recipient having declined receipt of funds</td></tr><tr><td>Interac</td><td>InteracFailedAuthentication</td><td>Transfer cancelled due to maximum number of unsuccessful attempts to answer the security question by the recipient</td></tr><tr><td>Interac</td><td>InteracFailedReachedCancellationCutOff</td><td>Transfer cancelled due to expiry</td></tr><tr><td>Interac</td><td>InteracFailedNotificationDeliveryFailure</td><td>Transfer cancelled due to maximum number of failed email notification attempts reached</td></tr><tr><td>Interac</td><td>InteracFailedAmountGreaterThanMax</td><td>If the transaction amount exceeds the maximum allowed</td></tr><tr><td>Interac</td><td>InteracFailedDebtorRejected</td><td>The debtor rejected the request</td></tr><tr><td>Interac</td><td>InteracFailedFundsDepositFailed</td><td>The funds deposit failed</td></tr><tr><td>Interac</td><td>InteracFailedClientEmailedToRequestCancellation</td><td>Client emailed to request cancellation</td></tr><tr><td>Interac</td><td>InteracFailedGenericError</td><td>When Interac Network is unavailable - * We have never seen this</td></tr><tr><td>Interac</td><td>InteracWaitingSettlementIntoWallet</td><td>Waiting for funds to be settled into wallet</td></tr><tr><td>Interac</td><td>InteracSettledIntoWallet</td><td>When Interac funds are settled into wallet</td></tr><tr><td>Interac</td><td>InteracFailedNameMismatch</td><td>When the debtor name used to fulfill the Interac is different than the name on file</td></tr><tr><td>Interac</td><td>InteracFraudAlertResponded</td><td>When a fraud alert responded for that transaction</td></tr><tr><td>Interac</td><td>InteracFundsHeldForValidation</td><td>User needs to contact their Financial Institution to validate the transfer and release of funds</td></tr><tr><td>Interac</td><td>InteracFailedInvalidAccountNumber</td><td>When the account number provided is invalid</td></tr><tr><td>Interac</td><td>InteracFailedRequestBlockedByUser</td><td>When the transaction failed since the user has blocked some or all Interac requests coming to their email</td></tr><tr><td>Interac</td><td>InteracCreditorExternalFinancialInfo</td><td>When the accounts payable transaction is updated with the creditor external financial information </td></tr><tr><td>Interac</td><td>InteracFailedAPICancellation</td><td>When the transaction fails due to technical issues.</td></tr><tr><td>Interac</td><td>InteracFailedANRNotSupported</td><td>When the accounts payable transaction fails because the receiving institution does not support ANR.</td></tr><tr><td>Interac</td><td>InteracFailedSecurityQuestionNeededForProvidedEmail</td><td>When transaction fails because the provided e-mail is not authorized to receive transfers without security question.</td></tr><tr><td>Interac</td><td>InteracFailedBannedAccount</td><td>When transaction fails because the user is banned (due to fraud reasons).</td></tr><tr><td>Interac</td><td>InteracFailedSameProfileConflict</td><td>When transaction fails because the sending and receiving accounts are linked to the same profile, which is not allowed.</td></tr><tr><td>Interac</td><td>InteracFailedAutoDeposit</td><td>When transaction fails because the user is not registered for auto-deposit.</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>CreditCard</td><td>CreditCardDeclined</td><td>Transaction declined by the issuing bank</td></tr><tr><td>CreditCard</td><td>CreditCardError</td><td>The card information, address, CVV is not correct</td></tr><tr><td>CreditCard</td><td>CreditCardHeldForReview</td><td>Transaction is pre-approved, it might take a few hours to approve completely. This is rare</td></tr><tr><td>CreditCard</td><td>CreditCardGenericError</td><td>The Credit Card network is unavailable</td></tr><tr><td>CreditCard</td><td>CreditCardUnknownResponse</td><td>No clear response from the issuing bank</td></tr><tr><td>CreditCard</td><td>CreditCardHoldCallOrPickUpCard</td><td>Credit Card is considered lost or stolen by the issuing bank</td></tr><tr><td>CreditCard</td><td>CreditCardSecViolation</td><td>Restrictions were placed on the Credit Card by the issuing bank possibly due to a security violation</td></tr><tr><td>CreditCard</td><td>CreditCardServNotAllowed</td><td>The merchant account or Credit Card processor is not set up for this operation</td></tr><tr><td>CreditCard</td><td>CreditCardCvvMismatch</td><td>Transaction rejected since CVV provided is invalid</td></tr><tr><td>CreditCard</td><td>CreditCardInvalidMerchantId</td><td>The account is not approved for Credit Card transactions</td></tr><tr><td>CreditCard</td><td>CreditCardAmountExceeded</td><td>The amount exceeds the maximum allowed by the Credit Card provider</td></tr><tr><td>CreditCard</td><td>CreditCardRefundAmountExceeded</td><td>Transaction amount exceeds refund limit</td></tr><tr><td>CreditCard</td><td>CreditCardCashbackNotApp</td><td>Cashback not applicable on card</td></tr><tr><td>CreditCard</td><td>CreditCardExpiredCard</td><td>Transaction rejected since the card has expired</td></tr><tr><td>CreditCard</td><td>CreditCardNoAccountFound</td><td>Transaction rejected since the account was not found</td></tr><tr><td>CreditCard</td><td>CreditCardNotPermittedToCardHolderInformed</td><td>The card holder did not authorize the transaction or the card is restricted for this usage</td></tr><tr><td>CreditCard</td><td>CreditCardInvalidCardNumber</td><td>Transaction rejected since card number provided is invalid</td></tr><tr><td>CreditCard</td><td>CreditCardRejectedAmlOrFraud</td><td>Transaction is identified as AML or potential fraud</td></tr><tr><td>CreditCard</td><td>CreditCardTypeNotAccepted</td><td>Card type not accepted for the transaction</td></tr><tr><td>CreditCard</td><td>CreditCardDomesticDebitDeclined</td><td>Domestic debits are not allowed on the card</td></tr><tr><td>CreditCard</td><td>CreditCardClosedAccount</td><td>Transaction rejected since the account has been closed</td></tr><tr><td>CreditCard</td><td>CreditCardDuplicateTransaction</td><td>Transaction rejected as duplicate</td></tr><tr><td>CreditCard</td><td>CreditCardNotActivated</td><td>Transaction failed due to inactive card.</td></tr></tbody></table>
{% endtab %}

{% tab title="US" %}

<table><thead><tr><th width="163.20001220703125">Method</th><th>Event</th><th>Description</th></tr></thead><tbody><tr><td>All</td><td>Started</td><td>When the transaction started</td></tr><tr><td>All</td><td>Succeeded</td><td>When the transaction succeeds, when it finishes without any error</td></tr><tr><td>All</td><td>WalletFunded</td><td>When the transaction funds a wallet</td></tr><tr><td>All</td><td>WalletWithdrawn</td><td>When the transaction withdrawn a wallet</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>ACH</td><td>AchTransactionAccepted</td><td>When transaction is accepted</td></tr><tr><td>ACH</td><td>AchFailedTransactionExpired</td><td>When transaction has expired</td></tr><tr><td>ACH</td><td>AchFailedReturnedOrClosedAccount</td><td>When transaction is returned due to a closed account or any other return reason</td></tr><tr><td>ACH</td><td>AchFailedRejectedWithReason</td><td>When transaction is rejected for a reason</td></tr><tr><td>ACH</td><td>AchFailedGeneralError</td><td>When transaction has failed due to general error</td></tr><tr><td>ACH</td><td>AchFailedHighRiskOrPotentialFraud</td><td>When transaction is rejected as high-risk or potential fraud</td></tr><tr><td>ACH</td><td>AchFailedDueToMerchantSetup</td><td>When transaction failed because of invalid or inactive merchant id</td></tr><tr><td>ACH</td><td>AchFailedInvalidValueForField</td><td>When transaction failed due to invalid value for field</td></tr><tr><td>ACH</td><td>AchFailedAuthorizationRevoked</td><td>When transaction failed because authorization was revoked</td></tr><tr><td>ACH</td><td>AchFailedDuplicateTransaction</td><td>When transaction failed due to duplicated transaction</td></tr><tr><td>ACH</td><td>AchFailedDueToProcessorTimeout</td><td>When transaction is not successfully processed due to processor timeout</td></tr><tr><td>ACH</td><td>AchFailedTransactionNotAllowed</td><td>When transaction is not allowed by provider</td></tr><tr><td>ACH</td><td>AchBankAccountVerificationFailed</td><td>When transaction fails because the bank account verification failed</td></tr><tr><td>ACH</td><td>AchDebitResponseReceived</td><td>When response is received for a debit transaction</td></tr><tr><td>ACH</td><td>AchCreditResponseReceived</td><td>When response is received for a credit transaction</td></tr><tr><td>ACH</td><td>AchTransactionReturned</td><td>When transaction returned from bank</td></tr><tr><td>ACH</td><td>AchTransactionResubmitted</td><td>When transaction is resubmitted for processing again</td></tr><tr><td>ACH</td><td>AchCancellationFailed</td><td>When request to cancel transaction failed</td></tr><tr><td>ACH</td><td>AchCancellationFailedDueToMerchantSetup</td><td>When request to cancel transaction failed due to merchant setup</td></tr><tr><td>ACH</td><td>AchCancellationFailedRefundGreaterThanTransactionAmount</td><td>When request to cancel transaction failed as refund amount is bigger than transaction amount</td></tr><tr><td>ACH</td><td>AchCancellationFailedTransactionAlreadyCancelled</td><td>When request to cancel transaction failed because transaction is already cancelled</td></tr><tr><td>ACH</td><td>AchFailedDueToNegativeData</td><td>When transaction failed due to negative user data</td></tr><tr><td>ACH</td><td>AchFailedIneligibleBankAccount</td><td>When transaction failed because bank account is not on ACH network</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedGeneralError</td><td>When transaction has failed due to general error</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedHighRiskOrPotentialFraud</td><td>When transaction is rejected as high-risk or potential fraud</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedDueToNegativeData</td><td>When transaction failed due to negative user data</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedDueToMerchantSetup</td><td>When request to cancel transaction failed due to merchant setup</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedDueToProcessorTimeout</td><td>When transaction is not successfully processed due to processor timeout</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedTransactionExpired</td><td>When transaction has expired</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedPaymentDeclinedByUser</td><td>When transaction is declined by user</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedTransactionNotAllowed</td><td>When transaction is not allowed by provider</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedInvalidValueForField</td><td>When transaction failed due to invalid value for field</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedAuthorizationRevoked</td><td>When transaction failed because authorization was revoked</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedDuplicateTransaction</td><td>When transaction failed due to duplicated transaction</td></tr><tr><td>SameDayACH</td><td>SameDayAchBankAccountVerificationFailed</td><td>When transaction failed because the bank account verification failed</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedRejectedWithReason</td><td>When transaction is rejected for a reason</td></tr><tr><td>SameDayACH</td><td>SameDayAchFailedReturnedOrClosedAccount</td><td>When transaction is returned due to a closed account or any other return reaso</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowTransactionAccepted</td><td>When transaction is accepted</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowCreditResponseReceived</td><td>When response is received for credit transaction</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowFailedReturnedOrClosedAccount</td><td>When transaction is returned due to a closed account or any other reason</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowFailedRejectedWithReason</td><td>When transaction is rejected for a reason</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowFailedTransactionNotAllowed</td><td>When transaction is not allowed by the provider</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowFailedGeneralError</td><td>When transaction failed due to a generic error</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowFailedHighRiskOrPotentialFraud</td><td>When transaction is rejected as high-risk or potential fraud</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowFailedInvalidValueForField</td><td>When transaction failed due to invalid value for field</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowFailedDuplicateTransaction</td><td>When transaction failed due to duplicated transaction</td></tr><tr><td>RtpFedNow</td><td>RtpFedNowBankAccountVerificationFailed</td><td>When transaction fails because bank account is unverified</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>DebitCard</td><td>DebitCardFailedGeneralError</td><td>When transaction has failed due to general error</td></tr><tr><td>DebitCard</td><td>DebitCardFailedPaymentDeclined</td><td>When transaction is declined by downstream issuer</td></tr><tr><td>DebitCard</td><td>DebitCardFailedTransactionExpired</td><td>When transaction has expired</td></tr><tr><td>DebitCard</td><td>DebitCardFailedHighRiskOrPotentialFraud</td><td>When transaction is rejected as high-risk or potential fraud</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>CreditCard</td><td>CreditCardInvalidRequest</td><td>When transaction has failed due to invalid request</td></tr><tr><td>CreditCard</td><td>CreditCardRejectedByIssuingBank</td><td>When transaction is rejected by issuing bank</td></tr><tr><td>CreditCard</td><td>CreditCardExpiredCard</td><td>When transaction has failed due to expired card</td></tr><tr><td>CreditCard</td><td>CreditCardSuspectedFraud</td><td>When transaction has failed due to suspected fraud</td></tr><tr><td>CreditCard</td><td>CreditCardTransactionNotPermitted</td><td>When transaction is not permitted</td></tr><tr><td>CreditCard</td><td>CreditCardContactSupport</td><td>When transaction has failed. Contact support</td></tr><tr><td>CreditCard</td><td>CreditCardInvalidMerchantSetUp</td><td>When transaction has failed due to invalid merchant setup</td></tr><tr><td>CreditCard</td><td>CreditCardSecurityViolation</td><td>When transaction has failed due to security violation</td></tr><tr><td>CreditCard</td><td>CreditCardInvalidCardOrDetails</td><td>When transaction has failed due to invalid card or card details</td></tr><tr><td>CreditCard</td><td>CreditCardLostOrStolenCard</td><td>When transaction has failed due to lost ot stolen card</td></tr><tr><td>CreditCard</td><td>CreditCardAccountClosedOrBlocked</td><td>When transaction has failed due to account closed or blocked</td></tr><tr><td>CreditCard</td><td>CreditCardDeemedHighRisk</td><td>When transaction has failed due to deemed high risk</td></tr><tr><td>CreditCard</td><td>CreditCardUnknownResponseFromIssuingBank</td><td>When transaction has failed due to unknown response from issuing bank</td></tr><tr><td>CreditCard</td><td>CreditCardCouldNotLocateOriginalTransaction</td><td>When reversal transaction has failed due to could not locate original transaction</td></tr><tr><td>CreditCard</td><td>CreditCardTransactionAlreadyReversed</td><td>When reversal transaction has failed due to already reversed</td></tr><tr><td>CreditCard</td><td>CreditCardGenericError</td><td>When transaction has failed due to generic error</td></tr><tr><td>CreditCard</td><td>CreditCardServiceUnavailable</td><td>When transaction has failed due to service unavailable</td></tr><tr><td>CreditCard</td><td>CreditCardRetryLater</td><td>When transaction has failed. Retry later</td></tr><tr><td>CreditCard</td><td>CreditCardReversalRejected</td><td>When reversal transaction is rejected</td></tr><tr><td>CreditCard</td><td>CreditCardDuplicateReversal</td><td>When reversal transaction has failed due to duplicated</td></tr><tr><td>CreditCard</td><td>CreditCardTransactionAlreadySettled</td><td>When reversal transaction has failed due to already settled</td></tr><tr><td>CreditCard</td><td>CreditCardTimeoutReversal</td><td>When reversal transaction has failed due to timeout</td></tr><tr><td>CreditCard</td><td>CreditCardDuplicateTransaction</td><td>When transaction has failed due to duplicated</td></tr><tr><td>-------</td><td>-------</td><td>-------</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferAccountBlockForMerchant</td><td>When transaction has failed due to account blocked for merchant</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferAccountClosedOrBlocked</td><td>When transaction has failed due to account closed or blocked</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferContactSupport</td><td>When transaction has failed. Contact support</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferDeemedHighRisk</td><td>When transaction has failed due to deemed high risk</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferDuplicateTransaction</td><td>When transaction has failed due to duplicated</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExceed24HoursLimitForMerchant</td><td>When transaction has failed due to exceeded preset 24-hour transaction count or amount limit for merchant.</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExceed24HoursLimitForUser</td><td>When transaction has failed due to exceeded preset 24-hour transaction count or amount limit for user.</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExceed30DaysLimitForMerchant</td><td>When transaction has failed due to exceeded preset 30-day transaction count or amount limit for merchant.</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExceed30DaysLimitForUser</td><td>When transaction has failed due to exceeded preset 30-day transaction count or amount limit for user.</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExceed7DaysLimitForMerchant</td><td>When transaction has failed due to exceeded preset 7-day transaction count or amount limit for merchant.</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExceed7DaysLimitForUser</td><td>When transaction has failed due to exceeded preset 7-day transaction count or amount limit for user.</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExceedsLimits</td><td>When transaction has failed due to exceeds limit</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExceedsMonthlyLimits</td><td>When transaction has failed due to exceeds monthly limit</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExceedsWithdrawalFrequencyLimit</td><td>When transaction has failed due to exceeds withdrawal frequency limit</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferExpiredCard</td><td>When transaction has failed due to expired card</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferGenericError</td><td>When transaction has failed due to generic error</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferInvalidAmount</td><td>When transaction has failed due to account blocked for merchant</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferInvalidCardOrDetails</td><td>When transaction has failed due to invalid card or card details</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferInvalidMerchantSetUp</td><td>When transaction has failed due to invalid merchant setup</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferInvalidRequest</td><td>When transaction has failed due to invalid request</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferLostOrStolenCard</td><td>When transaction has failed due to lost ot stolen card</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferRejectedByIssuingBank</td><td>When transaction is rejected by issuing bank</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferRetryLater</td><td>When transaction has failed. Retry later</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferSecurityViolation</td><td>When transaction has failed due to security violation</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferServiceUnavailable</td><td>When transaction has failed due to service unavailable</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferSuspectedFraud</td><td>When transaction has failed due to suspected fraud</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferTransactionNotPermitted</td><td>When transaction is not permitted</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferUnknownResponseFromIssuingBank</td><td>When transaction has failed due to unknown response from issuing bank</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferWithdrawalAmountLimit</td><td>When transaction has failed due to exceeds withdrawal amount limit</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferInitiated</td><td>When transaction is send to the bank</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferAuthorized</td><td>When transaction is authorized by the bank</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferVoidOrReversalInitiated</td><td>When transaction cancellation is initiated</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferVoidedOrFullyReversed</td><td>When transaction cancellation is confirmed</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferVoidedOrFullyReversedDueToSuspectedFraud</td><td>When transaction cancellation is confirmed due to suspicion of fraud</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferDuplicateReversal</td><td>When transaction cancellation is not authorized due to duplication</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferReversalRejected</td><td>When transaction cancellation is not authorized</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferTransactionAlreadyReversed</td><td>When transaction is already cancelled</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferTransactionAlreadySettled</td><td>When transaction cancellation is not authorized due to funds already being settled</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferCouldNotLocateOriginalTransaction</td><td>When transaction cancellation is not authorized due to not being able to locate transaction</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferReversalFailed</td><td>When transaction cancellation failed due to a error</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferTransactionAlreadyRefunded</td><td>When transaction is already refunded</td></tr><tr><td>MoneyTransfer</td><td>MoneyTransferRefundNotToOriginalCreditCard</td><td>When transaction has failed due to refund not being issued to the original credit card.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

**Transaction Chargeback Status**

<table><thead><tr><th width="217">Type</th><th>Description</th></tr></thead><tbody><tr><td>Pending</td><td>Indicates the chargeback is pending to take action.</td></tr><tr><td>AcceptedByUser</td><td>Indicates the chargeback was accepted by user via portal or API.</td></tr><tr><td>AcceptedByDefault</td><td>Indicates the chargeback was accepted past due date.</td></tr><tr><td>Disputed</td><td>Indicates the chargeback was disputed by user via portal our API.</td></tr></tbody></table>

## Search a transaction

Use this endpoint to search for specific transactions.\
You can filter results using various parameters. Transactions are returned in a paginated format, so to retrieve all results, you’ll need to make successive calls to this endpoint while incrementing the CurrentPage value.

`Method: POST`

`Endpoint: {{env}}/api/transaction/filter`

{% tabs %}
{% tab title="Payload" %}

```json
{
    "Id": "c7a8a909...364e8836409d",
    "CreatedAtFrom": "2020-05-13T04:00:00.000Z",
    "CreatedAtTo": "2020-05-13T04:00:00.000Z",
    "CreatedAtOperator": "isBetween",
    "UserId": "4085e4dc...20522aab5e1b",
    "ZumRailsType": "FundZumWallet",
    "TransactionMethod": "Eft",
    "TransactionStatus": "Completed",
    "FailedTransactionEvent": "EftFailedValidationRejection",
    "Pagination": 
    {
        "PageNumber": 1
    }
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "statusCode": 200,
  "message": "POST Request successful.",
  "isError": false,
  "result": {
    "CurrentPage": 1,
    "PageSize": 1,
    "TotalCount": 2,
    "Items": [
      {
        "Id": "b7a8a505...364e8836404e",
        "CreatedAt": "2020-05-13T17:59:47.039462",
        "Memo": "Memo test",
        "Comment": "This is a transaction to test the platform",
        "Amount": 123.45,
        "ZumRailsType": "FundZumWallet",
        "TransactionMethod": "Eft",
        "TransactionStatus": "InProgress",
        "RecurrentTransactionId": "16d2406f...87d397a8356g",
        "FailedTransactionEvent": null
      },
      {
        "Id": "c8a8a505...364e8836405f",
        "CreatedAt": "2020-05-13T17:59:47.039462",
        "Memo": "Memo test",
        "Comment": "This is a transaction to test the platform",
        "Amount": 123.45,
        "ZumRailsType": "FundZumWallet",
        "TransactionMethod": "Eft",
        "TransactionStatus": "Failed",
        "RecurrentTransactionId": null,
        "FailedTransactionEvent": "EftFailedValidationRejection"
      }
    ]
  }
}
```

{% endtab %}
{% endtabs %}

**Input parameters**

<table><thead><tr><th width="199">Parameter</th><th>Type</th><th width="125.4000244140625">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>Id</td><td>guid</td><td>no</td><td>Transaction id</td></tr><tr><td>GenericSearch</td><td>string</td><td>no</td><td>Filter transactions by user name, user email, client transaction id, transaction id and memo</td></tr><tr><td>ZumRailsType</td><td>string</td><td>no</td><td>Transaction type</td></tr><tr><td>TransactionMethod</td><td>string</td><td>no</td><td>The transaction method</td></tr><tr><td>TransactionStatus</td><td>string</td><td>no</td><td>Transaction status</td></tr><tr><td>FailedTransactionEvent</td><td>string</td><td>no</td><td><a href="https://old-docs.zumrails.com/docs/canada/api-specification/transactions/#status-and-events">Transaction event</a> (column Event from the "Transaction Events" table)</td></tr><tr><td>DateType</td><td>string</td><td>no</td><td>The type of date on which the date-filter applies.</td></tr><tr><td>CreatedAtFrom</td><td>datetime</td><td>no</td><td>Start date (This field is only used when the operator is between)</td></tr><tr><td>CreatedAtTo</td><td>datetime</td><td>no</td><td>End date (This field is only used when the operator is between)</td></tr><tr><td>CreatedAt</td><td>datetime</td><td>no</td><td>Created date</td></tr><tr><td>CreatedAtOperator</td><td>string</td><td>no</td><td>Operator to filter with CreatedAt properties</td></tr><tr><td>TimeZone</td><td>string</td><td>no</td><td>The desired TimeZone to be applied to datetime fields. The accepted values are Windows (<code>Eastern Standard Time</code>) or IANA (<code>America/Montreal</code>) timezone ids. The default value is <code>America/Montreal</code> when not specified</td></tr><tr><td>UserId</td><td>string</td><td>no</td><td>User id</td></tr><tr><td>ClientTransactionId</td><td>string</td><td>no</td><td>The Transaction id you informed in the creation of the transaction</td></tr><tr><td>Memo</td><td>string</td><td>no</td><td>Memo field</td></tr><tr><td>Comment</td><td>string</td><td>no</td><td>Comment field</td></tr><tr><td>FraudAlertActionTaken</td><td>boolean</td><td>no</td><td>Filter transactions for which the fraud alert action was taken</td></tr><tr><td>FraudAlertReported</td><td>boolean</td><td>no</td><td>Filter transactions that were reported for fraud through internal analysis</td></tr><tr><td><strong>Pagination</strong></td><td></td><td>no</td><td></td></tr><tr><td>PageNumber</td><td>number</td><td>no</td><td>The respective page, starting at 1</td></tr><tr><td>ItemsPerPage</td><td>number</td><td>no</td><td>The amount of items per page between 0 and 100</td></tr></tbody></table>

**Date Operators**

<table><thead><tr><th width="210.800048828125">Type</th><th>Description</th></tr></thead><tbody><tr><td>IsInTheLast</td><td>Filter records on or after</td></tr><tr><td>ExactlyMatches</td><td>Filter records with exact date</td></tr><tr><td>IsBetween</td><td>Filters records in range</td></tr><tr><td>IsAfter</td><td>Filter records after date</td></tr><tr><td>IsOnOrAfter</td><td>Filter records on or after</td></tr><tr><td>IsBefore</td><td>Filter records before date</td></tr><tr><td>IsBeforeOrOn</td><td>Filter records before or on date</td></tr></tbody></table>

**Date Types**

<table><thead><tr><th width="183.59991455078125">Type</th><th>Description</th></tr></thead><tbody><tr><td>CreatedAt</td><td>Filter records based on date when transactions were created</td></tr><tr><td>CompletedAt</td><td>Filter records based on date when transactions were completed</td></tr><tr><td>CancelledAt</td><td>Filters records based on date when transactions were cancelled</td></tr><tr><td>FailedAt</td><td>Filter records based on date when transactions were failed</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="Canada" %}

<table data-full-width="true"><thead><tr><th width="199.4000244140625">Parameter</th><th width="184">Type</th><th>Description</th></tr></thead><tbody><tr><td>CurrentPage</td><td>number</td><td>The current page</td></tr><tr><td>PageSize</td><td>number</td><td>The amount of rows returned in the current page</td></tr><tr><td>TotalCount</td><td>number</td><td>The total rows the filter returns</td></tr><tr><td><strong>Items</strong></td><td></td><td>List of transactions</td></tr><tr><td>Id</td><td>guid</td><td>Transaction id</td></tr><tr><td>CreatedAt</td><td>datetime</td><td>When the transaction was created</td></tr><tr><td>Memo</td><td>string</td><td>Transaction memo</td></tr><tr><td>Comment</td><td>string</td><td>Transaction comment</td></tr><tr><td>Amount</td><td>decimal</td><td>Transaction amount</td></tr><tr><td>ZumRailsType</td><td>string</td><td>Transaction type</td></tr><tr><td>TransactionMethod</td><td>string</td><td>Transaction method</td></tr><tr><td>TransactionStatus</td><td>string</td><td>Indicate the status of the transaction</td></tr><tr><td>RecurrentTransactionId</td><td>guid</td><td>The id of the recurrent transaction that created this transaction (null if inexistent)</td></tr><tr><td>FailedTransactionEvent</td><td>string</td><td>If the transaction has failed, the <a href="https://docs.zumrails.com/docs/canada/api-specification/transactions#status-and-events">transaction event</a> that caused it (null otherwise)</td></tr><tr><td>ScheduledStartDate</td><td>date</td><td>The date transaction will be sent to the financial institution</td></tr><tr><td>ClientTransactionId</td><td>string</td><td>The Transaction id you informed in the creation of the transaction</td></tr></tbody></table>
{% endtab %}

{% tab title="US" %}

<table><thead><tr><th width="205.4000244140625">Parameter</th><th width="141.60009765625">Type</th><th>Description</th></tr></thead><tbody><tr><td>CurrentPage</td><td>number</td><td>The current page</td></tr><tr><td>PageSize</td><td>number</td><td>The amount of rows returned in the current page</td></tr><tr><td>TotalCount</td><td>number</td><td>The total rows the filter returns</td></tr><tr><td><strong>Items</strong></td><td></td><td>List of transactions</td></tr><tr><td>Id</td><td>guid</td><td>Transaction id</td></tr><tr><td>CreatedAt</td><td>datetime</td><td>When the transaction was created</td></tr><tr><td>Memo</td><td>string</td><td>Transaction memo</td></tr><tr><td>Comment</td><td>string</td><td>Transaction comment</td></tr><tr><td>Amount</td><td>decimal</td><td>Transaction amount</td></tr><tr><td>Currency</td><td>string</td><td>Transaction currency</td></tr><tr><td>ZumRailsType</td><td>string</td><td>Transaction type</td></tr><tr><td>TransactionMethod</td><td>string</td><td>Transaction method</td></tr><tr><td>TransactionStatus</td><td>string</td><td>Indicates the status of the transaction</td></tr><tr><td>FailedTransactionEvent</td><td>string</td><td>If the transaction has failed, the <a href="https://docs.zumrails.com/docs/us/api-specification/transactions/#status-and-events">transaction event</a> that caused it (null otherwise)</td></tr><tr><td>ScheduledStartDate</td><td>date</td><td>The date on which the transaction will be sent to the financial institution</td></tr><tr><td>ClientTransactionId</td><td>string</td><td>The Transaction id you informed in the creation of the transaction</td></tr><tr><td>TelecheckApprovalCode</td><td>string</td><td>When the transaction method is ACH with provider Telecheck (null otherwise)</td></tr><tr><td>TelecheckDenialRecordNumber</td><td>string</td><td>When the transaction method is ACH with provider Telecheck and the transaction was denied (null otherwise)</td></tr><tr><td>PaymentInstrumentId</td><td>string</td><td>ayment instrument id</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**tip**

If you're looking for a specific transaction, we recommend first retrieving its transaction ID. You can then use the **GET Specific Transaction** endpoint to access detailed information about that transaction.
{% endhint %}

## Cancel a transaction

Use this endpoint if you want to delete or cancel a specific transaction.

`Method: DELETE`

`Endpoint: {{env}}/api/transaction/{transaction_id}`

{% tabs %}
{% tab title="Response" %}

```json
{
  "statusCode": 200,
  "message": "DELETE Request successful.",
  "isError": false,
  "result": "Request completed"
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**INFO (Canada)**

* For EFT, transactions can only be deleted and cancelled if it's not been transmitted to the financial institution. We send transactions to the financial institution multiple times a day.
* For Interac (bulk), the transactions are not canceled right away since we need to wait for the provider’s response as the technology is file-based. We will return 200 (OK), meaning that the cancellation request was successful. After this endpoint is called, the transaction status will be updated to Pending Cancellation. Once we receive confirmation that the cancellation was executed, the transaction status will be updated to Cancelled. If the transaction can't be canceled, the status will be updated to either Completed or Failed. Transactions can only be deleted or canceled if the end-user has not yet initiated the payment by opening the email/sms.
* For Visa Direct / Credit Card, transactions cannot be deleted/cancelled. If needed, you can call the endpoint to reverse a Transaction.
  {% endhint %}

{% hint style="info" %}
**INFO (US)**

* For Credit Card payment method, cancellation is allowed only on those transactions that have not been refunded.
  {% endhint %}

## Transaction batch

You can create transactions in batch by uploading a CSV file—this is supported for both EFT/ Interac (Canada) and ACH (US) payments.

A CSV template is available for download directly in the portal to help you format your data correctly.

#### EFT/ Interac batch file (Canada)

To process a batch of transactions:

1. [Validate the CSV file](#validating-a-batch) to ensure all data is correct.
2. [Create the batch transaction](#creating-a-batch-transaction).

{% hint style="info" %}
**NOTE**

If any transaction in the EFT batch is invalid, the entire file will be rejected. This ensures full data accuracy before processing.
{% endhint %}

#### ACH batch file (US)

1. [Upload the CSV file](#upload-a-batch-file-us)- validation happens behind the scenes.
2. Valid transactions will be processed, and any invalid ones will be skipped and flagged.

{% hint style="info" %}
**NOTE**

ACH batches support partial processing, meaning a single invalid transaction will not block the rest of the file from being processed.
{% endhint %}

### Validating a batch (Canada)

Use this endpoint if you want to validate an EFT or Interac transactions batch file.

`Method: POST`

`Endpoint: {{env}}/api/transaction/ValidateBatchFile`

{% tabs %}
{% tab title="Payload" %}

```json
{
  "TransactionType": "AccountsReceivable",
  "WalletId": "30126b59-ab21-491c-8033-008376504210",
  "Bytes": "Zmlyc3RfbmFtZSo7bGFzdF9uYW1lKjtidXNpbmVzc19uYW1lO2luc3RpdHV0aW9uX251bWJlcio7YnJhbmNoX251bWJlcio7YWNjb3VudF9udW1iZXIqO2Ftb3VudF9pbl9jZW50cyo7dHJhbnNhY3Rpb25fY29tbWVudDttZW1vKjtzY2hlZHVsZWRfZGF0ZQpKb2huO0RvZTs7MTIzOzEyMzQ1OzEyMzQ1Njc7MTAwO0ludGVybmFsIE1lc3NhZ2U7TWVtbyBtZXNzYWdlOw=="
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "statusCode": 200,
  "message": "POST Request successful.",
  "isError": false,
  "result": {
    "InvalidTransactions": "0",
    "Status": "Ok",
    "TotalAmount": 6,
    "Transactions": [
      {
        "AccountNumber": "12345671",
        "Amount": 1,
        "Comment": "Internal message 1",
        "CompanyName": "",
        "CustomerId": null,
        "FirstName": "John1",
        "InstitutionNumber": "123",
        "LastName": "Doe1",
        "Memo": "Memo message 1",
        "Status": "Ok",
        "TransitNumber": "23451"
      },
      {
        "AccountNumber": "12345672",
        "Amount": 2,
        "Comment": "Internal message 2",
        "CompanyName": "",
        "CustomerId": null,
        "FirstName": "John2",
        "InstitutionNumber": "123",
        "LastName": "Doe2",
        "Memo": "Memo message 2",
        "Status": "Ok",
        "TransitNumber": "23452"
      },
      {
        "AccountNumber": "12345673",
        "Amount": 3,
        "Comment": "Internal message 3",
        "CompanyName": "",
        "CustomerId": null,
        "FirstName": "John3",
        "InstitutionNumber": "123",
        "LastName": "Doe3",
        "Memo": "Memo message 3",
        "Status": "Ok",
        "TransitNumber": "23453"
      }
    ],
    "ValidTransactions": 13
  }
}
```

{% endtab %}
{% endtabs %}

**Input parameters**

| Parameter       | Type   | Mandatory | Description                                 |
| --------------- | ------ | --------- | ------------------------------------------- |
| TransactionType | string | yes       | Transaction type                            |
| WalletId        | string | no        | The Wallet Id, according to TransactionType |
| FundingSourceId | string | no        | The Funding Source Id                       |
| Bytes           | string | yes       | The file's blob                             |

{% hint style="info" %}
**NOTE**

Only `fundingSourceId` *or* `walletId` should be provided- depending on the transaction type.
{% endhint %}

**Response**

<table><thead><tr><th width="222.5999755859375">Parameter</th><th width="153.7999267578125">Type</th><th>Description</th></tr></thead><tbody><tr><td>InvalidTransactions</td><td>string</td><td>The amount of invalid transactions</td></tr><tr><td>ValidTransactions</td><td>int</td><td>The amount of valid transactions</td></tr><tr><td>Status</td><td>string</td><td>The validation status</td></tr><tr><td>TotalAmount</td><td>decimal</td><td>The sum of all transactions amount</td></tr><tr><td><strong>Transactions</strong></td><td></td><td></td></tr><tr><td>AccountNumber</td><td>string</td><td>The account number</td></tr><tr><td>Amount</td><td>decimal</td><td>The transaction's amount</td></tr><tr><td>Comment</td><td>string</td><td>The transaction's comment</td></tr><tr><td>CompanyName</td><td>string</td><td>Company's name</td></tr><tr><td>CustomerId</td><td>string</td><td>Customer id</td></tr><tr><td>FirstName</td><td>string</td><td>User's first name</td></tr><tr><td>LastName</td><td>string</td><td>User's last name</td></tr><tr><td>InstitutionNumber</td><td>string</td><td>Institution's number</td></tr><tr><td>Memo</td><td>string</td><td>The transaction's memo</td></tr><tr><td>Status</td><td>string</td><td>The status</td></tr><tr><td>TransitNumber</td><td>string</td><td>Transit number</td></tr></tbody></table>

Each transaction will return a Status property explaining what is wrong with it

**Status**

| Description                                                   |
| ------------------------------------------------------------- |
| Ok                                                            |
| First Name, Last Name or Company name are mandatory           |
| Either First and Last Name or Company Name should be informed |
| Institution, Transit and Account numbers are mandatory        |
| Institution Number min length is 3 characters                 |
| Transit Number length needs to be 5 characters                |
| Account Number min length is 5 characters                     |
| Account Number max length is 12 characters                    |
| Invalid amount                                                |
| Amount must be greater than zero                              |
| Duplicated transaction                                        |

### Creating a batch transaction (Canada)

Use this endpoint if you want to create EFT or Interac transactions using a batch file.

`Method: POST`

`Endpoint: {{env}}/api/transaction/ProcessBatchFile`

{% tabs %}
{% tab title="Payload" %}

```json
{
  "FileName": "zumrails_Ach_batch_transaction_template.csv",
  "SkipFileAlreadyProcessedInLast24Hours": true,
  "WithdrawSumTotalFromFundingSource": false,
  "Bytes":"Zmlyc3RfbmFtZV9yZXF1aXJlZDtsYXN0X25hbWVfcmVxdWlyZWQ7Y29tcGFueV9uYW1lO2VtYWlsO3Bob25lX251bWJlcjtpZF90eXBlO2lkX251bWJlcjtidXNpbmVzc190YXhfaWQ7YW1vdW50X3JlcXVpcmVkO2FkZHJlc3NMaW5lMV9yZXF1aXJlZDthZGRyZXNzTGluZTI7Y2l0eV9yZXF1aXJlZDtzdGF0ZV9yZXF1aXJlZDt6aXBfcmVxdWlyZWQ7YWNjb3VudF90eXBlX3JlcXVpcmVkO3JvdXRpbmdfbnVtYmVyX3JlcXVpcmVkO2FjY291bnRfbnVtYmVyX3JlcXVpcmVkO21lbW87Y29tbWVudDtzY2hlZHVsZWRfZGF0ZTtjbGllbnRfdXNlcl9pZA0KSm9objtEb2U7Ozs7U1NOOzEyMzQ1Njc4OTs7MTUwO01haW4gU3RyZWV0IDEyMztTdWl0ZSAzMDE7QW55dG93bjtUWDsxMjM0NTY3ODk7Q2hlY2tpbmc7MTIyMDAwNDk2OzEyMzQ1Njc4OTtNZW1vIG1lc3NhZ2U7SW50ZXJuYWwgTWVzc2FnZTsyMDI1LTA1LTA2Ow0KSm9objtEb2U7O2pvaG4uZG9lQGVtYWlsLmNvbTs1NTU1NTU1NTU1O1NTTjsxMjM0NTY3ODk7OzE2MDtNYWluIFN0cmVldCAxMjM7U3VpdGUgMzAxO0FueXRvd247VFg7MTIzNDU2Nzg5O1NhdmluZ3M7MTIyMDAwNDk2OzEyMzQ1Njc4OTtNZW1vIG1lc3NhZ2U7SW50ZXJuYWwgTWVzc2FnZTsyMDI1LTA1LTA2Ow0K",
  "FundingSourceId": "2e228bf1-0044-4058-8307-fd066089b02e",
  "TransactionMethod":"Eft",
  "TransactionType": "AccountsPayable"
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
    "statusCode": 200,
    "message": "POST Request successful.",
    "isError": false,
    "result": 3216
}
```

{% endtab %}
{% endtabs %}

**Input parameters**

<table><thead><tr><th width="229">Parameter</th><th width="88">Type</th><th width="103">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>FileName</td><td>string</td><td>yes</td><td>The name of the batch file</td></tr><tr><td>SkipFileAlreadyProcessedInLast24Hours</td><td>bollean</td><td>yes</td><td>Checks if the same file was already processed in the last 24 hours</td></tr><tr><td>WithdrawSumTotalFromFundingSource</td><td>boolean</td><td>yes</td><td>If set to True, we will do one transaction to pull the entire sum of transactions in the batch from the funding source. This is only applicable for Accounts Payable transactions with more than 1 transaction in the file. It does not work for scheduled transactions. Read more about this feature here.</td></tr><tr><td>Bytes</td><td>string</td><td>yes</td><td>The file's blob</td></tr><tr><td>FundingSourceId</td><td>string</td><td>no</td><td>The Funding Source Id</td></tr><tr><td>WalletId</td><td>string</td><td>no</td><td>The Wallet Id, according to TransactionType</td></tr><tr><td>TransactionType</td><td>string</td><td>yes</td><td>Transaction type</td></tr><tr><td>Transaction Methos</td><td>string</td><td>yes</td><td>The selected transaction method (EFT/ Interac)</td></tr></tbody></table>

{% hint style="info" %}
**NOTE**

Only **`fundingSourceId`** *or* **`walletId`** should be provided- depending on the transaction type.
{% endhint %}

**Transaction types**

| Type               | Description                    |
| ------------------ | ------------------------------ |
| AccountsReceivable | Execute accounts receivable AR |
| AccountsPayable    | Execute accounts payable AP    |

### Upload a batch file (US)

Use this endpoint if you want to upload and and process an ACH transactions batch file.

`Method: POST`

`Endpoint: {{env}}/api/transaction/UploadBatchFileUs`

{% tabs %}
{% tab title="Payload" %}

```json
{
  "FileName": "zumrails_Ach_batch_transaction_template.csv",
  "SkipFileAlreadyProcessedInLast24Hours": true,
  "WithdrawSumTotalFromFundingSource": false,
  "Bytes":"Zmlyc3RfbmFtZV9yZXF1aXJlZDtsYXN0X25hbWVfcmVxdWlyZWQ7Y29tcGFueV9uYW1lO2VtYWlsO3Bob25lX251bWJlcjtpZF90eXBlO2lkX251bWJlcjtidXNpbmVzc190YXhfaWQ7YW1vdW50X3JlcXVpcmVkO2FkZHJlc3NMaW5lMV9yZXF1aXJlZDthZGRyZXNzTGluZTI7Y2l0eV9yZXF1aXJlZDtzdGF0ZV9yZXF1aXJlZDt6aXBfcmVxdWlyZWQ7YWNjb3VudF90eXBlX3JlcXVpcmVkO3JvdXRpbmdfbnVtYmVyX3JlcXVpcmVkO2FjY291bnRfbnVtYmVyX3JlcXVpcmVkO21lbW87Y29tbWVudDtzY2hlZHVsZWRfZGF0ZTtjbGllbnRfdXNlcl9pZA0KSm9objtEb2U7Ozs7U1NOOzEyMzQ1Njc4OTs7MTUwO01haW4gU3RyZWV0IDEyMztTdWl0ZSAzMDE7QW55dG93bjtUWDsxMjM0NTY3ODk7Q2hlY2tpbmc7MTIyMDAwNDk2OzEyMzQ1Njc4OTtNZW1vIG1lc3NhZ2U7SW50ZXJuYWwgTWVzc2FnZTsyMDI1LTA1LTA2Ow0KSm9objtEb2U7O2pvaG4uZG9lQGVtYWlsLmNvbTs1NTU1NTU1NTU1O1NTTjsxMjM0NTY3ODk7OzE2MDtNYWluIFN0cmVldCAxMjM7U3VpdGUgMzAxO0FueXRvd247VFg7MTIzNDU2Nzg5O1NhdmluZ3M7MTIyMDAwNDk2OzEyMzQ1Njc4OTtNZW1vIG1lc3NhZ2U7SW50ZXJuYWwgTWVzc2FnZTsyMDI1LTA1LTA2Ow0K",
  "FundingSourceId": "2e228bf1-0044-4058-8307-fd066089b02e",
  "TransactionMethod":"Ach",
  "TransactionType": "AccountsPayable"
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
    "statusCode": 200,
    "message": "POST Request successful.",
    "isError": false,
    "result": ""
}
```

{% endtab %}
{% endtabs %}

**Input parameters**

<table><thead><tr><th width="229">Parameter</th><th width="88">Type</th><th width="103">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>FileName</td><td>string</td><td>yes</td><td>The name of the batch file</td></tr><tr><td>SkipFileAlreadyProcessedInLast24Hours</td><td>bollean</td><td>yes</td><td>Checks if the same file was already processed in the last 24 hours</td></tr><tr><td>WithdrawSumTotalFromFundingSource</td><td>boolean</td><td>yes</td><td>If set to True, we will do one transaction to pull the entire sum of transactions in the batch from the funding source. This is only applicable for Accounts Payable transactions with more than 1 transaction in the file. It does not work for scheduled transactions. Read more about this feature here.</td></tr><tr><td>Bytes</td><td>string</td><td>yes</td><td>The file's blob</td></tr><tr><td>FundingSourceId</td><td>string</td><td>no</td><td>The Funding Source Id</td></tr><tr><td>WalletId</td><td>string</td><td>no</td><td>The Wallet Id, according to TransactionType</td></tr><tr><td>TransactionType</td><td>string</td><td>yes</td><td>Transaction type</td></tr><tr><td>Transaction Methos</td><td>string</td><td>yes</td><td>The selected transaction method (EFT/ Interac)</td></tr></tbody></table>

### Search transactions batches (US)

Retrieve a paginated list of transactions batches. This is useful for getting an overview of all transaction batches made.

`Method: POST`

`Endpoint: {{env}}/api/batch/filter`

{% tabs %}
{% tab title="Payload" %}

```json
{
    "CreatedAt": "2025-05-05T04:00:00.000Z",
    "CreatedAtOperator": "exactlymatches"
    "ItemsPerPage": 10,
    "PageNumber": 1
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
    "statusCode": 200,
    "message": "POST Request successful.",
    "isError": false,
    "result": {
        "CurrentPage": 1,
        "PageSize": 10,
        "TotalCount": 1,
        "Items": [
            {
                "Id": "003e55bf-29fe-4e7d-aa6a-e11e5b1f2af1",
                "CreatedAt": "2025-05-05T17:29:33.598336Z",
                "ZumRailsType": "AccountsReceivable",
                "TransactionMethod": "Ach",
                "IdCounter": 3223,
                "Status": "PartiallyProcessed",
                "NumberOfTransactions": 1,
                "Customer": {
                    "AchProvider": "Orum",
                    "AddressCountry": "USA",
                    "Id": "32e76c70-a0ab-42f4-864b-c6fed0fc7832",
                    "CompanyName": "Your Company Name",
                    "CompanyEmail": "company@zumrails.com"
                },
                "FileName": "zumrails_Ach_batch_transaction_template.csv",
                "TransactionsCount": 2,
                "SuccessCount": 1,
                "FailureCount": 1
            }
        ]
    }
}
```

{% endtab %}
{% endtabs %}

**Input parameters**

| Parameter      | Type    | Required | Description                                    |
| -------------- | ------- | -------- | ---------------------------------------------- |
| CreatedAt      | string  | No       | The transaction status                         |
| **Pagination** |         |          |                                                |
| ItemsPerPage   | Integer | No       | The amount of items per page between 0 and 100 |
| PageNumber     | Integer | No       | The desired page                               |

**Operators**

<table><thead><tr><th width="220.39996337890625">Type</th><th>Description</th></tr></thead><tbody><tr><td>contains</td><td>Filter records that contains the value</td></tr><tr><td>excludes</td><td>Filter records that does not contains the value</td></tr><tr><td>exactly matches</td><td>Filter records that exactly matches the value</td></tr></tbody></table>

**Response**

| Parameter            | Type    | Decription                                        |
| -------------------- | ------- | ------------------------------------------------- |
| CurrentPage          | integer | The current page number in the paginated result.  |
| PageSize             | integer | The number of items per page.                     |
| TotalCount           | integer | The total number of items across all pages.       |
| **Items**            |         | List of all batch file transactions               |
| Id                   | guid    | Unique identifier of the batch transaction        |
| CreatedAt            | date    | Timestamp of when the item was created            |
| ZumRailsType         | string  | Type of the batch, e.g., "AccountsReceivable"     |
| TransactionMethod    | string  | The transaction method used, e.g., "Ach"          |
| IdCounter            | integer | Internal numeric identifier- batch counter        |
| Status               | string  | Status of the batch, e.g., "PartiallyProcessed"   |
| NumberOfTransactions | integer | Number of transactions associated with the batch. |
| FileName             | string  | Name of the file associated with the batch        |
| TransactionsCount    | integer | Total number of transactions in the batch         |
| SuccessCount         | integer | Number of successfully processed transactions     |
| FailureCount         | integer | Number of failed transactions                     |
| **Customer**         |         | Customer details                                  |
| AchProvider          | string  | ACH provider used by the customer                 |
| AddressCountry       | string  | Country of the customer's address                 |
| Id                   | guid    | Unique identifier of the customer                 |
| CompanyName          | string  | Name of the customer's company                    |
| CompanyEmail         | string  | Contact email of the customer's company.          |

### Get a batch file transactions (US)

Use this endpoint to retrieve the details of a batch file transactionby its Id. It’s especially useful for viewing the status of each individual transaction processed within the batch.

`Method: POST`

`Endpoint: {{env}}/api/batch/get-batch-transactions{batchId}`

Replace `{batchId}` with the Id of the batch file you want to retrieve.

{% tabs %}
{% tab title="Payload" %}

```json
{
"ItemsPerPage": 10,
"PageNumber": 1
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
    "statusCode": 200,
    "message": "POST Request successful.",
    "isError": false,
    "result": {
        "CurrentPage": 1,
        "PageSize": 100,
        "TotalCount": 2,
        "Items": [
            {
                "PhoneNumber": "5555555555",
                "BusinessTaxId": "",
                "IdType": "SSN",
                "IdNumber": "123456789",
                "AddressLine1": "Main Street 123",
                "AddressLine2": "Suite 301",
                "City": "Anytown",
                "State": "TX",
                "PostalCode": "123456789",
                "AccountType": "Savings",
                "RoutingNumber": "122000496",
                "AccountNumber": "123456789",
                "FirstName": "John",
                "LastName": "Doe",
                "CompanyName": "",
                "Amount": 1.6,
                "Comment": "Internal Message",
                "Memo": "Memo message",
                "Status": "Error: invalid_phone_value - Too many customers with the same phone number",
                "CustomerId": "32e76c70-a0ab-42f4-864b-c6fed0fc7832",
                "ScheduledDate": "2025-05-06T00:00:00Z",
                "Email": "john.doe@email.com",
                "BatchCsvTransactionStatus": "Failed"
            },
            {
                "PhoneNumber": "",
                "BusinessTaxId": "",
                "IdType": "SSN",
                "IdNumber": "123456789",
                "AddressLine1": "Main Street 123",
                "AddressLine2": "Suite 301",
                "City": "Anytown",
                "State": "TX",
                "PostalCode": "123456789",
                "AccountType": "Checking",
                "RoutingNumber": "122000496",
                "AccountNumber": "123456789",
                "FirstName": "John",
                "LastName": "Doe",
                "CompanyName": "",
                "Amount": 1.5,
                "Comment": "Internal Message",
                "Memo": "Memo message",
                "Status": "Ok",
                "CustomerId": "32e76c70-a0ab-42f4-864b-c6fed0fc7832",
                "ScheduledDate": "2025-05-06T00:00:00Z",
                "Email": "",
                "BatchCsvTransactionStatus": "Success"
            }
        ]
    }
}
```

{% endtab %}
{% endtabs %}

**Input parameters**

| Parameter      | Type    | Required | Description                                    |
| -------------- | ------- | -------- | ---------------------------------------------- |
| Status         | string  | No       | The transaction status                         |
| **Pagination** |         |          |                                                |
| ItemsPerPage   | Integer | No       | The amount of items per page between 0 and 100 |
| PageNumber     | Integer | No       | The desired page                               |

**Response**

| Parameter                 | Type    | Description                                                          |
| ------------------------- | ------- | -------------------------------------------------------------------- |
| isError                   | boolean | Indicates whether the request resulted in an error.                  |
| CurrentPage               | integer | The current page number in the paginated result.                     |
| PageSize                  | integer | The number of items per page.                                        |
| TotalCount                | integer | The total number of items across all pages.                          |
| **Items**                 |         | List of all the transaction in the batch file                        |
| PhoneNumber               | string  | User’s phone number.                                                 |
| BusinessTaxId             | string  | User's business tax identification number (if applicable)            |
| IdType                    | string  | User's type of identification document (e.g., SSN)                   |
| IdNumber                  | string  | User's identification number associated with the given ID type       |
| AddressLine1              | string  | User's primary address line                                          |
| AddressLine2              | string  | User's secondary address line                                        |
| City                      | string  | City of the user’s address                                           |
| State                     | string  | State of the user’s address                                          |
| PostalCode                | string  | Postal or ZIP code of the user’s address                             |
| AccountType               | string  | Type of bank account (e.g., Checking, Savings)                       |
| RoutingNumber             | string  | Bank routing number for the account                                  |
| AccountNumber             | string  | Bank account number                                                  |
| FirstName                 | string  | User’s first name                                                    |
| LastName                  | string  | User’s last name                                                     |
| CompanyName               | string  | Name of the user’s company, if applicable                            |
| Amount                    | decimal | Transaction amount                                                   |
| Comment                   | string  | Internal comment or note related to the transaction                  |
| Memo                      | string  | Description or memo field that may appear in the transaction         |
| Status                    | string  | Status of the transaction, including error messages if any           |
| CustomerId                | guid    | Unique identifier of the customer                                    |
| ScheduledDate             | date    | Date and time when the transaction is scheduled                      |
| Email                     | string  | User’s email address                                                 |
| BatchCsvTransactionStatus | string  | Overall transaction status within the batch (e.g., Success, Failed). |

Each transaction includes a `Status` property that provides details about any issues encountered

**Status**

| Description |
| ----------- |
| Failed      |
| Success     |
| In Progress |

## Refund a Transaction

With Zūm Rails, it is easy to refund Credit Card transactions. Currently we support whole/partial refunds of initial transactions. When you create a new refund, you must specify the transaction ID that you wish to refund. Creating a new refund will refund a transaction that has previously been created but not yet refunded. Funds will be refunded to the Credit Card that was originally charged. Read more about refunds [here](https://help.zumrails.com/en/articles/5650178-credit-card-refund-process).

`Method: POST`

`Endpoint: {{env}}/api/transaction/{transaction_id}/Refund`

{% tabs %}
{% tab title="Payload" %}

```json
{
  "Amount": 9.99
}
```

{% endtab %}

{% tab title="Response (Canada)" %}

```json
{
  "statusCode": 200,
  "message": "POST Request successful.",
  "isError": false,
  "result": {
    "Id": "82536c13...5f1cbb98c6c3",
    "CreatedAt": "2022-07-19T16:57:48.505577Z",
    "Memo": "Refund",
    "Comment": "78f8f734...d7f8408596c9",
    "Amount": 2.74,
    "Customer": {
      "Id": "e15bbe9b...dc256ba3a247",
      "CompanyName": "Sam's Gym"
    },
    "User": {
      "Id": "c11cc378...8f34ac8173be",
      "FirstName": "John",
      "LastName": "111",
      "Email": "lxtkzblpk12wurb4tczfy@gmail.com",
      "IsActive": true
    },
    "Wallet": {
      "Id": "1790e62a...fda052b74341",
      "Type": "Unified"
    },
    "ZumRailsType": "Refund",
    "TransactionMethod": "CreditCard",
    "TransactionHistory": [
      {
        "Id": "152ab24d...9b936225368a",
        "CreatedAt": "2022-07-19T16:57:48.5981359Z",
        "Event": "Started",
        "EventDescription": "Transaction with type Refund started, from Zūm Wallet to User John 111 - (************2446) with amount: $2.74"
      },
      {
        "Id": "c45a7cb5...b0cc3db894fb",
        "CreatedAt": "2022-07-19T16:57:50.2792507Z",
        "Event": "Succeeded",
        "EventDescription": "Transaction completed"
      }
    ],
    "TransactionStatus": "Completed",
    "From": "Zūm Wallet",
    "To": "User John 111 - (************2446)",
    "CompletedAt": "2022-07-19T16:57:50.2889607Z",
    "IsRefundable": false
  }
}
```

{% endtab %}

{% tab title="Response (US)" %}

```json
{
  "statusCode": 200,
  "message": "POST Request successful.",
  "isError": false,
  "result": {
    "PaymentInstrumentId": "3394e27c...a3dba799bb0e",
    "CreditCardResponseCode": "000",
    "CreditCardAdditionalResponseData": "APPROVAL",
    "Id": "57bad817...f883d1c133bd",
    "CreatedAt": "2023-10-25T16:01:29.0270908Z",
    "Memo": "Refund",
    "Comment": "7c5af277-9509-44f8-a1e6-3e8c0c573992",
    "Amount": 9.99,
    "Customer": {
      "Id": "e15bbe9b...dc256ba3a247",
      "CompanyName": "Sam's Gym",
      "CompanyEmail": "credit.card@zumrails.com"
    },
    "User": {
      "Id": "c11cc378...8f34ac8173be",
      "FirstName": "John",
      "LastName": "111",
      "Email": "lxtkzblpk12wurb4tczfy@gmail.com",
      "IsActive": true,
      "PaymentInstruments": [
        {
            "Id": "3394e27c...a3dba799bb0e"
        }
      ]
    },
    "Wallet": {
      "Id": "1790e62a...fda052b74341",
      "Type": "Unified",
      "Currency": "USD"
    },
    "ZumRailsType": "Refund",
    "TransactionMethod": "CreditCard",
    "TransactionHistory": [
      {
        "Id": "37a5b114-2164-4e0e-9605-316c5c6583c6",
        "CreatedAt": "2023-10-25T16:01:29.1598149Z",
        "Event": "Started",
        "EventDescription": "Transaction with type Refund started, from Zūm Wallet to User John 111 - (************2446) with amount: $9.99"
      },
      {
        "Id": "66b6db34-2264-48ba-99d3-99446c08c8ea",
        "CreatedAt": "2023-10-25T16:01:33.1735111Z",
        "Event": "WalletWithdrawn",
        "EventDescription": "Wallet withdrawn, amount: $9.99"
      },
      {
        "Id": "1bb732fc-843f-44bc-a570-85a375ac2136",
        "CreatedAt": "2023-10-25T16:01:33.2034046Z",
        "Event": "Succeeded",
        "EventDescription": "Transaction completed"
      }
    ],
    "TransactionStatus": "Completed",
    "From": "Zūm Wallet",
    "To": "User John 111 - (************2446)",
    "CompletedAt": "2022-07-19T16:57:50.2889607Z",
    "Currency": "USD"
  }
}
```

{% endtab %}
{% endtabs %}

The response details are the same as the [get transaction API](https://docs.zumrails.com/docs/canada/api-specification/transactions#get-a-specific-transaction).

{% hint style="info" %}
**CAUTION (Canada)**

To simulate a Partial refund transaction in Sandbox, use the word **PartialRefundTest** in the field COMMENT while creating a Credit Card transaction. If the word **PartialRefundTest** is not informed, or something else is informed, you will not be able to simulate multiple Partial Refunds for this transaction.
{% endhint %}

### Retrieve a refund

To retrieve the details of an existing refund, use the [get transaction API](https://docs.zumrails.com/docs/canada/api-specification/transactions#get-a-specific-transaction).

### List all refunds <a href="#list-all-refunds" id="list-all-refunds"></a>

Returns a list of all refunds you’ve previously created. The refunds are returned in sorted order, with the most recent refunds appearing first. For convenience, the 10 most recent refunds will be returned by default. To get a list of all refunds, use the [filter transaction API](https://docs.zumrails.com/docs/canada/api-specification/transactions#search-a-transaction).

## Travel rules

Zūm Rails processes domestic payments but allows clients to include optional Travel Rule fields on each transaction. When the underlying rail supports structured pass-through, Zūm Rails maps and forwards the data; when the rail does not carry these fields, we retain the metadata for compliance, reporting, and counterparty requests consistent with applicable law and our data retention policies.

The Travel Rule fields should be populated when creating a transaction, and the same fields will be available in the response to the transaction GET endpoint.

`Method: POST`

`Endpoint: {{env}}/api/transaction`

{% tabs %}
{% tab title="Payload" %}

```json
{
  "Existent transaction creation fields": "",
  "TravelRule": {
    "Originator": {
      "FullName": "Alice Example",
      "Address": {
        "Line1": "123 Main St",
        "Line2": "Suite 4B",
        "City": "Toronto",
        "Region": "ON",
        "PostalCode": "M5V 2T6",
        "Country": "CA"
      },
      "DateOfBirth": "1989-11-15",
      "Id": {
        "Type": "DriverLicense",
        "Value": "E1234-5678-9012",
        "Country": "CA"
      },
      "AccountReference": "001-12345-1234567"
    },
    "Beneficiary": {
      "FullName": "Alice Example",
      "Address": {
        "Line1": "123 Main St",
        "Line2": "Suite 4B",
        "City": "Toronto",
        "Region": "ON",
        "PostalCode": "M5V 2T6",
        "Country": "CA"
      },
      "DateOfBirth": "1989-11-15",
      "Id": {
        "Type": "DriverLicense",
        "Value": "E1234-5678-9012",
        "Country": "CA"
      },
      "AccountReference": "001-12345-1234567"
    },
    "Reference": "Order 48211"
  }
}
```

{% endtab %}
{% endtabs %}

The fields below are optional for the Travel Rule. Originator and Beneficiary share the same payload.

<table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th><th data-type="number">Maxlengh</th></tr></thead><tbody><tr><td>Reference</td><td>String</td><td>Open field to inform any reference about this payment, such as order ID, invoice ID</td><td>20</td></tr><tr><td><strong>Beneficiary or Originator</strong></td><td></td><td></td><td>null</td></tr><tr><td>FullName</td><td>String</td><td>Full name (personal or business)</td><td>20</td></tr><tr><td>DateOfBirth</td><td>String</td><td>Date of birth in the format of YYYY-MM-DD</td><td>10</td></tr><tr><td>AccountReference</td><td>String</td><td>To be used for account number</td><td>20</td></tr><tr><td><strong>Address</strong> </td><td>String</td><td></td><td>null</td></tr><tr><td>Line1</td><td>String</td><td></td><td>20</td></tr><tr><td>Line2</td><td>String</td><td></td><td>20</td></tr><tr><td>City</td><td>String</td><td></td><td>20</td></tr><tr><td>Region</td><td>String</td><td>The region, province or state</td><td>20</td></tr><tr><td>PostalCode</td><td>String</td><td></td><td>10</td></tr><tr><td>Country</td><td>String</td><td>2 digits country code</td><td>2</td></tr><tr><td><strong>Id</strong></td><td></td><td></td><td>null</td></tr><tr><td>Type</td><td>String</td><td>Identification type, like Driver's Licence or Government Id</td><td>20</td></tr><tr><td>Value</td><td>String</td><td>Id value</td><td>20</td></tr><tr><td>Country</td><td>String</td><td>2 digits country code</td><td>2</td></tr></tbody></table>
