Payment-Link with Authorization only

Is it possible to create a Payment-link that only authorizes the money, so I can perform the capture later on?


At this time delaying the capture of the payment isn’t currently possible with the payment links today. We’re constantly working to improve our features based on feedback like this, so I’ll be sure to share your request to the API product team. :slightly_smiling_face:

Thanks, Bryan.
Please also share this with the API production team, so they’ll know, why this is important.

Our customers are hotels in Denmark, Norway, Sweden and Ireland - and they make the guests make authorizations before they arrive and then capture the money at - or after - checkout-time.
That makes sure, that the hotels receives their money, but the money will not be payed before the guests leaves the hotel.
We have currently around 800 customers, using 15 different payment providers, and Square is so far the only payment provider, that doesn’t support authorizations only, during checkout. :wink:


With our Web Payments SDK you can delay capture a payment. Its just the generated payment links don’t support it at this time. Also what length of time are you wanting to keep the payment authorized?

For card payments, you have the following default time thresholds to capture (or cancel) a previously authorized payment:

  • 36 hours for in-person (card present) payments, where the card was swiped, dipped, or tapped using a card reader.
  • 7 days for online (card not present) payments, where the buyer used a card on file or typed the card number.

After the time period expires, if the payment isn’t in a terminal state (COMPLETED, CANCELED, or FAILED), Square takes one of the following actions, depending on the delay_action field value. :slightly_smiling_face:

Hi Bryan.

Thanks for your help! :slight_smile:

The Payment Links seemed like a fast way of integrating Square into our system, but I’m no longer sure, that its right way to go.

I need to get information on the payment created by the Payment Link.
When creating a Payment Link, I get an OrderId and a Payment Link Id in the response - but the Payment Link Id is not a PaymentId and cannot be used with the GetPayment endpoint - and I cannot find the OrderId in the list of payments (List Payments).

If I retrieve the Payment Link after it has been payed, there’s no reference to the payment.
I can find the Order by the OrderId, though - and see the status, but I need the PaymentId to refund or cancel the payment

And … The Payment Links API does’nt support webhooks …

So - I’m kind of stuck and afraid, that I have to start all over with the Web Payments solution… :frowning:


With the payment links a payment_id will be generated when a customer pays for the order that’s created when the link is created. Once the order is paid for the order will be updated with the payment_id. You can listen to either payments webhooks or order webhooks.

If you listen to payment webhook events you’ll be looking for a payment that has a matching order_id that matches the one that was created with the link. If you listen to the orders events you’ll be looking for an update event that contains the payment_id. :slightly_smiling_face:

Oh… Great! You just saved my day!


Hi Bryan.

Thanks again for your help!

Everything works now; payments, refunds etc. - and I’m about to move the integration into production for the first customer.
I need an Access token and a LocationId from the customer - but where do they find the information? I got the sandbox/production credentials from the developer-site, but where do the customer find the Access-token? (I know where to find the Location).


You’ll want to OAuth the seller. When the seller Authorizes your application you’ll get back the access_token and refresh_token that you’ll use to make API calls on there behalf. :slightly_smiling_face:

Ahh! Thanks again! That’s the onbording process of several of the other payment providers, that we integrate with, but the plain text keys in the developer section got me off track… :slight_smile: