Hi. How can we help?

Sending payment links with Lightspeed Payments

With Lightspeed Payments, you can email secure payment links to customers for online payments. This feature provides flexibility for handling credit accounts, work orders, and special orders. You can send these links with account statements or when requesting a deposit.

The maximum you can request your customer to pay through the Lightspeed Payments link is 100,000 in your local currency.

Emailing payment links with an account statement 

You can email account statements with payment links to your customers from the Customer account page. 

  1. Navigate to Customers > Credit accounts.
  2. Click the name of the customer you wish to email an invoice to from the list. 
  3. In the Account statement section, select the date range, payment due date, and edit the amount due if required. 
  4. Click Email.


  5. If you have configured your printing settings to print invoices in more than one language, choose a language for the email statement.
  6. Review the details in the modal that opens. If the customer has an email address on file, it will auto populate. If not, enter an email address.
  7. Click Send.

When your customer receives the email, they can click Pay online in the email to access the secure web portal. Once their payment is complete, both you and your customer will receive an email confirming the payment is complete. 

Sending payment links with invoices is turned on by default. You can disable this feature in your settings.

  1. Navigate to Settings > General options.
  2. Click on the Billing tab.
  3. Uncheck the box beside Include payment link by default.Retail-R-include-payment-link.png
  4. Click Save changes.

You can re-enable email links at any time by checking the box again.

Sending payment links when requesting a deposit

You can email or print a receipt with a payment link from the sales screen when requesting a deposit. Your customer can then click the link in the email receipt or you can copy the link url to send to you customer using a different messaging system. The link will direct your customer to a secure web portal where they can pay with a credit card. 

  1. Navigate to SalesNew sale.
  2. Attach a customer to the sale. Add items if required.
  3. Click Payment.
  4. Click Deposit.


  5. Enter the deposit amount to be paid through the Lightspeed Payments link.
  6. Select Remote payment (via payment link) and click Next.


  7. Choose to email receipt with payment link or print the receipt with payment link and click Next.


  8. If you are emailing the receipt, the primary email for the customer will auto populate. Confirm the address and click Send.
  9. Click Finish sale.
  10. Print the receipt if required. The receipt will include the payment link.

When your customer receives the email receipt, they can click Pay deposit in the email to access the secure web portal. Once their payment is complete, both you and your customer will receive an email confirming the payment is complete.

Voiding a sale after sending a payment link will not cancel the link. To cancel the link for a voided sale, you must delete the payment link in Financial services. Refer to the Viewing payment link section for instructions.

Viewing payments links

All payment links can be viewed through Financial services in your Retail POS account. Navigate to Financial services > Lightspeed payments and click the Payment links tab.

Here you can view all your links and track their status.
You can click on the date created to view details about a link.


Canceling payment links

You may want to deactivate a link once it has been sent. If the link was generated during a sale, deactivating a link will not void the sale. 

  1. Navigate to Financial services > Lightspeed payments.
  2. Click the Payment links tab.
  3. Locate the payment link and click Deactivate.


Updating custom sales receipts for payment links

If you use custom print templates for your sales receipts, you will have to update the template so payment links are displayed properly. You can make these changes by using the latest print template or by adjusting the code of your current template manually. 

If you do not change your custom template to accommodate payment links, Retail POS will use the default print template for emailed links. For printed receipts, the payment link will not display on the receipt until the changes are made. You can copy the link from the sale completion page to send to your customer.

Using the latest print template

  1. Navigate to Settings > Print templates.
  2. Copy and paste the code of your current template in a separate document to ensure you can quickly revert your changes, if needed.
  3. In the print template repository in Github, click the receipt folder.Retail-R-github.png
  4. Click SaleReceipt.tpl. For supported language versions, click the SaleReceipt with the language code you need.Retail-R-github-sale-receipt.png
  5. Click into the code box, select all, and copy the code.
  6. In Retail POS, navigate to SettingsPrint Templates.Retail-R-customizing-templates-settings-page.png
  7. Paste the code into the SaleReceipt field.Retail-R-salereceipt-field.png
  8. If your current receipt template includes custom options, add these back to the template.
  9. Click anywhere outside the print template to save changes.

Adding code manually to your current template

If you prefer to update your existing template, specific code additions are required to make payment links visible on your printed and emailed receipt.

