Home > Release Notes > Release Notes - 2018

What's new?

Release Notes

All releases in 2018

3.36 - Released: 18.12.2018

Added:

  • AvailablePaymentMethodsResponse now includes dueDate.
  • When the merchant makes an Available call, and the available payment methods include the Campaign Invoice, the response also includes the Due Date (date on which the payment must be made) for each campaign. This is in paymentMethods.campaign.dueDate.
  • eCom now supports the risk provider Mercury. This is relevant for merchants in Belgium.
  • No changes to API calls.
  • Support for masked customer details in Customer Lookup response.
  • In certain countries where the data protection law requires it, the User Profile returned for a Customer Lookup call will include maskedEmail, maskedFirstName, maskedLastName and maskedMobileNumber instead of unmasked parameters. The values will be partially replaced with asterisks.

Changed:

  • Previously, Authorize or Refund calls with an invalid campaignNumber passed without an error (and were treated as regular 14-Day Invoices). Now, "400.174", "Campaign profile not found." will be thrown when the campaign does not exist, and "400.175", "Campaign is not active." will be thrown when the campaign is currently not active.
  • Note: campaignNumber is an optional parameter and used only with Campaign Invoices. Errors 400.174 and 400.175 are only thrown if a campaignNumber is provided but invalid. If the parameter is not provided at all, the API call is treated as a regular 14-Day Invoice.
  • Direct Debit is disabled for merchants in Sweden.
  • The response to an Available call from a Swedish merchant will never include directDebit.true, regardless of Core settings.
  • Fixed a bug with customerNumber in an API response.
  • Previously, in certain cases where the merchant provided a customerNumber in the call, eCom would replace it with a different auto-generated customerNumber in the response. This is now fixed: if the merchant specified a customerNumber, the same value will be used in the response as well.
  • Previously, a Full Capture worked only if the body of the request was empty.
  • Now, it also works if the body contains orderItems=null (and additional parameters, such as an invoiceNumber).
  • This was done to support the requirements of certain risk providers.
  • Previously, eCom accepted language codes for Sweden as "SE" and for Denmark as "DK".
  • Now, eCom also accepts "SV" for Sweden and "DA" for Denmark, as per ISO standards.
  • "SE" and "DK" language codes are obsolete and will be deprecated in a future eCom version.

Fixed:

  • Previously, sending a request with an invalid URL resulted in a 500 "ArgumentException" error. Now, the merchant will get a 404 "Not Found" error.
  • Previously, sending a string value instead of an integer in a request would return 400.000 "Unknown error." Now, this returns the error 400.004 "Value format is incorrect".
  • Previously, when the postal code length was more than 10 characters, eCom would return 500 "System error". Now, this returns the error 400.005 "A string value exceeds the maximum length of 10."
  • Previously, merchants from Belgium got the error 200 "Rejected" if the risk provider Mercury failed with an internal error. Now, this results in the error 500 "Internal error".

3.35 - Released: 22.11.2018

Added:

  • Technical changes

3.34 - Released: 07.11.2018

Changed:

  • "Read More" links for Flex and Fix methods at checkout are now country- and language-specific. Previously, terms and conditions for Part Payment methods would be displayed in the language matching the merchant's country (as per the API key). Now, eCom also looks at the Conversation Language provided for that customer. If the Terms and Conditions are available in that language, the "Read More" link will open the correct translation. If that language is not available, the merchant country's default language is used instead (as previously).

Fixed:

  • Fixed a bug where Authorize calls were sometimes handled incorrectly if unnecessary payment method details were provided. Previously, if an Authorize call with payment.Type = Invoice was sent with InstallmentProfileNo specified, eCom would treat it as payment.Type = Installment (same for AccountProfileNo, etc.). Now, the extra parameters are ignored by eCom if they are not consistent with the payment type.

3.33 - Released: 22.10.2018

Added:

  • Technical changes

3.32 - Released: 18.10.2018

Added:

  • When using the Customer Lookup functionality, the user profiles and addresses returned by AfterPay are now ordered by most recently updated. Merchants and integrators are encouraged to select the first returned user profile (if multiple profiles are returned), or the first returned address (if multiple addresses are returned per user profile) - the most up-to-date one is most likely to be correct.

3.31 - Released: 08.10.2018

Changed:

  • The description of the customerIndividualScore field was updated for clarification: accepts a number from -10000 to 10000 or a single case-insensitive letter from 'a' to 'z'.
  • The description of the birthDate field was updated: the suggested format is 'YYYY-MM-DD'.

Fixed:

  • Fixed an issue with AdditionalInfo fields. If additional information is provided in the body of an Available call, and then equivalent data is also provided in the Authorize call, then the later overwrites the earlier information correctly.
  • Fixed an error where a Refund call would sometimes not reach the back-end, despite getting a Successful response from eCom
  • Fixed logging timestamps for Refund calls.

3.30 - Released: 27.09.2018

Fixed:

  • eCom now returns the error 400.002 "Value is required" if Installment profile number is missing

