Service Payment Links and Instructions
A link tells the client where to pay; the instructions tell them how. And the two are not the same for everyone: a client paying in one go and a client paying in instalments have different amounts, different references and often different methods. That is why the instructions come as two blocks, one per type, and links are named inside the right block.
You set both in the same place: Services, opening the service.
Payment links and their variables
In the service form, the Payment links box holds one or more addresses, each with its own label (“First instalment”, “Initial balance”, “Annual renewal”). You add them with Add link and remove them when things change.
The value does not have to be a web address: it can also be the text of your bank details. The field takes a new line with Enter, so IBAN, BIC/SWIFT and beneficiary sit on separate lines and reach the client exactly like that, line by line.
Each link gets a variable of its own: link_ followed by the label in lowercase with no spaces. “Credit card” becomes {{link_credit_card}}, “Bank transfer” becomes {{link_bank_transfer}}. You find it as a clickable chip under the payment instructions: name it in the right block and the client gets that link’s address.
It is born from the label on the first save and stays fixed from then on: you can rename the label without breaking texts that already use the variable. Links you already had received their variable automatically. A deleted link leaves its variable on screen as is, so you notice.
If you had written payment_links or payment_link in your texts in the past, they keep working as before; the two variables are no longer offered as chips, though: the new way is naming the link inside the instructions.
Payment instructions
Below the links sits the Payment instructions box, with two tabs: One-off payment and Instalments. A dot marks the tab that already has text. The text is free-form and both tabs are optional: fill in one, both or neither.
This is the right place for the IBAN and account holder, the exact amount, the reference to write, the due date of the first instalment — everything you repeat on the phone every time.
| The client pays… | They get… |
|---|---|
| in a single sum | the One-off payment tab |
| in instalments | the Instalments tab |
| no payment type set | both, one under the other, separated by a blank line |
An instalment client with only the “One-off payment” tab filled in gets no instructions at all: SalesControl never falls back to the other tab. It would be the wrong payment method, and sending the wrong instructions is worse than sending none.
You drop the text into messages with the payment_instructions variable.
The variables inside the instructions
Inside the two blocks you can use nine fixed variables plus one per payment link, replaced with that client’s data when the message goes out:
The right form is {{contract_value}}, the same one you see in the sample text of the empty field: you can copy it as is. Without the braces, or in square brackets, the variable is not replaced and the client reads the name verbatim.
| Variable | What it prints | Example |
|---|---|---|
contract_value | The contract value | 4500 |
installment_amount | Value divided by duration, rounded to the cent. The last installment of the plan absorbs the remainder and can differ by a few cents | 750 |
installments_count | The duration in months | 6 |
currency | The currency symbol | € |
service_name | The contract service | Meta Ads Management |
start_date | Contract start, DD/MM/YYYY | 01/10/2026 |
customer_name | First name only | Mario |
customer_full_name | The full name | Mario Rossi |
customer_last_name | Last name only | Rossi |
link_name | The address of the link with that label (one variable per link) | https://pay.example.com/i1 |
How numbers are written: a whole amount comes out with no decimals (5000), otherwise with two (1250.50). installment_amount stays empty if the contract duration is missing or zero. currency prints the symbol for euro, dollar, pound, Australian and Canadian dollar; for other currencies it prints the code. A variable you mistype stays on screen as you wrote it: that way the typo is visible, instead of leaving a silent gap.
Two examples
One-off payment tab, bank transfer:
Hi {{customer_name}}, here is how to settle {{service_name}}.
Bank transfer of {{contract_value}} {{currency}} to:
IBAN IT60X0542811101000000123456
Account holder: Example Agency Ltd
Reference: {{customer_full_name}} - {{service_name}}
The contract starts on {{start_date}}.
Instalments tab, with the link:
Hi {{customer_name}}, your plan is {{installments_count}} instalments
of {{installment_amount}} {{currency}} each, for a total of
{{contract_value}} {{currency}}.
Pay the first instalment here: {{link_card}}
The rest are charged monthly, from {{start_date}}.
Where they come out
The payment_instructions variable works in six places:
| Where | When the client gets it |
|---|---|
| Opening chat message | As soon as the client is created (from a signed contract, from the form or from your CRM) and also when the service is assigned by hand later on. See The Chat Welcome Message. |
| “Signed contract” email | With the PDF copy, right after signing. |
| Page after signing | The screen the signer sees the moment they have signed. See The Post-Signature Page and Email. |
| “Trial passed” notification | When the client’s trial closes well. |
| Payment Reminder and Contract Expiry | On the days set in Settings › Notifications, by email and chat to the client. |
The links reach the client through the instructions: name them inside the two blocks and they come out in every place above. Where to write payment_instructions is up to you: in the service texts, or in the “Customize text” editors under Settings › Notifications. In the welcome editor and in the contract template editors you will find it as a clickable chip.
The stock “signed contract” email contains neither the links nor the instructions: they only come out if you write them into the template text yourself. In the welcome editor, if you use payment_instructions without having filled in either tab, SalesControl tells you with a warning — it does not block saving, but the client would get a blank space.
What happens during the trial
While a client is on trial, links and instructions render empty: you do not ask someone still trying the service to pay. They all arrive together with the Trial passed notification, which by definition fires once the trial is over.
That is why the welcome message has two versions, one for contracts with a trial and one for contracts without: a text saying “pay here” to a client on trial would leave a sentence hanging. See The Chat Welcome Message and Managing the Trial Period.
Translations into the client’s language
With the multilanguage platform on, both instruction blocks are translated automatically into the client’s language, within about ten minutes of saving. The client gets the version in their language; amounts, dates and links stay as they are, of course.
Editing one block redoes the translations of that block only: changing the instalment instructions does not retranslate the one-off ones. For the first few minutes after a change a client may still receive the text in the language you wrote it in.