If you use the latest print template from the repository, the code changes will be done and you do not need to make these edits.

    1. Navigate to Settings > Print templates.Retail-R-customizing-templates-settings-page.png
    2. In your custom sales receipt code, after the .barcodeContainer section, add the following:
      .remotePaymentLinkContainer {
      	text-align: center;
      	margin: 1.5em 0;
      span.payOnlineTitle {
      	display: block;
      	font-size: 0.8rem;
      	font-weight: bold;
      	margin: 2rem 0 0.25rem;
      	text-transform: uppercase;
      svg.payOnlineIcon {
      	height: 1rem;
      	margin-right: 0.25rem;
      	vertical-align: -0.2rem;
      	width: 1rem;
      .payButton {
      	background-color: #1844cc;
      	background-image: linear-gradient(#537dec, #2e61de);
      	border: 1px solid #1844cc;
      	border-radius: 0.1875rem;
      	box-shadow: rgba(255, 255, 255, 0.15) 0px 1px 0px 0px inset;
      	color: #fff;
      	display: inline-block;
      	font-size: 1rem;
      	font-weight: 500;
      	line-height: 2rem;
      	margin: 1.5em 0 0;
      	padding: 0.375rem 1.5rem;
      	text-align: center;
      	text-decoration: none;
      	width: 90%;
      .payButton:hover {
      	background-color: #2e61de;
      	background-image: linear-gradient(#2e61de, #2e61de);

      Your code will look similar to this:


    3. Below the line {{ _self.client_workorder_agreement(Sale,_context) }} add:

      {% if parameters.email %}
      	{{_self.remoteDepositLink(Sale,parameters) }}
      {% endif %}

      Your code will look similar to this:


    4. After the code block that starts with {% if Sale.completed == 'true' and Sale.SalePayments and not parameters.gift_receipt %} and ends with { %  endif  % }, add:

      {% if not parameters.email %}
      		{{ _self.remoteDepositLink(Sale,parameters) }}
      {% endif %}

      Your code will look similar to this:


    5. Below the line {% if options.workorders_as_title and Sale.SaleLines is empty and Sale.Customer.Workorders is defined %} Work Orders add:

      {% elseif Sale.SaleLines is empty and Sale.Customer.CreditAccount.MetaData.remoteDepositAmount %}
      					Remote deposit request

      Your code will look similar to this:


    6. Replace the line immediately following {% if options.show_customer_credit_account and Sale.Customer and not parameters.gift_receipt and not store_copy %} with:

      {% if Sale.Customer.CreditAccount.MetaData.creditBalanceOwed  0 or Sale.Customer.CreditAccount.MetaData.extraDeposit  0 %}

      Your code will look similar to this:


    7. After the {% if Sale.Customer.CreditAccount %} section add:

      {{ _self.remoteDepositSummary(Sale,parameters) }}

      Your code will look similar to this:


    8. At the end of the {{ _self.remoteDepositSummary(Sale,parameters) }} section, after its {% endmacro %}, add:

      {% macro remoteDepositLink(Sale,parameters) %}
      {% if Sale.Customer.CreditAccount.MetaData.remotePaymentLinkUrl %}
      {% if parameters.email %}
      <p class="remotePaymentLinkContainer">
      <a href="{{ Sale.Customer.CreditAccount.MetaData.remotePaymentLinkUrl }}" class="payButton" target="_blank" data-test="remotePaymentLinkUrl">
      Pay deposit
      {% else %}
      <p class="remotePaymentLinkContainer">
      <span class="payOnlineTitle">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="payOnlineIcon">
      <path d="M14 11h1.001a.998.998 0 0 0 .999-.998V2.998A.998.998 0 0 0 15.001 2H4a.998.998 0 0 0-1 .998V4h10.001c.552 0 .999.446.999.998V11z" opacity=".7"></path>
      <path d="M13 7H0V5.998C0 5.447.447 5 .999 5H12c.552 0 .999.446.999.998V7zm0 2v4.002a.998.998 0 0 1-.999.998H1a.998.998 0 0 1-1-.998V9h13z"></path>
      Pay online
      <a href="{{ Sale.Customer.CreditAccount.MetaData.remotePaymentLinkUrl }}" target="_blank" data-test="remotePaymentLinkUrl">
      {{ Sale.Customer.CreditAccount.MetaData.remotePaymentLinkUrl }}
      {% endif %}
      {% endif %}
      {% endmacro %}

      {% macro remoteDepositSummary(Sale,parameters) %}
      {% if Sale.Customer.CreditAccount.MetaData.remoteDepositAmount %}
      {% if Sale.SaleLines is not empty %}
      <h1 class="spacer">
      Remote deposit request
      {{ _self.date(Sale) }}
      {% endif %}
      <h2 class="footerSectionTitle">Requested Payment</h2>
      <table class="totals">
      <td width="100%">Account Deposit: </td>
      <td class="amount" data-test="remoteDepositAmount">{{ Sale.Customer.CreditAccount.MetaData.remoteDepositAmount|money }}</td>
      {% endif %}
      {% if Sale.Customer.CreditAccount.MetaData.creditBalanceOwedAfterPayment > 0 or Sale.Customer.CreditAccount.MetaData.extraDepositAfterPayment > 0 %}
      <h2 class="footerSectionTitle">Store Account (After Payment)</h2>
      <table class="totals">
      {% if Sale.Customer.CreditAccount.MetaData.creditBalanceOwedAfterPayment > 0 %}
      <td width="100%">Balance Owed (after payment): </td>
      <td class="amount" data-test="creditBalanceOwedAfterPayment">{{ Sale.Customer.CreditAccount.MetaData.creditBalanceOwedAfterPayment|money }}</td>
      {% elseif Sale.Customer.CreditAccount.MetaData.extraDepositAfterPayment > 0 %}
      <td width="100%">On Deposit (after payment): </td>
      <td class="amount" data-test="extraDepositAfterPayment">{{ Sale.Customer.CreditAccount.MetaData.extraDepositAfterPayment|money }}</td>
      {% endif %}
      {% endif %}
      {% if Sale.Customer.MetaData.getAmountToCompleteAllAfterPayment > 0 %}
      <table class="totals">
      <tr class="total">
      <td width="100%">Remaining Balance (after payment): </td>
      <td class="amount" data-test="getAmountToCompleteAllAfterPayment">{{ Sale.Customer.MetaData.getAmountToCompleteAllAfterPayment|money }}</td>
      {% endif %}
      {% endmacro %}

      Your code will look similar to this:


What's next?

Getting paid with Lightspeed Payments

Learn how payouts work with Lighspeed Payments

Learn more

Lightspeed Payments FAQ

Answers to Lightspeed Payments questions

Learn more

Was this article helpful?

1 out of 1 found this helpful