The settings here permit for a wide variety of options, and you can customize your SMS messages, screen messages, and receipts in ways that display your place as a professional in the market.
Custom strings define your BATM’s personality.
Quick jump to section:
NOTE:
Some of these fields may not appear in older software versions.
Update your Terminal firmware to the latest version if you experience any trouble!
Different BATM versions will display different settings.
Each field is a type, represented by the prefix:
"text" may be printed on tickets, used onscreen, or sent in SMS messages.
"bmp" may only be used on printed tickets.
"qr(variablename)" may be used to create a QR code from any variable (PRINTED ONLY) - e.g.
This is a wallet QR code: {qr(text.crypto.destination)}
The following HTML formatting fields may be used in certain strings:
<b> begin bold type
</b> end bold type
<i> begin italics
</i> end italics
<br/> break (creates a new line after this)
You may NOT use "<" or ">" characters in your text (except as shown above)
The "strings" are just plain text formatted with HTML fields and graphics.
Example:
<b>This is bold text</b> and <i>this is italicized text.</i>
will be displayed as:
This is bold text and this is italicized text.
Fonts cannot currently be changed or resized.
Common (to all BATM versions)
support_phone: the phone number displayed on your BATM screen for support.
(Empty - no default set)
registration_delay: the time (in minutes) of the expected delay for identity registration. This is displayed on the BATM screen for your customer after they choose to register.
15
sms_buy_crypto_ticket_template: this SMS message is sent to customers after a BUY when using the optional SMS delivery.
BUY CRYPTO RECEIPT TX ID: {text.transaction.id} Time: {text.time} Price: {text.fiat.amount} {text.fiat.currency} Fixed Fee: {text.fiat.fee.fixed} {text.fiat.currency} Crypto: {text.crypto.amount} {text.crypto.currency} Destination: {text.crypto.destination}
email_buy_crypto_ticket_template: this email message is sent to customers after a BUY when using the optional email delivery. Supports basic HTML tags.
{bmp.logo}<b>BUY CRYPTO RECEIPT</b><br/><br/><b>TX ID:</b> {text.transaction.id}<br/><b>Time:</b> {text.time}<br/><b>Price:</b> {text.fiat.amount} {text.fiat.currency}<br/><b>Fixed Fee:</b> {text.fiat.fee.fixed} {text.fiat.currency}<br/><b>Crypto:</b> {text.crypto.amount} {text.crypto.currency}<br/><b>Rate:</b> 1 {text.crypto.currency} = {text.crypto.rate} {text.fiat.currency}<br/><b>Destination:</b> {text.crypto.destination}<br/><br/><br/><b>Operator:</b> Name, Address, Phone, etc<br/><br/>
terms_and_conditions: pre-transaction terms & conditions page shown at the BATM.
Supports basic HTML tags.
Creates a button on the BATM screen (when non-empty).
Add a "!" to the beginning of the string to force the customer to accept the terms & conditions prior to the transaction (“I AGREE” / ”CANCEL”).
Use !X! (e.g. !10!) - to wait X seconds before the Agree button is activated and can be clicked.
(Empty - no default set)
scam_disclaimer: see: Scam Disclaimer
(Empty - no default set)
alternative_welcome_message: replaces the default: "Welcome to Bitcoin ATM".
(Empty - no default set)
alternative_buy_message: replaces the default: "Buy Bitcoins" on the main screen
(Empty - no default set)
alternative_screensaver_message: replaces the default: "BUY BITCOINS!" on the screensaver
(Empty - no default set)
special_configuration: used ONLY under direction of development / support. See chart (below).
(Empty - no default set)
Separate multiple fields using a space (" ").
The chart is at the bottom of this article.
buy_transaction_failed_additional_message: these further instructions are displayed on the BATM screen to a customer in the event a BUY transaction fails (e.g. "Please call xxx-yyy-zzzz").
(Empty - no default set)
sms_otp: the message text when delivering one time SMS passwords to customers.
(Empty - no default set)
Password field is represented within the text by: {text.otp}
Example: “Here is your GB OT passcode:”
custom_buy_limit_title: the BUY LIMIT title used during the chooseLimitScreen BUY flow.
(Empty - no default set)
custom_buy_limit_description: the BUY LIMIT description used during the chooseLimitScreen BUY flow.
(Empty - no default set)
anonymous_limit_alternative_message: displays a custom Anonymous tier message on the Choose Limit Screen button.
(Empty - no default set)
unregistered_limit_alternative_message: displays a custom Not Registered tier message on the Choose Limit Screen button.
(Empty - no default set)
registered_limit_alternative_message: displays a custom Registered tier message on the Choose Limit Screen button.
(Empty - no default set)
pep_rejected_info: displayed to customers that are rejected due to PEP restrictions.
Please contact our support team {support_phone}.
registrations_disabled: displayed when new registrations are not being accepted, or are being pre-processed by third-parties (and registration is no longer performed at the BATM).
We are sorry, to register please visit (not set).
custom_registration_title: displays a custom title for the “Are you registered?” screen.
(Empty - no default set)
customer_unregistered: This SMS message will be sent to the Identity because their ID document expired.
We are sorry, you were unregistered due to the expiration of your ID document.
custom_pep_question: this may be customized to comply with jurisdictional requirements.
(Empty - no default set)
registration_submitted_successfully_additional_message: shown to the customer after successfully uploading the required registration documents.
(Empty - no default set)
marketing_opt_in_agreement_text: this window (when displayed) shows after the QR has been presented by an UNREGISTERED or REGISTERED during a transaction. An “opt-in” is required for marketing in various regions.
(Empty - no default set)
For this message to be displayed:
this custom string must contain text,
the customer’s Identity must have a cellphone number,
the customer must not have previously opted-in to the marketing agreement.
marketing_opt_in_agreement_title: customize the title to the marketing opt-in agreement above.
MARKETING AGREEMENT
registration_submitted_successfully_custom_message: this additional message is displayed onscreen after the AML-triggered registrationSubmitedSuccessfulScreen
Registration information was submitted successfully.<br/>We will inform you on {text.contact.info} when your account is activated.
required_disclosures_text: displayed on screen after the “Cash Limit Screen” (if non-empty).
Permitted variables: {text.fee.fixed}, {text.rate}, {text.rate.raw}
(Empty - no default set)
collect_phone_voicecall_delay: when your customer chooses to have a voice call instead of an SMS, delay the call for “X” minutes.
(Empty - no default set)
The following custom messages may instead be presented to your customer when they exceed their respective limits:
exceeded_cash_limit_per_transaction
exceeded_cash_limit_per_hour
exceeded_cash_limit_per_day
exceeded_cash_limit_per_week
exceeded_cash_limit_per_month
exceeded_cash_limit_per_3_months
exceeded_cash_limit_per_12_months
exceeded_cash_limit_per_calendar_year_quarter
exceeded_cash_limit_per_calendar_year
exceeded_cash_limit_per_day_and_crypto_address
exceeded_total_cash_limit_per_crypto_address
exceeded_total_cash_limit_per_identity
exceeded_total_terminal_cash_limit_for_buy
exceeded_total_terminal_cash_limit_for_sell
Printed ticket strings
printer_paper_wallet_template: this is printed when a paper wallet is chosen.
<b>PAPER WALLET - {text.cryptoCurrency}</b><br/><br/><br/><b>Spend</b><br/>{text.cryptoCurrency} - private key - keep this QR code private!{bmp.privatekey}{text.privatekey}{bmp.logo}<b>Load</b><br/>{text.cryptoCurrency} - public key<br/>{text.address}{bmp.address}<br/>
printer_buy_crypto_ticket_template: the paper BUY receipt contents.
{bmp.logo}<b>BUY CRYPTO RECEIPT</b><br/><br/><b>TX ID:</b> {text.transaction.id}<br/><b>Time:</b> {text.time}<br/><b>Price:</b> {text.fiat.amount} {text.fiat.currency}<br/><b>Fixed Fee:</b> {text.fiat.fee.fixed} {text.fiat.currency}<br/><b>Crypto:</b> {text.crypto.amount} {text.crypto.currency}<br/><b>Rate:</b> 1 {text.crypto.currency} = {text.crypto.rate} {text.fiat.currency}<br/><b>Destination:</b> {text.crypto.destination}<br/><br/>Keep this receipt!<br/><br/><b>Operator:</b> Name, Address, Phone, etc<br/><br/>
printer_pos_crypto_ticket_template: printed for the CortexPay POS.
{bmp.logo}<b>Order ID:</b> {text.orderid}<br/><b>Total price:</b> {text.totalprice} {text.cashcurrency}<br/><b>Tip:</b> {text.tip} {text.cashcurrency}<br/><b>Amount with tip:</b> {text.amounttip} {text.cashcurrency}<br/><b>Amount to be paid:</b> {text.amountpaid} {text.ammountcurrency}<br/><br/>{bmp.logo}<br/><br/><br/><br/>
printer_cash_collection_ticket_template: enables a custom cash collection ticket, as mandated by certain armored car (and other cash pickup) services. This is a subtitle (only).
(Empty - no default set)
Onfido/Veriff customizations
sms_identity_verification_link: the {link} field is set in your Organization settings.
Please use following link to verify your identity. {link}
sms_identity_verification_success:
Verification was successful. You should be registered shortly.
sms_identity_verification_registration_success:
Congratulations, your registration was successful.
sms_identity_verification_caution:
Something went wrong and we have to verify you manually, sorry. It can take some time.
sms_identity_verification_failed:
Verification was unsuccessful. Please try again.
SELL-capable only
printer_sell_crypto_ticket_template: this paper offer prints after a SELL is negotiated. It displays the QR code and crypto amount the customer is required to send to you to consummate your offer. The ticket is then scanned at the BATM for the customer to withdraw the agreed upon fiat.
{bmp.logo}<b>SELL CRYPTO RECEIPT AND REDEEM TICKET</b><br/><br/><b>TX ID:</b> {text.transaction.id}<br/><b>Time:</b> {text.time}<br/><b>Price:</b> {text.fiat.amount} {text.fiat.currency}<br/><b>Fixed Fee:</b> {text.fiat.fee.fixed} {text.fiat.currency}<br/><b>Crypto:</b> {text.crypto.amount} {text.crypto.currency}<br/><b>Rate:</b> 1 {text.crypto.currency} = {text.crypto.rate} {text.fiat.currency}<br/><b>Destination:</b> {text.crypto.destination}<br/><b>UUID:</b> {text.transaction.uuid}<br/><br/><b>Operator:</b> Name, Address, Phone, etc<br/><br/><b>How to proceed:</b><br/><b>1.Please send exactly </b> {text.crypto.amount} {text.crypto.currency} to <br/>{text.crypto.destination}<br/><b>before {text.transaction.expirationTimestamp}.</b>{bmp.paymentrequest}<br/><b>2.Wait a few minutes before your payment is confirmed.</b><br/><b>3.On machine choose REDEEM TICKET.</b><br/><b>4.Scan QR code on this ticket.</b><br/><br/><b>DON'T LOSE THIS REDEEM TICKET!!</b><br/><b>TICKET IS NEEDED FOR CASH WITHDRAWAL!!</b><br/>{bmp.logo}<br/>
sms_sell_crypto_ticket_template: this SMS is sent after a SELL is negotiated. It contains the target wallet and crypto amount the customer is required to send to you to consummate your offer.
SELL CRYPTO RECEIPT AND REDEEM TICKET {text.transaction.id}. Please send {text.crypto.amount} {text.crypto.currency} to {text.crypto.destination} before {text.transaction.expirationTimestamp}. Wait until your payment is confirmed. On machine choose REDEEM TICKET. Scan the following QR code: https://coin.cz/qrcode.html?qrcodetext={text.paymentrequest} Price: {text.fiat.amount} {text.fiat.currency}, Fee: {text.fee.percentage}% + {text.fiat.fee.fixed} {text.fiat.currency}, Rate: 1 {text.crypto.currency} = {text.crypto.rate} {text.fiat.currency}
sms_cashback_ticket_template: this message is sent to a customer to permit a manually-created redemption (REDEEM) transaction. The message includes a REDEEM QR code.
CASHBACK RECEIPT AND REDEEM TICKET "{text.transaction.id}" {text.time} Amount: {text.fiat.amount} {text.fiat.currency} ; QR code available at: {text.qr.code.url}
email_cashback_ticket_template: this message is sent to a customer to permit a manually-created redemption (REDEEM) transaction. The message includes a REDEEM QR code.
{bmp.logo}<b>CASHBACK RECEIPT AND REDEEM TICKET</b><br/><br/><b>TX ID:</b> {text.transaction.id}<br/><b>Time:</b> {text.time}<br/><b>Amount:</b> {text.fiat.amount} {text.fiat.currency}<br/><br/>{qr(cashback)}<br/>How to proceed:<br/>1. Choose REDEEM TICKET on the ATM.<br/>2. Scan the QR code on this ticket.<br/><br/>DON'T LOSE THIS REDEEM TICKET!!<br/>TICKET IS NEEDED FOR CASH WITHDRAWAL!!<br/>{bmp.logo}<br/>
printer_withdrawal_ticket_template: this paper SELL receipt is printed by the BATM after the fiat has been withdrawn by the customer.
{bmp.logo}<b>CASH WITHDRAWAL RECEIPT</b><br/><br/><b>TX ID:</b> {text.transaction.id}<br/><b>Related TX:</b> {text.transaction.related.id}<br/><b>Time:</b> {text.time}<br/><b>Amount:</b> {text.fiat.amount} {text.fiat.currency}<br/><b>UUID:</b> {text.transaction.uuid}<br/><br/><b>Operator:</b> Name, Address, Phone, etc<br/><br/><br/>{bmp.logo}<br/>
sell_withdrawal_ready: this SMS communicates that the SELL is ready for customer withdrawal.
Cash withdrawal {text.transaction.id} is ready.
sell_invalid_payment: this SMS notifies your customer that the wrong amount has been submitted to the wallet specified in printer_sell_crypto_ticket_template.
Invalid payment {text.transaction.id} received.
sell_timed_out: this SMS notifies your customer that your SELL offer has expired, and the payment was not received within the required time limit.
Sell offer {text.transaction.id} expired. Don't send the payment.
sell_arriving: this SMS notifies your customer that the coin satisfying the SELL terms has been seen on the network, and is waiting for the required confirmations (next: sell_withdrawal_ready).
Transaction {text.transaction.id} arriving, thank you. We will inform you when the cash withdrawal is ready.
sell_transaction_failed_additional_message: these further instructions are displayed on the BATM screen to a customer in the event a SELL transaction fails (e.g. "Please call xxx-yyy-zzzz").
(Empty - no default set)
withdraw_transaction_failed_not_enough_cash_message: replaces the default “Withdrawal is not possible. Not enough cash in the machine.” message.
(Empty - no default set)
withdraw_transaction_failed_additional_message: these further instructions are displayed on the BATM screen to a customer in the event a REDEEM transaction fails (e.g. "Please call xxx-yyy-zzzz").
(Empty - no default set)
custom_sell_limit_title: the SELL LIMIT title shown during the chooseLimitScreen SELL flow.
(Empty - no override set)
custom_sell_limit_instruction: a SELL LIMIT subheading (e.g. “choose X”) shown during the chooseLimitScreen SELL flow.
(Empty - no override set)
custom_sell_limit_description: the SELL LIMIT description shown during the chooseLimitScreen SELL flow.
(Empty - no override set)
required_disclosures_text: pre-transaction disclosure shown at the BATM.
Add a "!" to the beginning of the string to force the customer to accept the disclosure prior to the transaction (“I AGREE” / ”CANCEL”).
Use !X! (e.g. !10!) - to wait X seconds before the Agree button is activated and can be clicked.
(Empty - no default set)
Field Assignments & Definitions
Field | Description | Applies to: |
---|---|---|
{text.time} | Transaction time at location. | All |
{text.transaction.id} | The RID of the transaction. | All |
{text.fiat.amount} | The fiat amount of this transaction.; | All |
{text.fiat.currency} | The fiat (USD/EUR/etc) used. | All |
{text.crypto.amount} | The amount of coin involved. | All |
{text.crypto.currency} | The type of coin (BTC/LTC/etc). | All |
{text.crypto.destination} | The wallet presented during the BUY. | BUY |
{text.fiat.fee.fixed} | Any flat fee assessed. | All |
{text.crypto.rate} | The calculated rate based on the amount involved, your percentages, and fees. | All |
{text.privatekey} | The text version of any private key when a hard-copy is chosen by the customer. | BUY |
{text.transaction.uuid | This ID links a WITHDRAW to this SELL. | SELL |
{text.transaction.expirationTimestamp} | The expiration datetime of the SELL offer. | ALL |
{text.transaction.related.id} | The ID of the associated SELL. | WITHDRAW |
{text.otp} | The OTP sent to a Customer. | OTP |
{bmp.logo} | Your logo from Sprites (or GB). | All |
{bmp.paymentrequest} | The QR-coded SELL offer. | SELL |
{bmp.address} | A QR-coded wallet address. | BUY |
{bmp.privatekey} | A QR-coded private key. | BUY |
Permitted Fields
Custom String | Permitted Fields |
---|---|
sms_buy_crypto_ticket_template | {text.time} |
email_buy_crypto_ticket_template | {text.time} |
printer_paper_wallet_template | {text.address} |
printer_buy_crypto_ticket_template | {text.time} |
printer_sell_crypto_ticket_template | {bmp.logo} |
printer_withdrawal_ticket_template | {bmp.logo} |
printer_pos_crypto_ticket_template | {bmp.logo} |
sell_withdrawal_ready | {text.transaction.id} |
sell_invalid_payment | |
sell_timed_out | |
sell_arriving |
Special configuration strings
Separate multiple fields using a space (" ").
Setting | Description |
---|---|
acceptanceProblemRejectThreshold=X | Terminals will report the event “Acceptance Problem” after 3 failed attempts to accept a banknote (default).
|
alarm_delay_seconds=xx | alarm arming delay after closing the door (door sensors required). |
alarm_pin=abcd | Assign a numerical PIN for disarming the alarm.
|
alt-admin-access |
|
btc_reject_bc1 | Rejects customer SegWit wallet addresses ("bc1"). |
checkpin=abcd | Terminal will ask for numerical PIN before purchase.
|
datasaving | Decreases the “ping” frequency
|
idledatasaver | reduces the ping period in screensaver mode to 150 sec |
ltc_reject_ltc1 | Rejects customer wallet addresses beginning with ("ltc1"). |
paperwalletonly | Force paper wallet usage (required in certain jurisdictions.
|
rebootIntervalMinutes= | Changes the "no connection" timeout.
|
ukraine | Adds aid option for Ukraine, see: https://generalbytes.atlassian.net/l/cp/HWrVFiV0 |
-Xbitflyer=1 | Enables BitFlyer |
experimental | (deprecated) Implements the new (experimental) Terminal UI. |
legacy | (deprecated) Implements the old (legacy) Terminal UI. |