Skip to main content
POST
/
api
/
v1
/
transactions
Create EFT Transaction
curl --request POST \
  --url https://www.{baseurl}.com/api/v1/transactions \
  --header 'Content-Type: application/json' \
  --header 'x-client-id: <x-client-id>' \
  --data '
[
  {
    "transactionCode": 1,
    "amount": 250,
    "description": "Invoice 1001",
    "crossReferenceNumber": "INV-1001",
    "paymentDirection": "DEBIT",
    "currency": "CAD",
    "payor": {
      "accountInfo": {
        "institutionCode": "001",
        "transitNumber": "12345",
        "accountNumber": "1234567"
      },
      "contactInfo": {
        "firstName": "Jane",
        "lastName": "Doe"
      }
    },
    "scheduleInfo": {
      "paymentFrequency": "OneTime",
      "startDate": "2026-04-15"
    }
  }
]
'
{
  "schedules": [
    {
      "id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
      "amount": 250,
      "startDate": "2026-04-15T00:00:00",
      "endDate": "0001-01-01T00:00:00",
      "transactionsCount": 1,
      "frequency": "OneTime",
      "payor": {
        "name": "Jane Doe",
        "email": null
      },
      "payee": {
        "name": null,
        "email": null
      },
      "status": "Active",
      "padStatus": null,
      "padId": null,
      "crossReferenceNumber": "INV-1001",
      "paymentDirection": "DEBIT"
    }
  ]
}
Work in progressThis section is currently under active development as part of improvements planned for 2026. Content may change as we expand product capabilities.If you’re interested in early access or want to learn more about what’s coming, feel free to reach out to the team.
Create a new EFT transaction with optional recurring schedule. Supports both debit (collect from customer) and credit (send to customer) directions. The request body is a JSON array containing one transaction object. Batch transactions are not currently supported.

Validation Rules

DEBIT Transactions

  • payor is required; payee must be null
  • startDate must be a future date
  • OneTime: only startDate is required
  • Recurring: startDate plus exactly one of endDate or transactionsCount
    • endDate must be after startDate
    • transactionsCount maximum is 300

CREDIT Transactions

  • payee is required; payor must be null
  • Only OneTime frequency is supported
  • startDate must be today’s date (same-day processing only)

Account Info Logic

Provide either accountId or the combination of institutionCode + transitNumber + accountNumber. You cannot provide both.

Contact Info Logic

Provide either contactId or name fields (firstName + lastName, or legalName). You cannot provide both.

Headers

x-client-id
string
required

Your API key provided during onboarding.

Body

application/json
Required array length: 1 element
transactionCode
integer
required

Unique code identifying the transaction type.

Example:

1

amount
number<double>
required

Payment amount. Minimum $0.01.

Required range: x >= 0.01
Example:

250

paymentDirection
enum<string>
required

DEBIT to collect from customer, CREDIT to send to customer.

Available options:
DEBIT,
CREDIT
Example:

"DEBIT"

currency
enum<string>
required

Currency code. Only CAD is supported.

Available options:
CAD
Example:

"CAD"

scheduleInfo
object
required
description
string

Short description. Max 15 characters.

Maximum string length: 15
Example:

"Invoice 1001"

crossReferenceNumber
string

Your reference identifier. Alphanumeric and hyphens, max 36 characters.

Maximum string length: 36
Pattern: ^[A-Za-z0-9-]+$
Example:

"INV-1001"

purposeCategory
string

Category for the payment purpose.

payor
object

Required for DEBIT transactions. Must be null for CREDIT.

payee
object

Required for CREDIT transactions. Must be null for DEBIT.

Response

Transaction created successfully

schedules
object[]