Helcim

Payment processing platform

dev.helcim.com ↗
Version
2.0.0
OpenAPI
3.0.0
Endpoints
28
Schemas
66
Updated
3 days ago
Payments payments credit-card processing
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://api.helcim.com/v2

Authentication

apiKey

Endpoints

Clear filters

Card batch 2 endpoints

GET /card-batches
operationId: CardBatch_getAll

Parameters

Name In Required Type Description
batchNumber query optional number The number of the batch to retrieve. Note that this is the batch number, not batch ID.
terminalId query optional number The terminalId of the requested batch
collect-stats query optional string Includes transaction statistics for the batch

Responses

default Failed
200 Successful
GET /card-batches
GET /card-batches/{cardBatchId}
operationId: CardBatch_getDetails

Parameters

Name In Required Type Description
cardBatchId path required integer The Card Batch Id of the Card Batch you want to get
collect-stats query optional string Includes transaction statistics for the batch

Responses

default Failed
200 Successful
GET /card-batches/{cardBatchId}

Card terminal 1 endpoints

GET /card-terminals
operationId: CardTerminal_getAll

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/card_terminals_request"
      }
    }
  }
}

Responses

default Failed
200 Successful
GET /card-terminals

Card transaction 2 endpoints

GET /card-transactions
operationId: CardTransaction_collectTransactions

Parameters

Name In Required Type Description
dateFrom query optional string Filters transactions created from 2020-01-01 (Mountain Time)
dateTo query optional string Filters transactions created until 2021-01-01 (Mountain Time)
search query optional string Searches amount, card number(F4L4 only), cardholder name, & approval codes
customerCode query optional string The code of the customer associated with the transaction
invoiceNumber query optional string The number of the invoice associated with the transaction
cardToken query optional string The token of the card associated with the transaction
cardBatchId query optional integer The id of the batch associated with the transaction

Responses

default Failed
200 Successful
GET /card-transactions
GET /card-transactions/{cardTransactionId}
operationId: CardTransaction_getById

Parameters

Name In Required Type Description
cardTransactionId path required integer The Card Transaction Id of the Card Transaction you want to get

Responses

default Failed
200 Successful
GET /card-transactions/{cardTransactionId}

Customer 6 endpoints

GET /customers
operationId: Customer_list

Parameters

Name In Required Type Description
search query optional string The search term to be used for partial matching on contactName, businessName, customerCode, city, phone and email (Only use one query field per request).
customerCode query optional string Existing customer code (Only use one query field per request).

Responses

default Failed
200 Successful
GET /customers
GET /customers/{customerId}
operationId: Customer_getCustomer

Parameters

Name In Required Type Description
customerId path required integer The Id of the customer

Responses

default Failed
200 Successful
GET /customers/{customerId}
GET /customers/{customerId}/bank-accounts
operationId: Customer_getBankAccounts

Parameters

Name In Required Type Description
customerId path required integer The Id of the customer
bankToken query optional string The bank account token.
verified query optional number Check if bank account is verified or not. use 1 or 0.
ready query optional number Check if bank account is ready or not. use 1 or 0.

Responses

default Failed
200 Successful
GET /customers/{customerId}/bank-accounts
GET /customers/{customerId}/bank-accounts/{bankAccountId}
operationId: Customer_getBankAccount

Parameters

Name In Required Type Description
customerId path required integer The Id of the customer
bankAccountId path required integer The Id of the bank account

Responses

default Failed
200 Successful
GET /customers/{customerId}/bank-accounts/{bankAccountId}
GET /customers/{customerId}/cards
operationId: Customer_getCards

Parameters

Name In Required Type Description
customerId path required integer The Id of the customer
cardToken query optional string The card token.

Responses

default Failed
200 Successful
GET /customers/{customerId}/cards
GET /customers/{customerId}/cards/{cardId}
operationId: Customer_getCardDetails

Parameters

Name In Required Type Description
customerId path required integer The Id of the customer
cardId path required integer The Id of the card

Responses

default Failed
200 Successful
GET /customers/{customerId}/cards/{cardId}

General 1 endpoints

GET /connection-test
operationId: General_testConnectivityToHelcimApi

Responses

200 Successful
400 Bad Request
401 Unauthorized
403 Unauthorized
GET /connection-test

Invoice 2 endpoints

GET /invoices
operationId: Invoice_list

Parameters

Name In Required Type Description
invoiceNumber query optional string The number of the invoice associated with the transaction
dateStart query optional string Filters transactions created from 2020-01-01 (Mountain Time)
dateEnd query optional string Filters transactions created until 2021-01-01 (Mountain Time)
withConvenienceFee query optional integer Include convenience fee of each invoice 0 | 1

Responses

default Failed
200 Successful
GET /invoices
GET /invoices/{invoiceId}
operationId: Invoice_getById

Parameters

Name In Required Type Description
invoiceId path required string The unique invoice Id

Responses

default Failed
200 Successful
GET /invoices/{invoiceId}

Schemas

