HubSpot + Moneris integration
Moneris processes card payments and runs subscriptions for Canadian merchants. What a HubSpot sync can read from its REST API, and which card data stays put.
Connects by APIScope this integration Book a scoping call Estimate the cost
- Into HubSpot
Is there an official Moneris + HubSpot integration?
No. Moneris appears nowhere in the HubSpot App Marketplace as of September 2026, and HubSpot's own payment tools process on Stripe. We recommend a custom API integration on the Moneris API: an hourly read of new payments, subscription callbacks and a nightly re-read of open records, at 70 to 150 build hours. The card number, its last four digits and the expiry stay with Moneris.
- Recommended route
- Custom API integration
- Build effort
- 70 to 150 hours
- In the HubSpot App Marketplace?
- No listed app
- Typical elapsed time
- 4 to 8 weeks
Marketplace checked September 2026.
Why teams connect Moneris to HubSpot
Moneris is the processor behind a large share of Canadian card payments: by its own count one in three transactions in the country, at more than 325,000 points of commerce. For a Moneris merchant selling online, the charge, the stored card and the subscription schedule all live inside Moneris. The sales and service teams working in HubSpot see none of it, so a failed renewal or a card payment that clears never reaches the person who owns the customer.
The books can already see it: Moneris announced its own QuickBooks connector in May 2026 to copy transaction data into QuickBooks, and nothing equivalent reaches the CRM. HubSpot’s own payment tools do not close the gap for a Moneris merchant either. HubSpot payments is open to businesses in Canada, the US and the UK, and it uses Stripe infrastructure; the other option HubSpot offers is connecting a Stripe account. Either one means moving processing to Stripe rather than connecting the processor the business already has.
One rule shapes every design here: card data stays with Moneris. HubSpot’s Product and Services Catalog keeps full card numbers and card security codes out of its Sensitive Data feature altogether, and admits the last four digits only as Sensitive Data, an Enterprise feature. The Moneris API returns a card’s first six to eight digits, its last four and its expiry with each payment, so the sync discards them and carries ids, amounts, dates, statuses and the card brand.
What syncs
Five rows, every one flowing into HubSpot. Moneris customers become contacts. Each payment becomes a HubSpot payment, the object HubSpot’s Payments API offers for revenue collected elsewhere, which cannot charge a card itself. Its statuses have no value for a cancelled or held authorization, so Moneris’s own status, from AUTHORIZED to CANCELED, sits in a custom property beside HubSpot’s. Refunds are separate Moneris records that update the payment they reverse. Subscriptions take a custom object on Enterprise and deal properties below it, and every decline or pause raises a task.
Each row matches on its Moneris id, held in a custom HubSpot property. The order id looks like the obvious home for a HubSpot deal id, but Moneris lets no two purchases or pre-authorizations share one, so a deal paid in two instalments cannot use its id for both. The deal id goes in customData instead, which takes up to ten values of 50 characters and comes back on every payment read. Email is no key either: Create Customer requires only an idempotency key, so a Moneris customer may have no email at all.
| | | Direction | Match key | Notes |
|---|---|---|---|---|
| Customer | Contact | Into HubSpot | Moneris customer id in a custom HubSpot property | A customer with a company name also attaches to that HubSpot company. |
| Payment | Payment | Into HubSpot | Moneris payment id in a custom payment property, with the deal id carried in customData | Amounts arrive in cents and are converted once, and Moneris's own status rides in a custom property. |
| Refund | Payment | Into HubSpot | Refund id, applied to the payment that holds its Moneris payment id | It marks that payment refunded or partially refunded, and an independent refund with no payment raises a task. |
| Subscription | Custom object | Into HubSpot | Moneris subscription id | Below Enterprise, which custom objects need, the status and next billing date sit on the deal instead. |
| Declined or paused subscription | Engagement | Into HubSpot | Subscription id and status, one task per change | Moneris sends no callback for a decline, so the nightly re-read raises the task for the record's owner. |
Architecture
Moneris documents three online payment interfaces, and the build reads through the newest. The classic Gateway API, keyed on a store ID and API token, now sits on Moneris’s Legacy Portal, and its calls process transactions and report on the open batch, with none that lists past ones. Moneris Checkout, the hosted form, takes JSON naming an action at one endpoint and reports each result through browser callbacks and a receipt request. The Moneris API is RESTful JSON behind OAuth 2.0 client credentials, with list and read calls for payments, refunds, customers and subscriptions.
The service holds read scopes only, so it cannot charge or refund, and it sends the merchant’s 13-character id and a pinned Api-Version header on every call. Each hour it lists payments and refunds created since its watermark, in windows of at most a day and pages of 20 behind a cursor. Every write is keyed on a Moneris id, so replaying a window rewrites the same records. Lists filter on creation alone, so each night it re-reads, by id, every payment still authorized or processing and every live subscription. Subscription callbacks prompt the same re-read, and every write passes a field allowlist.
What the API allows
- API style
- REST
- Authentication
- OAuth 2.0
- Webhooks
- Partial
- Changed-since filter
- Partial
- Sandbox
- Yes
- Rate limit
- Not documented
Developer documentation developer.moneris.com
Three ways to connect
What decides the route here is where checkout runs today. A store taking cards through the Moneris API, with Hosted Tokenization keeping the card number inside Moneris’s frame, gives a sync everything it needs. A store on Moneris Checkout, or on one of the cart plug-ins Moneris features beside it, may not: Moneris does not say whether those payments appear in the new API’s lists, so discovery tests that on the merchant’s own account. Where they do not, the receipt request the checkout’s server already makes can hand each result to the sync as well.
A custom API integration covers both cases. Moneris’s partner directory lists no iPaaS connector, so middleware on an iPaaS would call the REST API through generic HTTP steps and rebuild the token handling, the day-long windows and the card-field allowlist in each flow. HubSpot’s own payment tools process on Stripe, so choosing them means leaving Moneris.
-
Custom API integration
RecommendedAn hourly read of new payments and refunds, a nightly re-read of open records and the subscription callbacks, all keyed on Moneris ids, is the one route that sees every charge. Its allowlist keeps the card brand and drops the card digits the API returns.
-
iPaaS
AvoidMoneris's partner directory lists no iPaaS connector, so middleware there would call the REST API through generic HTTP steps and rebuild the token handling, the day-long windows and the card-field allowlist in each flow.
-
Marketplace app
AvoidNothing in the HubSpot App Marketplace carries the Moneris name, and HubSpot payments and a connected Stripe account both process on Stripe, so either one means leaving Moneris rather than connecting it.
What breaks and how we prevent it
Card digits in every read
Every payment, refund and subscription the Moneris API returns carries the card’s first six to eight digits, its last four and its expiry, and so does the payment inside a callback. Together they can leave as few as four digits of a 16-digit number unknown. The allowlist keeps the card brand alone, and a check on each write rejects anything shaped like card digits.
Declined renewals send nothing
Moneris calls back after a successful subscription payment only, and RECURRING_PAYMENT_CONFIRMED is its one documented event type, so a declined renewal arrives in silence. The subscription’s status, whose values include DECLINED and DECLINED_RETRY, is where it shows: the nightly re-read checks it and tasks the owner. A subscription created without a callbackUrl gets one through Update Subscription.
A callback with no signature
Moneris documents no signature and no retry schedule for the callback, so a post can be forged or lost. The receiver keeps the event id, reads the payment with its own token and writes only what the API returns, and the hourly read picks up any charge whose callback never came.
Cents written as dollars
Moneris sends amounts as integers in cents, so 10.59 arrives as 1059, and HubSpot’s payment amount takes the decimal. Copied straight across, every payment lands a hundred times too large. The mapper converts once, beside the currency, and the sandbox’s penny values give known amounts to test against.
Day-long windows on every list
The payment, refund and subscription lists take a created_from and a created_to no more than a day apart and return 20 records a page at most, so a year of history is 365 windows read through the cursor. Moneris publishes no rate limit, only X-RateLimit and Retry-After headers on a 429 answer, and the backfill paces itself by them.
Our approach
- Scope. We find where checkout runs today, check on the merchant’s own account whether its payments reach the API’s lists, and agree which declines and pauses each owner hears about.
- Architect. We fix the field allowlist, the Moneris ids as keys, customData as the carrier of the deal id, and whether subscriptions get a custom object or deal properties.
- Build. The reader, the callback receiver and the consumer are written against the sandbox at api.sb.moneris.io with read-only scopes, and a portal allowlist refuses any HubSpot portal not on it.
- Validate. We push approvals and declines through the Penny Value Simulator, where the cents decide the response, compare each day’s counts with the API’s lists, and scan every written property for card-shaped values.
- Operate. Production credentials need a developer portal account on the merchant’s own Moneris email, and sandbox applications do not carry over, so the merchant’s admin creates them at cutover. We rotate through the second client secret Moneris allows and alert on any Sunset header.
Common questions
Is there a Moneris app in the HubSpot App Marketplace?
No. A marketplace search for Moneris returned no result of any kind in September 2026. Moneris's own partner directory lists point-of-sale, booking, loyalty and accounting partners, its own QuickBooks connector among them, and no HubSpot integration. Connecting the two starts with scoping a build: which checkout the store runs, and which Moneris records the people in HubSpot need to see.
Can HubSpot payments charge cards through Moneris?
No. HubSpot's knowledge base says HubSpot payments, open to businesses located in Canada, the US and the UK, uses Stripe infrastructure to process payments, and the other processing option it describes is a connected Stripe account. Neither routes a charge through Moneris, so a business staying with Moneris keeps checkout and subscriptions there and syncs the results into HubSpot's payment records.
Which Moneris API should a new HubSpot integration use?
The Moneris API, the RESTful generation at api.moneris.io that Moneris's developer portal leads with. It authenticates with OAuth 2.0 client credentials and can list and read payments, refunds, customers and subscriptions. The classic Gateway API now sits on Moneris's Legacy Portal with no call that lists past transactions, and Moneris Checkout reports each result through browser callbacks and a receipt request.
How quickly does a Moneris payment reach HubSpot?
A subscription charge arrives when its callback does, once the sync has re-read it. Other payments and refunds land with the hourly read of records created since the last run. Changes to records that already exist, such as a completed pre-authorization, a cancellation or a paused subscription, arrive with the nightly re-read, because Moneris's lists filter on creation time only.
What happens when a Moneris subscription callback is lost or sent twice?
A duplicate changes nothing. Each callback carries an event id, which Moneris says can be used to detect duplicates, and every record is upserted on its Moneris id. A lost callback is not fatal either: Moneris documents no retry schedule, so the hourly read of payments created in that window picks up the charge, and the nightly pass settles subscription statuses.
Can Moneris card details be stored in HubSpot?
Only the card brand. HubSpot's Product and Services Catalog excludes full card numbers and card security codes from Sensitive Data, and admits the last four digits only as Sensitive Data, an Enterprise feature. The Moneris API returns the first six to eight digits, the last four and the expiry with each payment, and the sync drops all of them before anything is written.
Who owns Moneris?
Moneris describes itself as a joint venture created by RBC and BMO. In August 2026 Francisco Partners agreed to buy it from the two banks, subject to approvals under Canada's Retail Payment Activities Act and Competition Act, with closing expected by the end of the first quarter of the banks' 2027 fiscal year. Moneris says its head office and technology infrastructure stay fully resident in Canada.
How many hours does a Moneris and HubSpot integration take?
Plan on 10 to 20 hours of discovery and 70 to 150 hours of build for customers, payments, refunds, subscriptions and decline tasks, with the hourly read, the callback receiver, the nightly re-read and a sandbox rehearsal. Discovery spends most of its hours on two questions: which checkout the store runs, and whether its payments appear in the Moneris API's lists.
Also in Payments and billing
Related reading
Partnerships and accreditations
HubSpot accreditations
Industry specializations
Partnerships
Trust and compliance
We design integrations to support the security and privacy rules your business works under, and we build them on independently audited platforms.
-
SOC 2
We build to support SOC 2 security controls, on platforms that hold SOC 2 reports of their own.
-
ISO/IEC 27001:2022
We build to support your information security program under ISO/IEC 27001:2022.
-
HIPAA
We scope BAA needs in discovery, then design builds around them for covered entities and their business associates.
-
GDPR
We scope data-processing needs in discovery and design builds to support your GDPR duties.
About the GDPR at the European Commission (opens in a new tab)
-
PIPEDA
We design builds to support your accountability for personal information as it moves between systems.
-
CASL
We can build consent capture and sync that support your CASL consent records.
Our builds run on
How we build
- Sandbox first. We build and test in a sandbox before anything reaches production.
- Fail-closed allowlists. An integration runs only against the HubSpot accounts it is approved for.
- Least-privilege access. Each integration gets only the API scopes it needs.
- Secrets in a vault. Keys and tokens live in a secrets vault, never in plain text.
- Sensitive data scoped early. Discovery covers sensitive data, access controls and any BAA or data-processing needs.
- A compliance package for regulated industries: audit logging, field-level encryption and sensitive-data handling.
Scope a Moneris integration
Send the systems, the direction and the record volume. We reply with a scope and an effort band within one business day.
Thanks, we will reply within one business day
Prash or Sean reads every one of these and comes back with a scope, or with the one question we need answered first.
Sources
- Moneris Developer Hub developer.moneris.com
- Introduction developer.moneris.com
- Getting Started developer.moneris.com
- Authentication & API Keys developer.moneris.com
- Recurring Billing developer.moneris.com
- Response Handling developer.moneris.com
- Penny Value Simulator developer.moneris.com
- Purchase with Payment Token developer.moneris.com
- List Payments developer.moneris.com
- Retrieve Payment developer.moneris.com
- Create Payment developer.moneris.com
- List Refunds developer.moneris.com
- Create Subscription developer.moneris.com
- Update Subscription developer.moneris.com
- Create Customer developer.moneris.com
- Setup Guide developer.moneris.com
- Open Totals | Moneris Developers legacy-developer.moneris.com
- Moneris API and Moneris Developer Portal | Moneris moneris.com
- About Us | Canadian Payment Processor | Moneris moneris.com
- Moneris announces acquisition by Francisco Partners moneris.com
- Moneris announces integration solution with Intuit QuickBooks | Moneris Media Room moneris.com
- Moneris Partner Integrations | Moneris moneris.com
- HubSpot Product & Services Catalog legal.hubspot.com
- Set up HubSpot payments knowledge.hubspot.com
- Connect Stripe as a payment processor in HubSpot knowledge.hubspot.com
- Payments API - HubSpot docs developers.hubspot.com
- Create and edit custom objects knowledge.hubspot.com