3.29 - Released: 05.09.2018

Added:

  • eCom now supports custom payment method descriptions as returned by Available. The following can be customized:
  • Payment method title
  • Payment method tagline (short description)
  • Payment method logo

Changed:

  • eCom now accepts a Cancellation call with an empty body, or where **CancellationDetails **is null, and treats it as a full order cancellation.

Fixed:

  • eCom now returns the error 400.002 "Value is required" if a required enum element is missing, and 400.003 "Value out of range" if the value is incorrect.
  • Fixed a bug where under certain circumstances, partial captures would not update the balance of a reservation (leading to the total Capture amount potentially exceeding the Authorize amount).
  • Fixed a bug where an Authorize call with no order items would return a Reservation ID consisting of all zeroes. Such a call now returns a valid Reservation ID, but fails on a full Capture with an empty body. (If no order items are included in the Authorize call, they must be included in the Capture call.)
  • Fixed a bug where new installment profiles for existing clients were not showing up correctly, if they used previously existing profile numbers.

3.28 - Released: 23.08.2018

Added:

  • The Authorize call now validates the minimum length of Direct Debit information (BankAccount and BankCode).
  • For an Available call, if payment type "Account" (Flexible Part Payment) is available, eCom now returns the minimum payment amount along with other relevant information. The following information about installments is returned: installment profile number, order amount, startup fee, monthly fee, interest rate, and the URL of the full terms & conditions.
  • eCom now returns transactionReference info in Order Management calls. This is a unique identifier of individual transactions within the same order. It maps to transaction IDs in external Payment System Provider ledgers.

Fixed:

  • eCom application logs now correctly store all information about API calls and responses.
  • Spelling mistake in Available Payment Method response has been fixed
  • eCom now returns the error 400.004 "Value format is incorrect" if a comma is used as the decimal separator.
  • eCom now returns the error 400.156 "The country code is not valid for this customer" if the country code in the delivery address is invalid.
  • eCom now returns the error 200.908 "Bank details invalid" for invalid Danish bank account numbers.
  • eCom now returns the error 400.002 "Value is required" if a required parameter value is not specified.
  • When eCom returns an error message for a missing order amount in a full Capture, the error message now correctly states the **fieldReference **value (telling you which parameter is missing).
  • eCom now supports IPv6.

3.27 - Released: 13.07.2018

Added:

  • Developer Sandbox now has a mock Risk Engine attached. This Risk Engine is currently configured to approve transactions based on triggers in customer email addresses.

Changed:

  • eCom's handling of Campaign Invoices improved: if different campaign numbers are provided at different stages of an order, the newest one is sent to the backend system. If a campaign number is not provided in an API call, but one was provided earlier for this order, the most recently provided campaign number is sent to the backend system.

Fixed:

  • eCom now correctly forwards Profile Tracking IDs (used for fraud prevention) to the backend system.
  • eCom now correctly handles Risk Engine responses that include updated customer details (Customer Lookup).
  • eCom now returns correct error codes for too short bank account number and bank SWIFT or BIC code (400.006). Previously this returned the generic code 400.000.

3.26 - Released: 27.06.2018

Changed:

  • Database field alignments with the master system.
  • The description of the parameter CustomerCardSince was updated to clarify its meaning: the date on which the loyalty card was issued to the customer.
  • Message queue configured to prefetch 1 message at a time. This was done to improve message queue stability.
  • If an order in the Netherlands has a delivery address different from the customer's billing address, the IP address and birth date provided in the delivery info are not validated now. This info may be copied from the customer object, as the Dutch Core required both Customer and deliveryCustomer data to be provided.
  • Birthdate is now a required field for customers in Switzerland, and optional for customers in Germany. Previously, it was required in Germany and optional in Switzerland.

Fixed:

  • Broken request body now returns the correct error 400.001
  • Previously, birthDate was required for B2B customers (who are legal entities and do not have a birth date). This is now optional.

3.25 - Released: 14.06.2018

Changed:

  • Changed error code mapping to respond with 'Contract already exists' instead of 'Negative customer score' where appropriate.
  • Changed the response structure for ApplyForAccountCredit and AddEvent, to allow responses with value 200for risk check messages.
  • Added SSN validation for Nordics countries for the ApplyForAccountCredit endpoint.

Fixed:

  • Fixed a bug where successful calls had no outcome specified.

3.24 - Released: 12.06.2018

Added:

  • Returning a 'Read More' link with a Part Payment method in Available Payment Methods response. This leads to a customer-facing explanation of the payment method.
  • Added functionality to return a Customer object with the Lookup feature.
  • Work on the shadow environment to improve release quality verification.

Changed:

  • Improved validation rules for ValidateBankAccount endpoint.

Fixed:

  • Fixed a bug where IP Address was validated even if it wasn't present in the request.
  • Returning a correct response message in case of a full refund, where a partial refund is done beforehand.
  • Fixed a bug where an Authorize payment call failed when DirectDebit information was not provided. As a prerequisite, the customer had a contract already in place with AfterPay.
  • Fixed a bug where an Authorize payment call failed when multiple threads were processing at the same time.