object Address
{
  "type": "object",
  "title": "Address",
  "required": [
    "name",
    "postalCode",
    "street1"
  ],
  "properties": {
    "city": {
      "type": "string",
      "example": "Calgary"
    },
    "name": {
      "type": "string",
      "example": "John Smith / Helcim",
      "description": "Contact Name or Business Name"
    },
    "email": {
      "type": "string",
      "example": "john@example.com"
    },
    "phone": {
      "type": "string",
      "example": "4031231234",
      "description": "10 to 15 digits phone number."
    },
    "country": {
      "type": "string",
      "example": "CAN",
      "description": "3-letter abbreviation of the country(CAN, USA)"
    },
    "street1": {
      "type": "string",
      "example": "Jump Street 21"
    },
    "street2": {
      "type": "string"
    },
    "province": {
      "type": "string",
      "example": "AB",
      "description": "2 letter abbreviation of the province(AB, BC, CA). Required field if country is CAN or USA."
    },
    "postalCode": {
      "type": "string",
      "example": "H0H0H0"
    }
  }
}
object BankAccount
{
  "type": "object",
  "title": "BankAccount",
  "required": [
    "accountCorporate",
    "accountType",
    "bankAccountNumber",
    "city",
    "companyName",
    "country",
    "firstName",
    "lastName",
    "postalCode",
    "province",
    "streetAddress"
  ],
  "properties": {
    "city": {
      "type": "string",
      "example": "Calgary"
    },
    "country": {
      "type": "string",
      "example": "CAN",
      "description": "Only allow CAN - Canada, USA - United States"
    },
    "lastName": {
      "type": "string",
      "example": "Smith",
      "description": "The bank account holder last name"
    },
    "province": {
      "type": "string",
      "example": "AB"
    },
    "firstName": {
      "type": "string",
      "example": "John",
      "description": "The bank account holder first name"
    },
    "postalCode": {
      "type": "string",
      "example": "T2T2T2"
    },
    "accountType": {
      "type": "string",
      "example": "CHECKING",
      "description": "CHECKING - Chequing, SAVINGS - Savings"
    },
    "companyName": {
      "type": "string",
      "example": "Microsoft",
      "description": "The company name"
    },
    "bankIdNumber": {
      "type": "string",
      "example": "888",
      "description": "Required for Canadian Bank Account Holder, the institution number - three digits - identifies your bank."
    },
    "padAgreement": {
      "type": "boolean",
      "example": true,
      "description": "Customer given permission for a company or financial institution to debit a bank account when the payment is due."
    },
    "routingNumber": {
      "type": "string",
      "example": "123456789",
      "description": "Required for US Bank Account Holder, a nine-digit code printed on the bottom of checks to identify the financial institution on which it was drawn."
    },
    "streetAddress": {
      "type": "string",
      "example": "440 - something"
    },
    "transitNumber": {
      "type": "string",
      "example": "55555",
      "description": "Required for Canadian Bank Account Holder, the transit number - five digits - shows which branch you opened your account at."
    },
    "accountCorporate": {
      "type": "string",
      "example": "PERSONAL",
      "description": "PERSONAL - Personal Bank Account, CORPORATE - Corporate Bank Account"
    },
    "bankAccountNumber": {
      "type": "string",
      "example": "999999999",
      "description": "Bank account number"
    }
  }
}
object BankAccountResponse
{
  "type": "object",
  "title": "BankAccount",
  "properties": {
    "id": {
      "type": "integer",
      "example": 12312,
      "description": "The id of the bank account."
    },
    "ready": {
      "type": "string",
      "example": "1",
      "description": "Ready status of the bank account, 1|0."
    },
    "address": {
      "$ref": "#/components/schemas/Address"
    },
    "verified": {
      "type": "string",
      "example": "1",
      "description": "Verified status of the bank account, 1|0."
    },
    "bankToken": {
      "type": "string",
      "example": "JHKJHKLKJLOHKJ876545KJBK",
      "description": "The token of the bank account."
    },
    "customerId": {
      "type": "integer",
      "example": 2222,
      "description": "The id of the customer owning the bank account."
    },
    "accountType": {
      "type": "string",
      "example": "CHECKING",
      "description": "The type of the bank account, such as CHECKING | SAVINGS."
    },
    "dateCreated": {
      "type": "string",
      "example": "2025-01-30 13:35:36",
      "description": "The date when the bank account is created."
    },
    "dateUpdated": {
      "type": "string",
      "example": "2025-01-30 13:35:36",
      "description": "The date when the bank account last got updated."
    },
    "bankIdNumber": {
      "type": "string",
      "example": "333",
      "description": "The institution number of Canadian Bank Account that identifies the bank."
    },
    "dateLastUsed": {
      "type": "string",
      "example": "2025-01-30 13:35:36",
      "description": "The date when the bank account last got used."
    },
    "dateVerified": {
      "type": "string",
      "example": "2025-01-30 13:35:36",
      "description": "The date when the bank account is verified."
    },
    "routingNumber": {
      "type": "string",
      "example": "999999999",
      "description": "The routing number of US Bank Account. Identifies the financial institution on which it was drawn."
    },
    "transitNumber": {
      "type": "string",
      "example": "55555",
      "description": "The transit number of Canadian Bank Account. Shows which branch you opened your account at."
    },
    "accountCorporate": {
      "type": "string",
      "example": "PERSONAL",
      "description": "The corporate type of the bank account, such as PERSONAL | CORPORATE."
    },
    "bankAccountNumberL4": {
      "type": "string",
      "example": "9999",
      "description": "Last 4 digits of the bank account number."
    }
  }
}
object BankData
{
  "type": "object",
  "title": "BankData",
  "required": [
    "bankData"
  ],
  "properties": {
    "bankData": {
      "$ref": "#/components/schemas/BankData_bankData"
    }
  }
}
object BankData_bankData
{
  "oneOf": [
    {
      "$ref": "#/components/schemas/BankAccount"
    },
    {
      "$ref": "#/components/schemas/BankToken"
    }
  ]
}
object BankToken
{
  "type": "object",
  "title": "Bank Token",
  "required": [
    "bankToken"
  ],
  "properties": {
    "bankToken": {
      "type": "string",
      "example": "HGKHJK5647698HGJJK",
      "description": "The token for the bank account on file."
    }
  }
}
object CaptureRequest
{
  "type": "object",
  "title": "Capture Request",
  "required": [
    "amount",
    "ipAddress",
    "preAuthTransactionId"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "example": 100.99,
      "description": "The amount to capture. Must be less or equal to the original pre-authorization amount."
    },
    "ecommerce": {
      "type": "boolean",
      "example": true,
      "description": "Set to indicate that the transaction is e-commerce. When set, the Helcim Fraud Defender will provide further analysis."
    },
    "ipAddress": {
      "type": "string",
      "example": "192.168.1.1",
      "description": "IP address of the customer making the transaction, used as part of fraud detection."
    },
    "preAuthTransactionId": {
      "type": "integer",
      "example": 198763,
      "description": "The transaction ID of the original pre-authorization transaction."
    }
  }
}
object Card
{
  "type": "object",
  "title": "Card",
  "required": [
    "cardCVV",
    "cardExpiry",
    "cardHolderName",
    "cardNumber"
  ],
  "properties": {
    "cardCVV": {
      "type": "string",
      "example": "100",
      "description": "The card CVV (3-4 digits on back of credit card)."
    },
    "cardExpiry": {
      "type": "string",
      "example": "1257",
      "description": "The card expiry date, in MMYY format (total of 4 digits without spaces or slashes)."
    },
    "cardNumber": {
      "type": "string",
      "example": "5454545454545454",
      "description": "The full card number (13 to 16 digits) from merchant to process \"purchase\", \"pre-auth\", and \"verify\" transactions."
    }
  }
}
object CardBatch
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "example": 2488717,
      "description": "Id of Card batch"
    },
    "closed": {
      "type": "boolean",
      "example": true,
      "description": "True if the batch is closed. Else false"
    },
    "netSales": {
      "type": "number",
      "example": 90,
      "description": "Approved sales net refunds and voids"
    },
    "countTotal": {
      "type": "number",
      "example": 8,
      "description": "Total number of transactions"
    },
    "dateClosed": {
      "type": "string",
      "example": "2022-11-30 14:14:53",
      "description": "Date Card Batch is closed"
    },
    "terminalId": {
      "type": "integer",
      "example": 1411,
      "description": "Id of associated Terminal"
    },
    "totalSales": {
      "type": "number",
      "example": 100,
      "description": "Gross sales"
    },
    "batchNumber": {
      "type": "integer",
      "example": 6,
      "description": "Batch Number"
    },
    "dateCreated": {
      "type": "string",
      "example": "2022-11-30 13:14:53",
      "description": "Date Card batch is Created"
    },
    "dateUpdated": {
      "type": "string",
      "example": "2022-11-30 13:14:53",
      "description": "Date Card batch is last updated"
    },
    "totalRefunds": {
      "type": "number",
      "example": 8.5,
      "description": "Gross refunds"
    },
    "countApproved": {
      "type": "number",
      "example": 8,
      "description": "Number of approved transactions"
    },
    "countDeclined": {
      "type": "number",
      "example": 0,
      "description": "Number of declined transactions"
    },
    "totalReversed": {
      "type": "number",
      "example": 5,
      "description": "Voided amount"
    },
    "totalRefundsReversed": {
      "type": "number",
      "example": 3.5,
      "description": "Amount of voided refunds"
    }
  }
}
array CardBatchGetAllResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/CardBatch"
  },
  "description": "Array of card batches"
}
object CardData
{
  "type": "object",
  "title": "CardData",
  "required": [
    "cardData"
  ],
  "properties": {
    "cardData": {
      "$ref": "#/components/schemas/CardData_cardData"
    }
  }
}
object CardData_cardData
{
  "oneOf": [
    {
      "$ref": "#/components/schemas/Card"
    },
    {
      "$ref": "#/components/schemas/CardToken"
    }
  ]
}
object CardResponse
{
  "type": "object",
  "title": "Card",
  "properties": {
    "id": {
      "type": "integer",
      "example": 161462,
      "description": "The id of the card."
    },
    "cardCVV": {
      "type": "string",
      "example": "100",
      "description": "The card CVV (3-4 digits on back of credit card)."
    },
    "cardF6L4": {
      "type": "string",
      "example": "5454545454",
      "description": "The first-six and last-four card numbers."
    },
    "cardToken": {
      "type": "string",
      "example": "907af81acc0224e0134949",
      "description": "The card token."
    },
    "cardExpiry": {
      "type": "string",
      "example": "1257",
      "description": "The card expiry date, in MMYY format (total of 4 digits without spaces or slashes)."
    },
    "dateCreated": {
      "type": "string",
      "example": "2025-01-30 13:35:36",
      "description": "The date when the card is created."
    },
    "dateUpdated": {
      "type": "string",
      "example": "2025-01-30 13:35:36",
      "description": "The date when the card last got updated."
    },
    "cardHolderName": {
      "type": "string",
      "example": "John Smith",
      "description": "The cardholder name."
    }
  }
}
object CardTerminal
{
  "type": "object",
  "title": "Terminal",
  "properties": {
    "id": {
      "type": "integer",
      "example": 123,
      "description": "Id of the terminal."
    },
    "status": {
      "type": "string",
      "example": "ACTIVE",
      "description": "Status of Terminal. possible values are ACTIVE | INACTIVE"
    },
    "address": {
      "$ref": "#/components/schemas/CardTerminal_address"
    },
    "currency": {
      "type": "string",
      "example": "CAD",
      "description": "Currency of terminal. possible values are CAD | USD"
    },
    "nickname": {
      "type": "string",
      "example": "Terminal 1",
      "description": "Nickname of terminal"
    }
  }
}
array CardTerminalGetAllResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/CardTerminal"
  }
}
object CardTerminal_address
{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "example": "Calgary"
    },
    "country": {
      "type": "string",
      "example": "CAN",
      "description": "Abbreviation of country"
    },
    "street1": {
      "type": "string",
      "example": "Street 1"
    },
    "street2": {
      "type": "string",
      "example": "Street 2"
    },
    "province": {
      "type": "string",
      "example": "AB",
      "description": "Abbreviation of province"
    },
    "postalCode": {
      "type": "string",
      "example": "H0H0H0",
      "description": "Postal or zip code"
    }
  }
}
object CardToken
{
  "type": "object",
  "title": "Card Token",
  "required": [
    "cardToken"
  ],
  "properties": {
    "cardToken": {
      "type": "string",
      "example": "HGKHJK5647698HGJJK",
      "description": "The token for the card on file. If Customer Code is filled, The card should must be owned by a passed customer code"
    }
  }
}
array CardTransactionCollectTransactionsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/SuccessfulPaymentResponse"
  },
  "description": "Array of card transactions"
}
object Card_1
{
  "type": "object",
  "title": "Card",
  "properties": {
    "cardF6L4": {
      "type": "string",
      "example": "5454545454",
      "description": "The F6L4 of card."
    },
    "cardToken": {
      "type": "string",
      "example": "a1b2c3d4e5f6",
      "description": "Card token"
    },
    "cardHolderName": {
      "type": "string",
      "example": "John Smith",
      "description": "The card holder name."
    }
  }
}
object Customer
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "example": 2488717,
      "description": "Id of Customer"
    },
    "cards": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Card_1"
      },
      "description": "Array of cards stored in the vault associated with this customer."
    },
    "cellPhone": {
      "type": "string",
      "example": "908-295-4902",
      "description": "Cell phone number of customer"
    },
    "contactName": {
      "type": "string",
      "example": "John Smith",
      "description": "Contact Name"
    },
    "businessName": {
      "type": "string",
      "example": "Best company",
      "description": "Name of the business"
    },
    "customerCode": {
      "type": "string",
      "example": "CST1200",
      "description": "Customer code of the customer"
    },
    "billingAddress": {
      "$ref": "#/components/schemas/Address"
    },
    "shippingAddress": {
      "$ref": "#/components/schemas/Address"
    }
  }
}
array CustomerGetBankAccountResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/BankAccountResponse"
  }
}
array CustomerGetBankAccountsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/BankAccountResponse"
  }
}
array CustomerGetCardDetailsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/CardResponse"
  }
}
array CustomerGetCardsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/CardResponse"
  }
}
array CustomerListResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Customer"
  }
}
object CustomerRequest
{
  "type": "object",
  "title": "Customer Request",
  "properties": {
    "cellPhone": {
      "type": "string",
      "example": "908-295-4902",
      "description": "The cell phone number of the customer."
    },
    "contactName": {
      "type": "string",
      "example": "John Smith",
      "description": "The primary contact name (full name) of the customer."
    },
    "businessName": {
      "type": "string",
      "example": "Best Company",
      "description": "The business name of the customer. There must be either a contact name or business name present."
    },
    "customerCode": {
      "type": "string",
      "example": "CST1000",
      "description": "The unique customer code. If blank, it will be automatically generated."
    },
    "billingAddress": {
      "$ref": "#/components/schemas/Address"
    },
    "shippingAddress": {
      "$ref": "#/components/schemas/Address"
    }
  }
}
array CustomerSetBankAccountDefaultResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/BankAccountResponse"
  }
}
object CustomerUpdateRequest
{
  "type": "object",
  "title": "Customer Update Request",
  "properties": {
    "cellPhone": {
      "type": "string",
      "example": "908-295-4902",
      "description": "The cell phone number of the customer."
    },
    "contactName": {
      "type": "string",
      "example": "John Smith",
      "description": "The primary contact name (full name) of the customer."
    },
    "businessName": {
      "type": "string",
      "example": "Best Company",
      "description": "The business name of the customer. There must be either a contact name or business name present."
    },
    "customerCode": {
      "type": "string",
      "example": "CST1000",
      "description": "The unique customer code."
    },
    "billingAddress": {
      "$ref": "#/components/schemas/Address"
    },
    "shippingAddress": {
      "$ref": "#/components/schemas/Address"
    }
  }
}
object Discount
{
  "type": "object",
  "title": "Discount Data",
  "required": [
    "amount",
    "details"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "example": 10.99,
      "description": "Total Discount Amount of the Invoice"
    },
    "details": {
      "type": "string",
      "example": "DISC100",
      "description": "Discount Details/Code"
    }
  }
}
object FailedPaymentResponse
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "An error occured"
      },
      "description": "List of errors"
    }
  }
}
object GeneralTestConnectivityToHelcimApi400Response
{
  "type": "object",
  "title": "Invalid Business ID",
  "example": {
    "errors": "invalid businessId"
  }
}
object GeneralTestConnectivityToHelcimApi401Response
{
  "type": "object",
  "title": "No credentials included",
  "description": "No API token was included in the request"
}
object GeneralTestConnectivityToHelcimApi403Response
{
  "type": "object",
  "title": "Forbidden",
  "description": "Invalid API token was included in the request"
}
object GeneralTestConnectivityToHelcimApiResponse
{
  "type": "object",
  "title": "Successful Connection Test",
  "example": {
    "message": "Connection Successful"
  }
}
object HelcimPayInitializeRequest
{
  "type": "object",
  "title": "Helcim Pay Initialize",
  "required": [
    "amount",
    "currency",
    "paymentType"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "example": 100,
      "description": "The amount of the transaction to be processed"
    },
    "currency": {
      "type": "string",
      "example": "CAD",
      "description": "Currency abbreviation. CAD | USD"
    },
    "taxAmount": {
      "type": "number",
      "example": 3.67,
      "description": "This is used to enable level 2 processing lower rates. The value should be the dollar amount of the tax to 2 decimal places."
    },
    "paymentType": {
      "type": "string",
      "example": "purchase",
      "description": "Payment Type. Valid payment types are purchase | preauth | verify"
    },
    "allowPartial": {
      "type": "number",
      "example": 1,
      "description": "This is used to determine whether the partial payment UI will be displayed to the customer"
    },
    "customerCode": {
      "type": "string",
      "example": "CST1000",
      "description": "This is the code of an existing customer in Helcim associated with this checkout"
    },
    "invoiceNumber": {
      "type": "string",
      "example": "INV1000",
      "description": "This is the number of an existing invoice in Helcim associated with this checkout"
    },
    "paymentMethod": {
      "type": "string",
      "example": "cc-ach",
      "description": "This is the payment method (credit card, ACH) that customer can use to pay the amount. cc | ach | cc-ach"
    },
    "hasConvenienceFee": {
      "type": "number",
      "example": 1,
      "description": "This is used to apply the convenience fee rate to credit card transaction should customer chooses this payment method"
    }
  }
}
object Invoice
{
  "type": "object",
  "title": "Invoice",
  "properties": {
    "amount": {
      "type": "number",
      "example": 100.99,
      "description": "The total amount of the invoice."
    },
    "status": {
      "type": "string",
      "example": "due",
      "description": "The status of the invoice, such as due | paid | completed | refunded."
    },
    "datePaid": {
      "type": "string",
      "example": "2020-01-01 00:30:50",
      "description": "Date the invoice is paid."
    },
    "customerId": {
      "type": "integer",
      "example": 234,
      "description": "The id of customer associated to the invoice."
    },
    "dateIssued": {
      "type": "string",
      "example": "2020-01-01 00:30:50",
      "description": "Date the invoice is paid."
    },
    "dateCreated": {
      "type": "string",
      "example": "2020-01-01 00:30:50",
      "description": "Date the invoice is created."
    },
    "dateUpdated": {
      "type": "string",
      "example": "2020-01-01 20:30:50",
      "description": "Date the invoice is updated."
    },
    "convenienceFee": {
      "type": "number",
      "example": 100,
      "description": "The total convenience fee paid for the invoice."
    }
  }
}
object InvoiceBase
{
  "type": "object",
  "title": "Invoice Base",
  "properties": {
    "notes": {
      "type": "string",
      "example": "No vegetables please",
      "description": "Comment to appear at the bottom of the invoice, visible to the customer."
    },
    "tipAmount": {
      "type": "number",
      "example": 0.99,
      "description": "Tip amount"
    },
    "depositAmount": {
      "type": "number",
      "example": 1,
      "description": "Deposit amount"
    },
    "invoiceNumber": {
      "type": "string",
      "example": "",
      "description": "Invoice number of invoice to be created. Will be generated if blank"
    }
  }
}
object InvoiceCreate
{
  "type": "object",
  "title": "Invoice Create",
  "properties": {
    "type": {
      "type": "string",
      "example": "INVOICE",
      "description": "The type of the invoice, such as ESTIMATE | INVOICE | QUOTE | ORDER | PURCHASE_ORDER | STATEMENT | REGISTRATION | CREDIT."
    },
    "status": {
      "type": "string",
      "example": "DUE",
      "description": "The status of invoice, such as DUE | SHIPPED | COMPLETED | CANCELLED"
    },
    "currency": {
      "type": "string",
      "example": "CAD",
      "description": "The currency abbreviation of the invoice, such as CAD or USD. This should match currency of existing invoice."
    },
    "customerId": {
      "type": "integer",
      "example": 123123,
      "description": "Unique customer Id."
    },
    "billingAddress": {
      "$ref": "#/components/schemas/Address"
    }
  }
}
object InvoiceCreateAfterProcessing
{
  "type": "object",
  "title": "Invoice Create after transaction processing",
  "properties": {
    "tax": {
      "$ref": "#/components/schemas/Tax"
    },
    "pickup": {
      "$ref": "#/components/schemas/Pickup"
    },
    "discount": {
      "$ref": "#/components/schemas/Discount"
    },
    "shipping": {
      "$ref": "#/components/schemas/Shipping"
    },
    "lineItems": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/LineItem"
      },
      "maxLength": 10
    }
  }
}
array InvoiceListResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/get_invoices_200_response_inner"
  }
}
object InvoiceResponseBase
{
  "type": "object",
  "title": "Invoice Base",
  "properties": {
    "notes": {
      "type": "string",
      "example": "No vegetables please",
      "description": "Comment to appear at the bottom of the invoice, visible to the customer."
    },
    "invoiceId": {
      "type": "number",
      "example": 12321,
      "description": "Unique Invoice Id"
    },
    "tipAmount": {
      "type": "number",
      "example": 0.99,
      "description": "Tip amount"
    },
    "depositAmount": {
      "type": "number",
      "example": 1,
      "description": "Deposit amount"
    },
    "invoiceNumber": {
      "type": "string",
      "example": "INV1000",
      "description": "Invoice number of invoice to be created. Will be generated if blank"
    }
  }
}
object InvoiceUpdate
{
  "type": "object",
  "title": "Invoice Create",
  "properties": {
    "type": {
      "type": "string",
      "example": "INVOICE",
      "description": "The type of the invoice, such as ESTIMATE | INVOICE | QUOTE | ORDER | PURCHASE_ORDER | STATEMENT | REGISTRATION | CREDIT."
    },
    "status": {
      "type": "string",
      "example": "DUE",
      "description": "The status of invoice, such as DUE | SHIPPED | COMPLETED | CANCELLED"
    },
    "currency": {
      "type": "string",
      "example": "CAD",
      "description": "The currency abbreviation of the invoice, such as CAD or USD. This should match currency of existing invoice."
    },
    "billingAddress": {
      "$ref": "#/components/schemas/Address"
    }
  }
}
object LineItem
{
  "type": "object",
  "title": "Line Item Data",
  "required": [
    "description",
    "price",
    "quantity",
    "total"
  ],
  "properties": {
    "sku": {
      "type": "string",
      "example": "ITM1434"
    },
    "price": {
      "type": "number",
      "example": 10.55
    },
    "total": {
      "type": "number",
      "example": 110.78,
      "description": "Total = Price * Quantity"
    },
    "quantity": {
      "type": "number",
      "example": 10.5,
      "description": "The quantity of the line item. Can have upto 2 decimal places"
    },
    "taxAmount": {
      "type": "number",
      "example": 0,
      "description": "This will be added to Invoice's total tax amount"
    },
    "description": {
      "type": "string",
      "example": "Red Hat"
    },
    "discountAmount": {
      "type": "number",
      "example": 0,
      "description": "This will be added to Invoice's total discount amount"
    }
  }
}
object PaymentRequest
{
  "type": "object",
  "title": "PaymenRequest",
  "required": [
    "amount",
    "cardData",
    "currency",
    "ipAddress"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "example": 100.99,
      "description": "Amount to be processed"
    },
    "invoice": {
      "$ref": "#/components/schemas/PaymentRequest_invoice"
    },
    "currency": {
      "type": "string",
      "example": "CAD",
      "description": "The currency abbreviation of the invoice, such as CAD or USD. This should match currency of existing invoice."
    },
    "ecommerce": {
      "type": "boolean",
      "example": true,
      "description": "Set to indicate that the transaction is e-commerce. When set, the Helcim Fraud Defender will provide further analysis."
    },
    "ipAddress": {
      "type": "string",
      "example": "192.168.1.1",
      "description": "IP address of the customer making the transaction, used as part of fraud detection."
    },
    "terminalId": {
      "type": "integer",
      "example": 3215,
      "description": "For card transactions only. Id of the terminal you would want to use. Default terminal for of the currency will be used if you dont send this."
    },
    "customerCode": {
      "type": "string",
      "example": "",
      "description": "Existing customer code associated with the transaction"
    },
    "invoiceNumber": {
      "type": "string",
      "example": "",
      "description": "To be filled when associating transaction to existing invoice. Invoice should be associated to the same customer linked to the card"
    },
    "billingAddress": {
      "$ref": "#/components/schemas/Address"
    }
  }
}
object PaymentRequest_invoice
{
  "allOf": [
    {
      "$ref": "#/components/schemas/InvoiceBase"
    },
    {
      "$ref": "#/components/schemas/InvoiceCreateAfterProcessing"
    }
  ],
  "description": "To be filled when creating new invoice to be associated to transaction. Will be linked to Customer owning the Card used"
}
object PaymentReverseTransactionResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
object PaymentReverseTransactiondefaultResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
object Pickup
{
  "type": "object",
  "title": "Pickup Data",
  "required": [
    "date"
  ],
  "properties": {
    "date": {
      "type": "string",
      "example": "2022-01-25 13:55:55",
      "description": "Pickup Date"
    },
    "name": {
      "type": "string",
      "example": "Jane Smith",
      "description": "Name of the person to pickup"
    }
  }
}
object Refund_Request
{
  "type": "object",
  "title": "Refund Request",
  "required": [
    "amount",
    "ipAddress",
    "originalTransactionId"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "example": 100.99,
      "description": "The amount to refund. Must be less or equal to the original purchase/capture amount."
    },
    "ecommerce": {
      "type": "boolean",
      "example": true,
      "description": "Set to indicate that the transaction is e-commerce. When set, the Helcim Fraud Defender will provide further analysis."
    },
    "ipAddress": {
      "type": "string",
      "example": "192.168.1.1",
      "description": "IP address of the customer making the transaction, used as part of fraud detection."
    },
    "originalTransactionId": {
      "type": "integer",
      "example": 198763,
      "description": "The transaction ID of the purchase/capture transaction."
    }
  }
}
object Refund_Request_1
{
  "type": "object",
  "title": "Refund Request",
  "required": [
    "cardTransactionId",
    "ipAddress"
  ],
  "properties": {
    "ecommerce": {
      "type": "boolean",
      "example": true,
      "description": "Set to indicate that the transaction is e-commerce. When set, the Helcim Fraud Defender will provide further analysis."
    },
    "ipAddress": {
      "type": "string",
      "example": "192.168.1.1",
      "description": "IP address of the customer making the transaction, used as part of fraud detection."
    },
    "cardTransactionId": {
      "type": "integer",
      "example": 198763,
      "description": "The transaction ID of the original transaction."
    }
  }
}
object Shipping
{
  "type": "object",
  "title": "Shipping Data",
  "required": [
    "address",
    "amount",
    "details"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "example": 10.99,
      "description": "Total Shipping Amount of the Invoice"
    },
    "address": {
      "$ref": "#/components/schemas/Address"
    },
    "details": {
      "type": "string",
      "example": "Canada Post 1 day shipping",
      "description": "This will show up in the invoice"
    }
  }
}
object SuccessfulAchTransactionResponse
{
  "type": "object",
  "title": "Ach Transaction Response",
  "properties": {
    "type": {
      "type": "string",
      "example": "WITHDRAWAL",
      "description": "The type of the transaction. possible values are WITHDRAWAL | DEPOSIT | SETTLE | REVERSE | REFUND"
    },
    "amount": {
      "type": "number",
      "example": 11.99,
      "description": "The amount of processed transaction"
    },
    "batchId": {
      "type": "number",
      "example": 11,
      "description": "The id of associated card batch"
    },
    "currency": {
      "type": "string",
      "example": "CAD",
      "description": "The abbreviation of the transaction's currency"
    },
    "bankToken": {
      "type": "string",
      "example": "-A1B2C3D4E5F6G7*",
      "description": "Bank Token associated with bankAccount"
    },
    "statusAuth": {
      "type": "string",
      "example": "APPROVED",
      "description": "The status of the transaction. possible values are APPROVED | DECLINED | IN_PROGRESS | CANCELLED | PENDING"
    },
    "dateCreated": {
      "type": "string",
      "example": "2020-01-01 00:00:00",
      "description": "The date(Mountain Time) when the transaction is created."
    },
    "approvalCode": {
      "type": "string",
      "example": "HCMAPPRV",
      "description": "Approval Code"
    },
    "invoiceNumber": {
      "type": "string",
      "example": "INV2022",
      "description": "Invoice number associated to the transaction"
    },
    "transactionId": {
      "type": "number",
      "example": 10,
      "description": "The transaction id"
    },
    "statusClearing": {
      "type": "string",
      "example": "OPENED",
      "description": "The status of the transaction. possible values are OPENED | CLEARED | REJECTED | CONTESTED | RETURNED"
    },
    "bankAccountNumber": {
      "type": "string",
      "example": "A1B2C3D4E5F6G7",
      "description": "Bank account number"
    }
  }
}
object SuccessfulPaymentResponse
{
  "type": "object",
  "title": "Payment Response",
  "properties": {
    "type": {
      "type": "string",
      "example": "purchase",
      "description": "The type of the transaction. possible values are purchase | preauth | verify"
    },
    "user": {
      "type": "string",
      "example": "Helcim System",
      "description": "Full name of the user who processed the transaction. Default value is Helcim System"
    },
    "amount": {
      "type": "number",
      "example": 11.99,
      "description": "The amount of processed transaction"
    },
    "status": {
      "type": "string",
      "example": "APPROVED",
      "description": "The status of the transaction. possible values are APPROVED | DECLINED"
    },
    "warning": {
      "type": "string",
      "example": "Failed to link customer to invoice",
      "description": "Warnings"
    },
    "currency": {
      "type": "string",
      "example": "CAD",
      "description": "The abbreviation of the transaction's currency"
    },
    "cardToken": {
      "type": "string",
      "example": "5454HCMXTEST5454",
      "description": "Card token associated to the transaction"
    },
    "cardNumber": {
      "type": "string",
      "example": "5454545454",
      "description": "First-6 Last-4 numbers of the card number associated to the transaction"
    },
    "avsResponse": {
      "type": "string",
      "example": "M",
      "description": "AVS Response"
    },
    "cardBatchId": {
      "type": "number",
      "example": 11,
      "description": "The id of associated card batch"
    },
    "cvvResponse": {
      "type": "string",
      "example": "Y",
      "description": "CVV Response"
    },
    "dateCreated": {
      "type": "string",
      "example": "2020-01-01 00:00:00",
      "description": "The date(Mountain Time) when the transaction is created."
    },
    "approvalCode": {
      "type": "string",
      "example": "HCMAPPRV",
      "description": "Approval Code"
    },
    "customerCode": {
      "type": "string",
      "example": "CST1010",
      "description": "Customer code associated to the transaction"
    },
    "invoiceNumber": {
      "type": "string",
      "example": "INV2022",
      "description": "Invoice number associated to the transaction"
    },
    "transactionId": {
      "type": "number",
      "example": 10,
      "description": "The transaction id"
    },
    "cardHolderName": {
      "type": "string",
      "example": "John Smith",
      "description": "Cardholdername associated to the transaction"
    }
  }
}
object Tax
{
  "type": "object",
  "title": "Tax Data",
  "required": [
    "amount",
    "details"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "example": 5.99,
      "description": "Total Tax Amount of the Invoice"
    },
    "details": {
      "type": "string",
      "example": "GST 5%",
      "description": "Tax Details"
    }
  }
}
object VerifyRequest
{
  "type": "object",
  "title": "Verify Request",
  "required": [
    "amount",
    "billingAddress",
    "cardData",
    "currency",
    "ipAddress"
  ],
  "properties": {
    "invoice": {
      "$ref": "#/components/schemas/VerifyRequest_invoice"
    },
    "cardData": {
      "$ref": "#/components/schemas/Card"
    },
    "currency": {
      "type": "string",
      "example": "CAD",
      "description": "The currency abbreviation of the transaction."
    },
    "ecommerce": {
      "type": "boolean",
      "example": true,
      "description": "Set to indicate that the transaction is e-commerce. When set, the Helcim Fraud Defender will provide further analysis."
    },
    "ipAddress": {
      "type": "string",
      "example": "192.168.1.1",
      "description": "IP address of the customer making the transaction, used as part of fraud detection."
    },
    "customerCode": {
      "type": "string",
      "example": "",
      "description": "Existing customer code associated with the transaction"
    },
    "invoiceNumber": {
      "type": "string",
      "example": "",
      "description": "To be filled when associating transaction to existing invoice. Invoice should be associated to the same customer linked to the card"
    },
    "billingAddress": {
      "$ref": "#/components/schemas/Address"
    }
  }
}
object VerifyRequest_invoice
{
  "allOf": [
    {
      "$ref": "#/components/schemas/InvoiceBase"
    },
    {
      "$ref": "#/components/schemas/InvoiceCreateAfterProcessing"
    }
  ]
}
object card_terminals_request
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "example": "ACTIVE",
      "description": "The card terminal's status. possible values are ACTIVE | INACTIVE"
    },
    "currency": {
      "type": "string",
      "example": "CAD",
      "description": "The abbreviation of card terminal's currency. Possible values are CAD | USD"
    }
  }
}
object checkout_init_200_response
{
  "type": "object",
  "properties": {
    "secretToken": {
      "type": "string",
      "description": "The secret token is used to validate the transaction response"
    },
    "checkoutToken": {
      "type": "string",
      "description": "The checkout token is used to initialize Helcim Pay"
    }
  }
}
object checkout_init_default_response
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of errors"
    }
  }
}
object create_invoice_200_response
{
  "allOf": [
    {
      "type": "object"
    },
    {
      "$ref": "#/components/schemas/InvoiceResponseBase"
    },
    {
      "$ref": "#/components/schemas/InvoiceCreate"
    },
    {
      "$ref": "#/components/schemas/InvoiceCreateAfterProcessing"
    },
    {
      "$ref": "#/components/schemas/Invoice"
    }
  ]
}
object create_invoice_request
{
  "allOf": [
    {
      "$ref": "#/components/schemas/InvoiceBase"
    },
    {
      "$ref": "#/components/schemas/InvoiceCreate"
    },
    {
      "$ref": "#/components/schemas/InvoiceCreateAfterProcessing"
    }
  ]
}
object get_invoice_200_response
{
  "allOf": [
    {
      "$ref": "#/components/schemas/InvoiceResponseBase"
    },
    {
      "$ref": "#/components/schemas/InvoiceCreate"
    },
    {
      "$ref": "#/components/schemas/InvoiceCreateAfterProcessing"
    },
    {
      "$ref": "#/components/schemas/Invoice"
    }
  ]
}
object get_invoices_200_response_inner
{
  "allOf": [
    {
      "$ref": "#/components/schemas/InvoiceResponseBase"
    },
    {
      "$ref": "#/components/schemas/Invoice"
    }
  ]
}
object purchase_request
{
  "allOf": [
    {
      "$ref": "#/components/schemas/PaymentRequest"
    },
    {
      "$ref": "#/components/schemas/CardData"
    }
  ]
}
object update_invoice_request
{
  "allOf": [
    {
      "$ref": "#/components/schemas/InvoiceBase"
    },
    {
      "$ref": "#/components/schemas/InvoiceUpdate"
    }
  ]
}
object withdraw_request
{
  "allOf": [
    {
      "$ref": "#/components/schemas/PaymentRequest"
    },
    {
      "$ref": "#/components/schemas/BankData"
    }
  ]
}