# 2020

## 2020/12/30

* We now offer a [PHP SDK](https://github.com/DigitalRiver/digital-river-php) to help you integrate the Digital River API into your commerce application. Before building your integration, we recommend reviewing our [standards and certifications](/digital-river-api/general-resources/standards-and-certifications.md). You'll find information on the [certification process](/digital-river-api/general-resources/standards-and-certifications/certification-process.md), our [compliance requirements](/digital-river-api/general-resources/standards-and-certifications/compliance-requirements.md), and the available [integration checklists](/digital-river-api/general-resources/standards-and-certifications/integration-checklists.md).
* You can now [apply store credit](/digital-river-api/integration-options/checkouts/creating-checkouts/applying-a-store-credit.md) to non-recurring transactions. Store credit allows merchants to offer customers a store credit as a payment type at checkout.

## 2020/12/28

We updated [Klarna](/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/klarna.md)'s [supported geographies](/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/klarna.md#supported-geographies) to show the minimum and maximum order amount and the payment method type.

## 2020/12/17

{% hint style="warning" %}
**Breaking changes**

We made the following changes in the [version](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/versioning) `2020-12-17`:

* You can no longer set the `visible` boolean parameter in a [create](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/fees#fees-1) or [update a fee](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/fees#fees-id-1) request. By default, all [fees are now visible](/digital-river-api/product-management/regulatory-fees/managing-regulatory-fees.md#displaying-fees) to customers.

* [Landed cost](/digital-river-api/integration-options/checkouts/creating-checkouts/landed-costs.md) taxes are no longer included in the `totalTax` of an order. They are now returned in [`totalImporterTax`](/digital-river-api/integration-options/checkouts/creating-checkouts/landed-costs.md#order-level-attributes).
  {% endhint %}

* We now return several attributes at the [order](/digital-river-api/integration-options/checkouts/creating-checkouts/landed-costs.md#order-level-attributes) and [item levels](/digital-river-api/integration-options/checkouts/creating-checkouts/landed-costs.md#item-level-attributes) representing the [landed cost](/digital-river-api/integration-options/checkouts/creating-checkouts/landed-costs.md) on an order. We now also provide the ability to [refund importer taxes](/digital-river-api/order-management/returns-and-refunds-1/refunds/issuing-refunds.md#specifying-the-type-of-refund).

* We now return [fee details at the item level](/digital-river-api/integration-options/checkouts/creating-checkouts/accessing-regulatory-fee-information.md#getting-information-on-individual-fees).

* We added the best practices for using the Digital River API, which includes [API keys](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/api-structure#api-keys), [versioning](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/versioning), [versioning and API keys](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/best-practices#versioning-and-keys), [robustness](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/best-practices#robustness), and [fraud detection](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/best-practices#fraud-detection).

* We made the following changes to the [Digital River Dashboard](/digital-river-api/administration/dashboard.md):
  * You can apply a different [API version](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/api-structure#api-keys) to each individual key ([standard ](/digital-river-api/administration/dashboard/developers/api-keys.md#standard-keys)and [restricted keys](/digital-river-api/administration/dashboard/developers/api-keys/creating-a-restricted-key.md)), or you can[ update the version on all keys](/digital-river-api/administration/dashboard/developers/api-keys/updating-your-api-version.md) simultaneously in the current mode (test or production).
  * You can now [rotate a webhook's secret](/digital-river-api/administration/dashboard/developers/webhooks/rotating-a-webhooks-secret.md).
  * Changed the Orders section to [Order management](/digital-river-api/administration/dashboard/order-management.md).
  * Changed the All orders topic to [Orders](/digital-river-api/administration/dashboard/order-management/orders.md).
  * The [Order details page](/digital-river-api/administration/dashboard/order-management/orders/viewing-the-order-details.md) now displays the item discount, purchase amount, and payment and billing details.
  * Added [Checkouts](/digital-river-api/administration/dashboard/order-management/checkouts.md) to the [Order management](/digital-river-api/administration/dashboard/order-management.md) section.

## 2020/12/10

We added more [custom styles](/digital-river-api/developer-resources/reference/elements.md#available-custom-styles) for [styling an element container](/digital-river-api/developer-resources/reference/elements.md#styling-an-element-container) in [DigitalRiver.js](https://github.com/DigitalRiver/GitBook/blob/Digital-River-API-latest/payments/payment-integrations-1/digitalriver.js).

## 2020/11/19

We added support for [Pay in 4](/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/paypal.md#pay-in-4) to the [PayPal ](/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/paypal.md#paypal)payment method.

## 2020/11/17

When you [delete a SKU](/digital-river-api/administration/dashboard/catalog/skus/deleting-a-sku.md), we now [delete any Fee objects](/digital-river-api/product-management/regulatory-fees/managing-regulatory-fees.md#deleting-a-fee) associated with that SKU.

## 2020/11/10

We added information on where you can find [error codes](/digital-river-api/developer-resources/reference/error-types-codes-and-objects.md#error-codes) for DigitalRiver.js.

## 2020/11/5

As part of the [PSD2 Strong Customer Authentication (SCA)](/digital-river-api/payments/psd2-and-sca.md) initiative, payment processors require extra information when processing [merchant-initiated](/digital-river-api/integration-options/checkouts/creating-checkouts/initiating-a-charge.md#merchant-initiated) credit card transactions. To ensure that you adhere to the new mandate, you can now use [billing agreements](/digital-river-api/integration-options/checkouts/subscriptions/subscription-information-1.md#billing-agreement-identifier).

## 2020/10/13

The [Fees API](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/fees) now supports packaging and battery [fee types](/digital-river-api/product-management/regulatory-fees/managing-regulatory-fees.md#type). Additionally, the attributes that were previously represented as metadata have been deprecated. These data points are now first-class attributes.

## 2020/10/12

We added information on the [tax identifier element](/digital-river-api/developer-resources/reference/elements/tax-identifier-element.md) to [DigitalRiver.js](https://github.com/DigitalRiver/GitBook/blob/Digital-River-API/payments/payment-integrations-1/digitalriver.js).

## 2020/10/6

When [classifying a product as digital or physical](/digital-river-api/product-management/creating-and-updating-skus.md#how-products-are-specified-as-physical-or-digital), we now use the [tax code](/digital-river-api/product-management/creating-and-updating-skus.md#tax-code) you specify in the SKU.

## 2020/10/1

We added support for Union Pay to [Credit Cards](https://github.com/DigitalRiver/GitBook/blob/Digital-River-API-latest/general-resources/broken-reference/README.md).

## 2020/09/30

{% hint style="warning" %}
**Breaking change**

For [version ](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/versioning)`2020-09-30`, we added the [invoices resource](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/invoices). You can use it to [create an invoice](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/invoices#invoices-1) when billing a customer, charging a customer for a recurring event, or providing information in response to a fulfillment.
{% endhint %}

* We added support for [PSD2 and SCA](/digital-river-api/payments/psd2-and-sca.md) to [Payment integrations](/digital-river-api/payments/payment-integrations-1.md).
* We added information on [payment sessions](/digital-river-api/integration-options/checkouts/creating-checkouts/payment-sessions.md) to [Payment integrations](/digital-river-api/payments/payment-integrations-1.md).
* We added the following parameters to the `subscriptonInfo` block in [Checkouts ](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/checkouts)and [Orders](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/orders).
  * `startTime`
  * `endTime`
* Added new features to the [Digital River Dashboard ](/digital-river-api/administration/dashboard.md)that allow you to:
  * [Create a test account](/digital-river-api/quick-start-guide.md#step-1-create-a-test-account)
  * [Update to or rollback from the latest version](/digital-river-api/administration/dashboard/developers/api-keys/updating-your-api-version.md) of Digital River API
  * [Enabling two-factor authentication](/digital-river-api/administration/dashboard/profile-settings/enabling-two-factor-authentication.md) for your user account

## 2020/9/24

We added support for the [Korea – PayCo](/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/payco.md) payment method.

## 2020/9/23

We added support for the [Klarna ](/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/klarna.md)payment method.

## 2020/9/18

We updated the [Drop-in](/digital-river-api/payments/payment-integrations-1/drop-in.md) documentation.

## 2020/9/16

* You can now update the ship from and subscription information at the item-level in [update checkout](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/checkouts#checkouts-1) requests.
* `POST` and `GET` Checkout requests now return a unique item-level identifier.

## 2020/9/9

* Updated the [Digital River App for Salesforce B2B Commerce](https://docs.digitalriver.com/salesforce-b2b/) documentation.
* We added Spark from Tryzens for the Salesforce Commerce Cloud to our [Connectors](https://docs.digitalriver.com/partner-integrations/).

## 2020/8/20

* You can now [test a single API request](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/versioning#testing-a-version-with-a-single-api-request) without upgrading the key.
* We added the [Country-Specs](/digital-river-api/integration-options/checkouts/creating-checkouts/country-specs.md) resource to help you determine whether address and tax identifier information is required and also whether it is properly formatted.
* You can now use the [postalCode parameter](/digital-river-api/integration-options/checkouts/creating-checkouts/providing-address-information.md#basic-address-information) in the Address object to support ZIP+4 codes.
* You can now create multiple Customer objects with the [same email address](/digital-river-api/integration-options/checkouts/creating-checkouts/providing-address-information.md#basic-address-information).
* We added the `linkExpiresTime` parameter to the [files](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/files) resource.

## 2020/8/11

You can now access the [Digital River Dashboard documentation](/digital-river-api/administration/dashboard.md).

## 2020/8/5

* You can now use [DigitalRiver.js](/digital-river-api/developer-resources/reference.md) to retrieve an array of [available payment methods](/digital-river-api/developer-resources/reference/digitalriver-object.md#retrieving-available-payment-methods).
* You can now use [DigitalRiver.js](/digital-river-api/developer-resources/reference.md) to trigger a [return event](/digital-river-api/developer-resources/reference/elements.md#return) when a customer presses the Return key while the input field has focus.

## 2020/6/16

* You can now create checkouts and orders containing duplicate SKU items with different prices and metadata.
* You can now only request refunds for amounts or percentages less than or equal to those available to refund on an order, order item, invoice, or invoice item.
* Creating multiple tax identifiers of the same type for [Customers ](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/customers)or [Checkouts](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/checkouts) is no longer possible.
* We can not use any tax identifiers you pass us on the checkout, rather than any tax identifiers associated with the customer.
* You can now retry failed order refunds by requesting a new refund when a refund fails.
* You can now only request refunds for amounts or percentages less than, or equal to, those available to refund on an order or order item.
* We now automatically retry any failed order charge captures for up to 30 days with exponential backoff.

## 2020/6/3

* We made it easier to see the amounts available to refund for an order by adding `availableToRefundAmount` attributes to [Orders](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/orders).
* You can now receive an `order.charge.complete` [webhook ](/digital-river-api/order-management/events-and-webhooks-1/webhooks.md)when an order charge has been captured.
* You can now receive an `order.charge.pending` [webhook ](/digital-river-api/order-management/events-and-webhooks-1/webhooks.md)when an order charge has been created but not yet processed.
* You can now receive an `order.charge.processing` [webhook ](/digital-river-api/order-management/events-and-webhooks-1/webhooks.md)when an order charge is processed.
* You can now receive an `order.charge.cancelled` [webhook ](/digital-river-api/order-management/events-and-webhooks-1/webhooks.md)when Digital River cancels an order charge.
* You can now receive `order.charge.capture.complete` [webhook ](/digital-river-api/order-management/events-and-webhooks-1/webhooks.md)when an order charge capture is complete for all payment methods (including PayPal and SEPA Direct Debit).

## 2020/5/26

You can now search for [Orders](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/orders) using the following filters: submitted timestamp, accepted timestamp, complete timestamp, `browserIp`, `chargeType`, `subscriptionId`, and `refundedAmount`.

## 2020/5/19

* You can now create [Checkouts ](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/checkouts)and [Orders ](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/orders)with a `phoneticName` parameter. The `phoneticName` parameter allows customer service representatives and couriers who need this information to pronounce a customer's name correctly in Japan. See [Japanese phonetics and divisions](/digital-river-api/integration-options/checkouts/creating-checkouts/providing-address-information.md#japanese-phonetics-and-divisions) for more information.
* You can now create Checkouts and Orders with a `division` parameter. The `division` parameter allows customers to provide their division within an organization when they provide their business addresses in Japan.

## 2020/5/5

* You can now [create SKUs](/digital-river-api/product-management/creating-and-updating-skus.md#creating-and-updating-a-sku) with `description`, `image`, and `url` parameters to power a first-class user experience.
* You can now create Refunds for [delayed repayment methods](/digital-river-api/integration-options/checkouts/building-you-workflows/handling-delayed-payment-methods.md) (such as Wire Transfer and bPay) that require the handling of additional customer information.
* We will inform you if a tax identifier is required and is missing for customers with multiple tax identifiers and apply those tax identifiers to the order.

## 2020/4/21

* You can now receive an `order.accepted` [webhook](/digital-river-api/order-management/events-and-webhooks-1/webhooks.md) when an order successfully passes Digital River's fraud checks and has a capturable charge.
* You can now create [Checkouts ](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/checkouts)with [tax-inclusive shipping choice amounts](/digital-river-api/integration-options/checkouts/creating-checkouts/configuring-taxes.md#setting-tax-inclusive-prices).
* You can now create Checkout items with a new `freeTrial` parameter.
* You can now receive `order.charge.cancel.pending` and `order.charge.cancel.pending` information, and `order.charge.cancel.failed` and `order.charge.cancel.complete` events and webhooks.
* We made it easier to see the amounts available to refund for an order by adding the `availableToRefund` amount attribute to [Orders](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/orders).

## 2020/4/7

* You can now create Checkout items with an `aggregatePrice` parameter that represents the aggregate (or quantity) price of that line item.
* You can now receive a `sales_transaction.created` [webhook](/digital-river-api/order-management/events-and-webhooks-1/webhooks.md) as soon as we create a (costed) sales transaction.
* You can now receive an `order.chargeback` webhook when a chargeback occurs for an order.
* We extended the [Orders ](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/orders)endpoint so you can determine if an order item was for a subscription renewal.
* We made it easier to see if an Order has been fulfilled and its charge has been captured by adding a `complete` state to the state enumeration.
* You now have the option for Digital River to calculate the [landed costs](/digital-river-api/integration-options/checkouts/creating-checkouts/landed-costs.md) of your cross-border orders for you in the `dutiesTotal` attribute.

## 2020/3/31

* We now create event [webhooks](/digital-river-api/order-management/events-and-webhooks-1/webhooks.md) for all events supported in production in test mode.
* We now create refunds in a `pending` state and publish a `refund.pending` event. We removed the `refund.created` event.
* With the new [Payouts](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/payouts), [Payout transactions](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/payouts), [Sales summaries](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/sales-summaries), and [Sales transactions](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/sales-transactions) API resources, you can now view detailed information about your costed sales and Digital River's payouts.

## 2020/3/24

* Checkout `sourceId` now uses the default source identifier of the customer.
* We will return tax rates as simple amounts rather than percentages (0.067, not 6.75).
* You can now receive `order.charge.capture.pending`, `order.charge.refund.pending`, `order.charge.refund.complete`, and `refund.complete event` webhooks. We no longer support the `order.charge.capture.created`, `order.charge.refund.created`, `order.charge.refund.completed`, and `refund.completed` webhooks.
* Renamed `order.charge.created` to `order.charge.pending` and `order.charge.capture.completed` to `order.charge.capture.complete`.
* We extended [Checkouts ](https://www.digitalriver.com/docs/digital-river-api-reference/#tag/Checkouts)and [Orders ](https://www.digitalriver.com/docs/digital-river-api-reference/#tag/Orders)to return a `tax.amount` for shipping choices.

## 2020/3/20

In live mode, we will attempt to deliver your webhooks for up to three days with an exponential backoff; in test mode, we will retry four times over a couple of hours.

## 2020/3/19

You can now sync your SKU records with Digital River more easily by [upserting SKUs ](/digital-river-api/product-management/creating-and-updating-skus.md#upserting-a-sku)using the [SKUs ](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/skus)resource.

## 2020/3/17

* We extended the supported list of [valid US states](/digital-river-api/integration-options/checkouts/creating-checkouts/providing-address-information.md#us-states-and-territories) to include territories such as Guam (GU).
* You can now retrieve a source with the new `clientSecret` attribute.

## 2020/3/10

We have changed item-level amounts to represent the amount to pay for an item, including any item-level discounts.

## 2020/2/14

You can now create Checkouts with `shippingChoice` parameters with zero-dollar amounts.

## 2020/1/31

* Orders now have a `cancelledAmount` attribute, which represents the total charge amount cancelled.
* You can now receive an `order.charge.refund.failed` [webhook ](/digital-river-api/order-management/events-and-webhooks-1/webhooks.md)when a charge refund attempt fails for your customer's order.

## 2020/1/28

We made it easier to refund items by not requiring you to specify a refund quantity unless you want it to differ from the ordered quantity.

## 2020/1/15

* You can now create an Order without creating a Checkout by passing a Checkout request rather than a reference to an existing Checkout at order creation.
* You can now create Checkouts with an `aggregatePrice` parameter that represents the [aggregate price](/digital-river-api/integration-options/checkouts/creating-checkouts/describing-the-items/price-of-an-item.md#defining-an-aggregate-price) for a quantity of SKUs rather than their unit price.
* [Orders ](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/orders)now have a `capturedAmount` attribute, which represents the total charge amount captured.
* You can now provide an `applicationId` parameter when you [create a checkout](/digital-river-api/integration-options/checkouts/creating-checkouts.md#creating-and-updating-the-checkout). You can use this attribute to segment your orders by application source.
* You can now specify the ship from country or address in the [Checkout](/digital-river-api/integration-options/checkouts.md) with the new `shipFrom` parameter.
* We have now added a `sellingEntity` attribute to checkouts and orders that you can use to display Digital River's Terms & Conditions and policies to your customers.
* Digital River now validates the following addresses:

  * Checkout and Customer `shipTo` and `shipping` addresses
  * Source `owner` addresses

  This ensures the customer provides all address parameters required to successfully ship physical goods anywhere in the world, create a payment charge, comply with local invoicing regulations, and accurately calculate local taxes.
* Improved availability returns.
* When you create an order, We will return standardized card decline codes, and the card networks will decline the charges.
* We have now added `price` and `aggregatePrice` attributes to checkouts and orders.

## 2020/01/07

{% hint style="warning" %}
**Breaking change**

[Version](https://docs.digitalriver.com/digital-river-api-reference/digital-river-api-reference-guide/versioning) `2020-01-07` is the base version of the Digital River API.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digitalriver.com/digital-river-api/general-resources/release-notes/2020.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