3.23 - Released: 29.05.2018

Added:

  • Added more flexibility to Available Payment Methods calls, which now allow a successful response based on the basket value only.
  • Added minimum-to-pay information to the Available Payment Methods response.

Changed:

  • Database field alignments with the master system

Fixed:

  • Fixed a bug where the provided postal code was not added to the external request.
  • Fixed account profile mappings for different markets.

3.22 - Released: 08.05.2018

Added:

  • Type field added to orderItem, to distinguish between shipping fees, discounts, digital goods, and regular order items.
  • Adding error messages in Capture when an order is not found.
  • Adding master system support for conversationLanguage.
  • Added type and VAT amount fields to GetOrderResponse.

Changed:

  • Database field updates to align with the master system.
  • Risk engine response alignment for Netherlands.
  • Mapping Risk Provider responses for Customer Limit Reached to an Afterpay error code.
  • Improved validation for IBAN and SWIFT validators in eCom ValidateBankAccount.
  • Removed an unnecessary field in the POCO classes.
  • Aligned actionCodes for responses.
  • Removed discount amount from order and order line objects, as they are not necessary after the introduction of Order Item Types.

Fixed:

  • Fixed a bug where the customer number wasn't provided in the response.
  • Fixed a bug where a correct response wasn't provided by the eCom API.
  • Fixed a bug where requests started failing due to order item type not being specified.
  • Fixed a bug where an incorrect response was provided after a failure in an external service.

3.21 - Released: 19.04.2018

Added:

  • customerAccountId has been added to CheckoutCustomer table

Changed:

  • Salutation has been changed to optional for DE, AT, CH

Fixed:

  • Incorrect text of 400.102 message has been fixed

3.20 - Released: 22.03.2018

Changed:

  • Response for the AvailablePaymentMethods has been changed

3.19 - Released: 22.03.2018

Added:

  • Validation for the **bankaccount **number in Authorize for DE and AT markets
  • New caching layer for eCommerce
  • Added validation to OrderNumber field not to allow spaces at the end
  • customerNumber has been added to the CustomerLookup
  • "skipExternalSearch" input parameter has been added to the Customer lookup
  • X-Idempotency-Key added to the header
  • MerchantId has been added to Void
  • MerchantId has been added to Refund
  • customerAccountId has been added to CheckoutCustomer and DeliveryCustomer

Changed:

  • Response for the AvailablePaymentMethods.Installment has been changed
  • Validation ErrorCode has been removed, as it replaced with ResponseCodes constants
  • Customer lookup has been changed to optional in Available Payment Methods and Authorize requests
  • The length of DeliveryPostalPlace has been changed to 100
  • Customer object for the Available payment methods has been changed as optional
  • Customer not found now returns 200.101 instead of 400.099
  • Customer below minimum age will now return 200.001
  • Support Customer lookup without postal code condition has been changed for Finland
  • Allow authorization without email for a Finnish Fasttrack
  • Allow sending authorization request with amount instead of order lines

- "Address not found" message has been replaced with "Customer not found"

Fixed:

  • Delivery customer Email is no longer mandatory
  • **OrderNotFound **has been replaced with a **VoidNotFound **message
  • Error when sending in invalid Birthdate
  • MQError message has been replaced with the "An error has occurred" message
  • Response for the Authorize payment method has been fixed
  • Error message has been changed for missing salutation in Authorize payment method
  • Error message for missing DeliveryCustomer.Firstname
  • "Cannot deserialize the current JSON" message has been changed to "Cannot deserialize the current JSON. Please compare the JSON implementation with Afterpay documentation."
  • 200.901 errors structure has been changed to look like business errors (400.xxx)

3.18 - Released: 07.03.2018

Changed:

  • Validation ErrorCode has been removed, as it replaced with ResponseCodes constants
  • Support Customer lookup without postal code condition has been changed for Finland
  • Allow authorization without email for a Finnish Fasttrack
  • Prefixes and white-spaces will be now removed from numbers for Norway

3.17 - Released: 19.02.2018

Added:

Mock AFS riskprovider has been added

3.16 - Released: 10.01.2018

Added:

  • Client setting has been added to enable Customer lookup in Available Payment Methods and Authorize requests

Changed:

  • PostalCode length has been changed to 10
  • Now returning Installment business errors instead of Account business errors
  • Installment related error messages and codes have been unified, 400.144 error code is now returned only for Account payment type
  • Now returning "The grand total of gross unit prices must be positive." error message for error 400.124
  • Customer lookup has been changed to optional in Available Payment Methods and Authorize requests
  • The BankCode and BankAccont are trimmed
  • Now MaxDownPaymentMonths is used, if number of installments is not present in Authorize

Fixed:

  • Mapping of customerNumber has been fixed
  • Mappings for ChannelType has been corrected
  • Using installment plans fixed in Authorize