Payments
Connect Square
Take card payments on quotes through your own Square account.
Overview
Square + TackQuote
TackQuote's Square integration creates a Square hosted payment link for a quote and sends the buyer to Square's own checkout page, so card details never touch TackQuote. Buyer checkout tries connected gateways in a fixed order and Square sits third — below Stripe and Authorize.net, above Adyen — so a quote only reaches Square when neither of those is connected. The quote is carried in a marker Square copies onto the resulting payment and echoes in its webhook, which is what ties the money back to the right quote. Settlement is signature-verified before it is believed: Square signs the notification URL together with the raw body, and the paid amount and currency are compared against the stored quote total before the quote is marked paid.
Connect a Square access token and location, register the per-tenant webhook URL TackQuote shows you, and quotes start routing to Square.
Before you start
What you'll need
- Square account with a location that can take card payments
- Square application access token (Developer Dashboard → Credentials)
- The Location ID payment links should be created against
- A webhook subscribed to payment.updated, and its signature key
Setup
How to connect Square
Create a Square application
In the Square Developer Dashboard open your application → Credentials and copy the access token. Sandbox and production tokens are separate.Find your Location ID
Payment links are created against one Square location. Copy the ID of the location the quote payments should belong to.Add a webhook subscription
Subscribe a webhook to payment.updated pointing at the per-tenant URL shown in TackQuote Settings → Payments, and copy its signature key. Square signs the URL as well as the body, so it must match character for character.Connect and go live
Enter the access token, Location ID and signature key in Settings → Payments → Square, and pick sandbox or production. A quote routes to Square only when neither Stripe nor Authorize.net is connected.
Capabilities
What you get
Hosted Payment Link
Each quote gets its own Square-hosted checkout page created against the location you choose, so card details never reach TackQuote.
Signed Webhooks
Square signs the registered notification URL together with the raw request body. TackQuote recomputes that signature with your own signature key and rejects anything that does not match.
Amount and Currency Check
A quote is marked paid only when Square reports the payment COMPLETED and the amount and currency equal the stored quote total. An authorised-but-not-captured payment settles nothing.
Your Other Square Sales Are Left Alone
Square notifies on every payment your account takes, including in-person POS sales. Only payments carrying the TackQuote quote marker are acted on; the rest are acknowledged and ignored.
FAQ
Square questions
Will my in-person Square sales affect TackQuote quotes?
No. Square sends payment.updated for every payment your account takes, including POS sales that have nothing to do with a quote. TackQuote settles only payments carrying its own quote marker and acknowledges the rest without acting on them, so an unrelated sale can never mark a quote paid.
Can TackQuote refund a Square payment?
No. Refunds are not implemented for Square — issue them from the Square dashboard. A refund made there is not reflected back onto the quote.
Square keeps rejecting my webhook signature. What is wrong?
Almost always the URL. Square includes the notification URL in what it signs, so the URL registered in Square has to match the one TackQuote verifies against exactly. If your Square subscription points at a different public hostname, paste that URL into the optional Registered Notification URL field so both sides sign the same string.