Mondido.js
Accept payments on your own payment page while payment data is encrypted in the customers browser.
Accept payments on your own payment page while payment data is encrypted in the customers browser.
A Javascript library where you safely can create payments directly from your checkout page to the mondido API without going through your backend.
To send credit card information from your checkout page we need to encrypt the sensitive data using mondido.js. Instead of having "name" attributes you need to use the attribute "data-encrypt-attribute", mondido.js will then ease your burden by encrypting the data and adding the name attribute before it's being sent to our API. No need for you the roll your own encryption implementation, the library will automatically encrypt the values just before the form is submitted.
At the moment Mondido.js does only support card payments. If you are looking for alternative payment methods, we suggest to implement the Hosted Window version
hash
and merchant secretThe hash should be calculated in your backend where your secret is not revealed. In these examples the secret
is public which is just for demo purposes.
You should use UTF8
as encoding on your form page to ensure proper values
Our standard JS library can be found on our GitHub page: https://github.com/Mondido/mondido-js
If you are into Angular check out the GitHub page at: https://github.com/Mondido/mondido-angular
Mondido understands the need to incorporate best business practices in security. That's why we've made it easy for merchants to implement 3D Secure or “3 Domain Secure” as the industry standard identity check solution to minimize chargebacks from fraudulent credit cards, all included in our simple pricing. 3D-Secure refers to second authentication factor products such as Verified by Visa, MastercardⓇSecureCode™, American Express SafekeyⓇ, and JCB J/Secure™.
NOTE: While you can create your own payment experience, We strongly recommend using our Hosted Window or Mondido.js solution to save time in implementing 3D-Secure and client side encryption to your checkout procedure.
card_holder |
string
The name on the charged credit card |
card_number |
string
A masked card number ex. 411111****1111 |
card_expiry |
string
MMYY ex. 0120 |
card_type |
string
VISA, MASTERCARD, etc. (STORED_CARD if the transaction is done with stored card) |
amount |
decimal * required
The transaction amount ex. 12.00, NOTE: must always include two decimals. |
vat_amount |
decimal
The vat amount for the transaction ex. 3.00 |
merchant_id |
string * required
Your unique id. Can be found in the admin console. |
currency |
string * required
Payment currency (sek, cad, cny, cop, czk, dkk, hkd, huf, isk, inr, ils, jpy, kes, krw, kwd, lvl, myr, mxn, mad, omr, nzd, nok, pab, qar, rub, sar, sgd, zar, chf, thb, ttd, aed, gbp, usd, twd, vef, ron, try, eur, uah, pln, brl) |
customer_ref |
string
A unique customer/user ID from the merchant system, used to identify a customer i different transactions and for stored cards. |
payment_ref |
string* required
A unique order ID from the merchant internal order/payment data (length 1-12) |
hash |
Loading...
|
success_url |
string * required
Not used in AJAX requests. An URL to the page where the user is redirected after a successful transaction. Can contain Liquid. |
error_url | * required
Not used in AJAX requests. A URL to the page where the user is redirected after a unsuccessful transaction. Can contain Liquid. |
metadata |
string
Your own custom data for example:
|
test |
boolean
Sets the transaction to be live or in test mode. test = true, only allows test card numbers, test = false, only allow real card numbers. |
store_card |
boolean
true/false if you want to store the card for token based transactions. * |
plan_id |
integer
An ID of a subscription plan in Mondido. The plans are defined in the Admin console. * |
subscription_quantity |
int
A number that says how many times the cost of the subscription plan that should processed. This could be used as a licence factor when the plan cost A amount and the customer want to subscribe to A * the number of licenses (the multiplier) for each period. |
webhook |
object
You can specify a custom Webhook for a transaction. For example sending e-mail or POST to your backend. |
authorize |
boolean
authorize = true, means that the transaction should be reserved (Authorized). |
subscription_items |
object
An array of subscription unique items |
In some cases the card can not be stored, but we will still try to charge it. This means that the transaction might be successful even though the card can not be stored.
Always check the response to see if there is a stored_card (or subscription), which will be missing if the card could not be stored.
After having jQuery, include the JavaScript library and pass your personal merchant ID. It is important to have the same merchant_id in the JavaScript and in the input parameter in the form.
<script src="https://cdn-web01.mondido.com/v2/mondido.js?merchant_id={merchant_id}"> </script>
The way you encrypt card data is by using data-encrypt-attribute
instead of name
html attribute on the input
tags.
<input type="text" data-encrypt-attribute="card_holder" value="John Doe"/>
If you don't want to encrypt a value then use the "name" attribute as a normal form POST
<input type="text" name="card_holder" value="John Doe"/>
The action attribute of the form tag should be: https://api.mondido.com/v1/transactions
See the Pen Mondido.JS by Robert (@robertpohl) on CodePen.
<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<title>Mondido.js</title>
</head>
<body>
<form id="mondidopayform" action="https://api.mondido.com/v1/transactions" method="post">
<label>
Card holder name
<input type="text" name="card_holder" value="John Doe"/>
</label>
<label>
Card number
<input type="text" data-encrypted-attribute="card_number" value="4111111111111111"/>
</label>
<label>
Card type
<input type="text" name="card_type" value="VISA"/>
</label>
<label>
Card expiry (MMYY)
<input type="text" name="card_expiry" value="0918"/>
</label>
<label>
CVV
<input type="text" data-encrypted-attribute="card_cvv" value="200"/>
</label>
<label>
Order ID
<input type="hidden" name="payment_ref" value="123">
</label>
<label>
Amount
<input type="hidden" name="amount" value="1.00">
</label>
<label>
Currency
<input type="hidden" name="currency" value="sek">
</label>
<label>
Hash
<input type="hidden" name="hash" value="">
</label>
<label>
Merchant ID
<input type="text" name="merchant_id" value="3">
</label>
<label>
Store Card
<input type="text" name="store_card" value="true">
</label>
<label>
Webhook
<input type="text" name="webhook" value='{"url":"https://mybackend.com/confirmOrderFromMondido","trigger":"payment_success","http_method":"post","data_format":"form_data"}'>
</label>
<label>
Metadata
<input type="text" name="metadata" value='{"products":[{"id":"1","name":"Nice Shoe","price":"100.00","qty":"1","url":"https://mysite.com/product/1"}],"user":{"email":"jd@email.com"}}'>
</label>
<input type="hidden" name="customer_ref" value="1">
<input type="hidden" name="test" value="true">
<input type="hidden" name="encrypted" value="card_number,card_cvv">
<input type="submit" value="Pay" class="btn">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://blueimp.github.io/JavaScript-MD5/js/md5.js"></script>
<script src="https://cdn-web01.mondido.com/v2/mondido.js?merchant_id=3"> </script>
<script>
var onSuccess = function (transaction) {
if(window.mondido.hasCallback){
return;
}
alert('Thank you for the payment!');
window.mondido.hasCallback = true;
};
var onError = function (error,data) {
if(window.mondido.hasCallback){
return;
}
if (data != null) {
alert(data.description);
}
window.mondido.hasCallback = true;
};
var onBefore = function(){
window.mondido = {hasCallback: false};
};
$('#mondidopayform')
.mondido({type:"ajax"})
.on('payment:before', onBefore)
.on('payment:success', onSuccess)
.on('payment:fail', onError);
var payment_ref = Math.floor((Math.random() * 10000) + 1).toString(); //random payment reference
var secret = "$2a$10$k/wS5qecZLyMmqo0e8GV9."; // ssshhh, this is the secret.
var merchant_id = "3";
var customer_ref = "customer1";
var amount = "1.00";
var h_str = merchant_id+payment_ref+amount+customer_ref+"sek"+"test"+secret;
var hash = md5(h_str);
$('input[name="customer_ref"]').val(customer_ref);
$('input[name="merchant_id"]').val(merchant_id);
$('input[name="payment_ref"]').val(payment_ref);
$('input[name="hash"]').val(hash);
$('input[name="amount"]').val(amount);
</script>
</body>
</html>
If you are not using AJAX but POST instead, then change:
<input type="hidden" name="success_url" value="https://mysite.com/payment/success">
<input type="hidden" name="error_url" value="https://mysite.com/payment/error">
And POST to the URL: https://pay.mondido.com/v1/form instead.
Options:
Events
Mondido.js also provides a few events that you can hook in to with the jQuery.on method. See these examples to learn how to use them.
mpi:open (event)
Triggered when the MPI/3D Secure window opens.
Might be used to for example pop an overlay while the user goes through the MPI flow.
Called with the event as an argument
mpi:close (event)
Triggered when the MPI/3D Secure window closes.
Called with the event as an argument
payment:success (event, transaction)
Triggered after a successful payment.
Called with the event and the transaction as arguments
payment:fail (event, error)
Triggered after a failed payment.
Called with the event and an error object as arguments
payment:before ()
Triggered before a payment is processed.
Return false to halt the event chain and prevent the payment from being processed.
For example:
error: {
name: 'errors.card_number.missing',
code: 118,
description: 'Card number is missing'
}
Items makes it possible to send product info about the items into a payment. This items array is required for invoice payments and can also be used in subscriptions to add additional product charges intop of the Plan amount.
This data is required if the transaction is of type invoice
artno |
string (maxlength 50)
* required
Article number |
description |
string (maxlength 150)
* required
Description about the item |
amount |
integer
* required
The total price of all the items |
qty |
string
* required
The item quantity |
vat |
string
* required
VAT rate, ex 25 (No verification or or calculation is made) |
discount |
string
Discount of the products (No verification or or calculation is made) |
[{"artno": "001", "amount": 1, "description": "user license2", "qty": 1, "vat": 25, "discount": 0}]
Metadata is custom schemaless information that you can choose to send in to Mondido. It can be information about the customer, the product or about campaigns or offers.
The metadata can be used to customize your hosted payment window or sending personalized receipts to your customers in a webhook.
Example of metadata:
{
"products":[
{
"id":"1",
"name":"Nice Shoe",
"price":"100.00",
"qty":"1",
"url":"http://mysite.com/product/1"
}
],
"user":{
"email":"jd@email.com"
}
}
The values like products, 1, name, are optional and can be named freely by the merchant. These will be shown in the transaction lists so you can analyze transactions based on metadata and get a comprehensive understanding of your sales.
One of the most important benefits of using Mondido is the power of the data that you can send with the payment. The more data you send in the more parameters you have to create custom payment flows and analyze transaction data to see what are your best selling items, services and products.
Popular parameters are:All sent in data can be visualized in your dashboard in graphs or charts so that you easy can follow up and analyze your sales. Mondido understands that making relevant and important business decisions starts with knowing your customers habits, likes and preferences. Incorporating metadata into the payment gives you the best chance to optimize your checkout, A/B test and bring intelligence into your business.
By using the API, you can update the Metadata
property of an already processed transaction by passing metadata and process = false.
The submitted data will be merged with existing Metadata for that transaction.
By sending, for example: {"shop_order": {"id": "123123"}}
as Metadata to the update method, you can connect your internal shop order ID to the Mondido admin view.
Liquid is an open-source, Ruby-based template language created by Shopify. It is a well-known framework and is used to load dynamic content on storefronts.
Liquid uses a combination of tags, objects, and filters to load dynamic content. They are used inside the Mondido Hosted Window Payment Form to display information from the payment data and make the template dynamic for each customer, product or transaction.
The official documentation can be found here: https://github.com/Shopify/liquid/wiki/Liquid-for-Designers
You can output information in your metadata to your Hosted Windows Form or in a Receipt Webhook using Liquid syntax. Using the example above, this is the way to output it:
Product name: {{ transaction.metadata['products'].first.name }}
Product quantity: {{ transaction.metadata['products'].first.qty }}
To loop all products:
{%for item in transaction.metadata['products']%}
<li>
Name: {{ item['name'] }},
Price: {{ item['price'] }} {{transaction.amount | upcase }},
Quantity {{ item['qty'] }}
</li>
{% endfor %}
You need to POST the card type name as
card_type
parameter
Default card types that you will have access to are VISA and Mastercard, but the other such as AMEX, JCB and Diners are on separate contracts. Contact support for more information about card types.
visa |
Visa |
mastercard |
MasterCard |
maestro |
Maestro |
electron |
Electron |
debit_mastercard |
Debit MasterCard |
visa_debit |
Visa Debit |
laser |
Laser |
solo |
Solo |
amex |
American Express |
diners |
Diners |
uk_maestro |
UK Maestro |
jcb |
JCB |
ukash_neo |
Ukash NEO |
discover |
Discover |
stored_card |
Stored Card |
sek |
Swedish Krona |
cad |
Canadian Dollar |
cny |
Chinese Yuan |
cop |
Colombian Peso |
czk |
Czech Republic Koruna |
dkk |
Danish Krone |
hkd |
Hong Kong Dollar |
huf |
Hungarian Forint |
isk |
Icelandic Króna |
inr |
Indian Rupee |
ils |
Israeli New Sheqel |
jpy |
Japanese Yen |
kes |
Kenyan Shilling |
krw |
South Korean Won |
kwd |
Kuwaiti Dinar |
lvl |
Latvian Lats |
myr |
Malaysian Ringgit |
mxn |
Mexican Peso |
mad |
Moroccan Dirham |
omr |
Omani Rial |
nzd |
New Zealand Dollar |
nok |
Norwegian Krone |
pab |
Panamanian Balboa |
qar |
Qatari Rial |
rub |
Russian Ruble |
sar |
Saudi Riyal |
sgd |
Singapore Dollar |
zar |
South African Rand |
chf |
Swiss Franc |
thb |
Thai Baht |
ttd |
Trinidad and Tobago Dollar |
aed |
United Arab Emirates Dirham |
gbp |
British Pound Sterling |
usd |
US Dollar |
twd |
New Taiwan Dollar |
vef |
Venezuelan Bolívar |
ron |
Romanian Leu |
try |
Turkish Lira |
eur |
Euro |
uah |
Ukrainian Hryvnia |
pln |
Polish Zloty |
brl |
Brazilian Real |
A webhook is a messaging service that is executed before or after a transaction. You can add one or more webhooks in the Admin console or specify a custom webhook for a transaction. The data that sent varies depending on the context, read more under triggers to see what data to expect.
id |
int
Webhook ID |
created_at |
datetime
Ex. 2014-04-25T10:36:33Z (UTC) |
type |
string
Webhook type, ex: CustomHttp |
response |
object
The http response, ex:
|
http_method |
string
Which method that were used, ex. POST, GET |
string
Sender address in a e-mail Webhook |
|
url |
string
URL in a Custom Http Webhook |
trigger |
string
What event to trigger Webhook, ex. payment_error |
data_format |
string
JSON, form_data or XML |
To show a webhook with ID 1 you need to GET the following url https://api.mondido.com/v1/webhooks/1
To show a list of webhooks you need to GET the following url https://api.mondido.com/v1/webhooks
Webhooks can either be created from a template in the Admin console, or custom attached to each transaction call from the merchant shop. When creating custom Webhooks you define it using JSON described in the examples below:
Sending E-mail:{"trigger":"payment_success","email":"myname@domain.com"}
Custom HTTP:
{"url":"https://mybackend.com/confirmOrderFromMondido","trigger":"payment_success","http_method":"post","data_format":"form_data"}
Or as an Array:
[{"trigger":"payment_success","email":"myname@domain.com"},{"url":"https://mybackend.com/confirmOrderFromMondido","trigger":"payment_success","http_method":"post","data_format":"form_data"}]
trigger can be:
Custom http webhooks will not follow redirects. Make sure to point them directly at your endpoint.
If you are using the https protocol, your SSL certificate must be valid for the webhook to work.
If the webhook encounters a "500 error" from your endpoint it will retry 20 times for approximately 2 days. If it doesn't succeed during this timeframe you will receive a warning in the dashboard. Any other error will create a notification in the dashboard immediately.
NOTE: When notifications are created in the dashboard you will also be receiving an alert email. Opt-out is possible by unchecking "Get Email Alerts" in Settings > Administrators.
file not found
//Fetching the incoming transaction data
$transaction = webhook::get($path);
// Fetches and parses the incoming transaction.
// This example is coming from a WebAPI Post action and uses the ControllerContext for data
var transaction = Webhook.GetWebhook(this.ControllerContext.Request);
Webhooks will retry failures up to 20 times, with an exponential backoff using the formula (retry_count ** 4) + 15 + (rand(30) * (retry_count + 1)) (i.e. 15, 16, 31, 96, 271, ... seconds + a random amount of time).
It will perform 20 retries over approximately 3 days. Assuming you deploy a bug fix within that time, the job will get retried and successfully processed. After 20 times, Webhooks will move that job to the Dead Job queue, and create a notification on the merchant dashboard.Liquid is an open-source, Ruby-based template language created by Shopify. It is a well-known framework and is used to load dynamic content on storefronts.
Liquid uses a combination of tags, objects, and filters to load dynamic content. They are used inside the Mondido Hosted Window Payment Form to display information from the payment data and make the template dynamic for each customer, product or transaction.
The official documentation can be found here: https://github.com/Shopify/liquid/wiki/Liquid-for-Designers
You can output information in your receipt Webhook using Liquid syntax. Using the example above, this is the way to output it:
Product name: {{ transaction.metadata['products'].first.name }}
Product quantity: {{ transaction.metadata['products'].first.qty }} %p
To loop all products:
{%for item in transaction.metadata['products']%}
<li>
Name: {{ item['name'] }},
Price: {{ item['price'] }} {{transaction.amount | upcase }},
Quantity {{ item['qty'] }}
</li>
{% endfor %} %strong For Refunds
You can send a refund confirmation using the After Refund event with the Receipt webhook. There you can output the refunded amount like this:
Hi, here is your refund confirmation for order: {{ transaction.payment_ref }}
Amount: {{ transaction.refunds.last.amount }}
Reason: {{ transaction.refunds.last.reason }}
To create test transactions you need to send in a test card number, and also a CVV code that can simulate different responses
Test card numbers:VISA | 4111111111111111 |
VISA | 4012888888881881 |
VISA | 4222222222222 |
MASTERCARD | 5555555555554444 |
MASTERCARD | 5105105105105100 |
DINERS | 30569309025904 |
DISCOVER | 6011111111111117 |
JCB | 3530111333300000 |
AMEX | 378282246310005 |
When in test mode (test=true) you can use CVV codes to simulate different responses. Anything else will lead to Approved.
200 | ACCEPTED |
201 | DECLINED |
202 | CVV INVALID |
203 | EXPIRED |
When in test mode (test=true) you can use specific expiry dates to simulate failed recurring card payments
0137 | errors.payment.declined |
0237 | errors.card.expired |
We aim to send as many insightful and helpful error messages to you as possible, both in numeric, data and human readable.
{
name: 'errors.card_number.missing',
code: 118,
description: 'Card number is missing'
}
To simulate error messages send this json in your metadata. Use one of the following formats:
{
"mondido_instructions": {
"fail_as_code":"errors.invoice.address_not_found"
}
}
{
"mondido_instructions": {
"fail_as_message":"do not honour"
}
}
101 |
errors.order_id.processed
|
102 |
errors.order_id.invalid
|
103 |
errors.template.not_found
|
104 |
errors.merchant.not_found
|
105 |
errors.merchant_id.missing
|
106 |
errors.hash.missing
|
107 |
errors.hash.invalid
|
108 |
errors.amount.missing
|
109 |
errors.amount.invalid
|
110 |
errors.success_url.missing
|
111 |
errors.success_url.reserved
|
112 |
errors.error_url.missing
|
113 |
errors.error_url.reserved
|
116 |
errors.currency.missing
|
117 |
errors.currency.unsupported
|
118 |
errors.card_number.missing
|
119 |
errors.card_number.invalid
|
120 |
errors.card_type.missing
|
121 |
errors.card_type.unsupported
|
122 |
errors.card_holder.missing
|
123 |
errors.card_holder.invalid
|
124 |
errors.card_cvv.missing
|
125 |
errors.card_cvv.invalid
|
126 |
errors.card_expiry.missing
|
127 |
errors.card_expiry.invalid
|
128 |
errors.transaction.not_found
|
129 |
errors.payment.declined
|
130 |
errors.card.expired
|
131 |
errors.card_currency.unsupported
|
132 |
errors.reason.missing
|
133 |
errors.unexpected
|
134 |
errors.amount.excess
|
135 |
errors.plan.not_found
|
136 |
errors.price.missing
|
137 |
errors.stored_card.not_found
|
138 |
errors.unauthorized
|
139 |
errors.merchant.missing
|
140 |
errors.transaction.missing
|
141 |
errors.subscription.not_found
|
142 |
errors.customer.not_found
|
143 |
errors.customer.missing
|
144 |
errors.generic
|
145 |
errors.payment_ref.invalid
|
146 |
errors.payment_ref.processed
|
147 |
errors.file_type.unsupported
|
148 |
errors.status.invalid
|
149 |
errors.json.malformed
|
150 |
errors.stored_card.not_active
|
151 |
errors.webhook.invalid
|
152 |
errors.transaction_id.missing
|
153 |
errors.transaction.processed
|
154 |
errors.invoice.not_purchable
|
155 |
errors.reservation.not_approved
|
156 |
errors.personal_number.missing
|
157 |
errors.customer_number.missing
|
158 |
errors.zip.missing
|
159 |
errors.first_name.missing
|
160 |
errors.last_name.missing
|
161 |
errors.country_code.missing
|
162 |
errors.address.missing
|
163 |
errors.city.missing
|
164 |
errors.payment_details.missing
|
165 |
errors.customer_ref.invalid
|
166 |
errors.items.missing
|
167 |
errors.stored_card.not_test
|
168 |
errors.stored_card.is_test
|
169 |
errors.mpi.not_approved
|
170 |
errors.subscription.status_invalid
|
171 |
errors.customer_ref.taken
|
172 |
errors.item.amount.missing
|
173 |
errors.item.quantity.missing
|
174 |
errors.item.vat_rate.missing
|
175 |
errors.item.vat_amount.missing
|
176 |
errors.item.id.missing
|
177 |
errors.item.unit_code.missing
|
178 |
errors.item.price.missing
|
179 |
errors.item.line_number.missing
|
180 |
errors.item.description.missing
|
181 |
errors.merchant.invoice.not_configured
|
182 |
errors.authentication.failed
|
183 |
errors.raw_amount.invalid
|
184 |
errors.name.missing
|
185 |
errors.interval_unit.missing
|
186 |
errors.interval_unit.invalid
|
187 |
errors.prices.missing
|
188 |
errors.interval.missing
|
189 |
errors.interval.invalid
|
190 |
errors.password.missing
|
191 |
errors.email.missing
|
192 |
errors.terms.not_accepted
|
193 |
errors.webhook.failed
|
194 |
errors.encrypted_param.missing
|
195 |
errors.prices.invalid
|
196 |
errors.not_found
|
197 |
errors.decryption.failed
|
198 |
errors.vat_amount.missing
|
199 |
errors.reason.too_long
|
200 |
errors.encoding.invalid
|
201 |
errors.name.duplicate
|
202 |
errors.merchant.invalid
|
203 |
errors.amount.mismatch
|
204 |
errors.webhook.not_found
|
205 |
errors.filter_parameter.not_supported
|
206 |
errors.filter_value.not_supported
|
207 |
errors.account.locked
|
208 |
errors.deposit.not_captured
|
209 |
errors.ssn_or_country.missing
|
210 |
errors.avarda_account.missing
|
211 |
errors.missing_or_invalid.ssn
|
212 |
errors.missing_or_too_long.first_name
|
213 |
errors.missing_or_too_long.last_name
|
214 |
errors.invalid.email
|
215 |
errors.missing_or_invalid.phone_number
|
216 |
errors.missing_or_too_long.address_1
|
217 |
errors.missing.address_2
|
218 |
errors.missing_or_too_long.city
|
219 |
errors.missing_or_too_long.zip_code
|
220 |
errors.missing_or_invalid.country_code
|
221 |
errors.missing_or_invalid.amount_error
|
222 |
errors.too_long.transaction_id
|
223 |
errors.must_be_submitted.ssn
|
224 |
errors.invoice.credit_approval_failed
|
225 |
errors.invoice.credit_check
|
226 |
errors.invoice.credit_not_approved
|
227 |
errors.invoice.amount.requested.lower_than_minimum_purchase_amount
|
228 |
errors.invoice.amount.requested.higher_than_maximum_purchase_amount
|
229 |
errors.invoice.amount.maximal_decimal
|
230 |
errors.item.missing_or_too_long.description
|
231 |
errors.item.total_amount_error
|
232 |
errors.item.notes_to_long
|
233 |
errors.missing_or_too_long.order_reference
|
234 |
errors.invoice.account_error
|
235 |
errors.invoice.account_class_error
|
236 |
errors.order.reference.error
|
237 |
errors.invoice.credit_decision_process_failed
|
238 |
errors.helper.ssn.invalid_format
|
239 |
errors.helper.ssn.must_be_submitted
|
240 |
errors.helper.ssn.for_sweden_must_be_12_digits
|
241 |
errors.helper.ssn.address_is_available
|
242 |
errors.helper.ssn.have_a_value
|
243 |
errors.service_not_available
|
244 |
errors.invoice.no_account_exists
|
245 |
errors.invoice.purchase_for_different_country
|
246 |
errors.invoice.payment_terms_error
|
247 |
errors.invoice.account_number_error
|
248 |
errors.invoice.account_was_overdrawn
|
249 |
errors.invoice.execute.against.this.account
|
250 |
errors.password_length
|
251 |
errors.customer_not_found
|
252 |
errors.request.json_error
|
253 |
errors.request.bad_format
|
254 |
errors.items.not_array
|
255 |
errors.items.description_missing
|
256 |
errors.items.notes_missing
|
257 |
errors.items.amount_missing
|
258 |
errors.items.description_too_long
|
259 |
errors.items.amount_not_valid
|
260 |
errors.items.transaction_amount_mismatch
|
261 |
errors.rules_parser.declined
|
262 |
errors.request.json_errors
|