# 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](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications). You'll find information on the [certification process](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/certification-process), our [compliance requirements](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/compliance-requirements), and the available [integration checklists](https://docs.digitalriver.com/digital-river-api/general-resources/standards-and-certifications/integration-checklists).
* You can now [apply store credit](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/applying-a-store-credit) 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](https://docs.digitalriver.com/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/klarna)'s [supported geographies](https://docs.digitalriver.com/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/klarna#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://app.gitbook.com/s/ZrhMyLX5esFYS64lNWVW/digital-river-api-reference-guide/versioning) `2020-12-17`:

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

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

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

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

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

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

## 2020/12/10

We added more [custom styles](https://docs.digitalriver.com/digital-river-api/developer-resources/reference/elements#available-custom-styles) for [styling an element container](https://docs.digitalriver.com/digital-river-api/developer-resources/reference/elements#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](https://docs.digitalriver.com/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/paypal#pay-in-4) to the [PayPal ](https://docs.digitalriver.com/digital-river-api/payments/payment-integrations-1/digitalriver.js/payment-methods/paypal#paypal)payment method.

## 2020/11/17

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

## 2020/11/10

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

## 2020/11/5

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

## 2020/10/13

The [Fees API](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/fees) now supports packaging and battery [fee types](https://docs.digitalriver.com/digital-river-api/product-management/regulatory-fees/managing-regulatory-fees#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](https://docs.digitalriver.com/digital-river-api/developer-resources/reference/elements/tax-identifier-element) 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](https://docs.digitalriver.com/digital-river-api/product-management/creating-and-updating-skus#how-products-are-specified-as-physical-or-digital), we now use the [tax code](https://docs.digitalriver.com/digital-river-api/product-management/creating-and-updating-skus#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://app.gitbook.com/s/ZrhMyLX5esFYS64lNWVW/digital-river-api-reference-guide/versioning)`2020-09-30`, we added the [invoices resource](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/invoices). You can use it to [create an invoice](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/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](https://docs.digitalriver.com/digital-river-api/payments/psd2-and-sca) to [Payment integrations](https://docs.digitalriver.com/digital-river-api/payments/payment-integrations-1).
* We added information on [payment sessions](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/payment-sessions) to [Payment integrations](https://docs.digitalriver.com/digital-river-api/payments/payment-integrations-1).
* We added the following parameters to the `subscriptonInfo` block in [Checkouts ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/checkouts)and [Orders](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/orders).
  * `startTime`
  * `endTime`
* Added new features to the [Digital River Dashboard ](https://docs.digitalriver.com/digital-river-api/administration/dashboard)that allow you to:
  * [Create a test account](https://docs.digitalriver.com/digital-river-api/quick-start-guide#step-1-create-a-test-account)
  * [Update to or rollback from the latest version](https://docs.digitalriver.com/digital-river-api/administration/dashboard/developers/api-keys/updating-your-api-version) of Digital River API
  * [Enabling two-factor authentication](https://docs.digitalriver.com/digital-river-api/administration/dashboard/profile-settings/enabling-two-factor-authentication) for your user account

## 2020/9/24

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

## 2020/9/23

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

## 2020/9/18

We updated the [Drop-in](https://docs.digitalriver.com/digital-river-api/payments/payment-integrations-1/drop-in) documentation.

## 2020/9/16

* You can now update the ship from and subscription information at the item-level in [update checkout](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/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://app.gitbook.com/o/-LqC_Nsz4Z-JxICCsFw3/s/XjCJUJR1jMyLbUs661Yx/) 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://app.gitbook.com/s/ZrhMyLX5esFYS64lNWVW/digital-river-api-reference-guide/versioning#testing-a-version-with-a-single-api-request) without upgrading the key.
* We added the [Country-Specs](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/country-specs) 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](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/providing-address-information#basic-address-information) in the Address object to support ZIP+4 codes.
* You can now create multiple Customer objects with the [same email address](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/providing-address-information#basic-address-information).
* We added the `linkExpiresTime` parameter to the [files](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/files) resource.

## 2020/8/11

You can now access the [Digital River Dashboard documentation](https://docs.digitalriver.com/digital-river-api/administration/dashboard).

## 2020/8/5

* You can now use [DigitalRiver.js](https://docs.digitalriver.com/digital-river-api/developer-resources/reference) to retrieve an array of [available payment methods](https://docs.digitalriver.com/digital-river-api/developer-resources/reference/digitalriver-object#retrieving-available-payment-methods).
* You can now use [DigitalRiver.js](https://docs.digitalriver.com/digital-river-api/developer-resources/reference) to trigger a [return event](https://docs.digitalriver.com/digital-river-api/developer-resources/reference/elements#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://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/customers)or [Checkouts](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/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://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/orders).
* You can now receive an `order.charge.complete` [webhook ](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/webhooks)when an order charge has been captured.
* You can now receive an `order.charge.pending` [webhook ](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/webhooks)when an order charge has been created but not yet processed.
* You can now receive an `order.charge.processing` [webhook ](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/webhooks)when an order charge is processed.
* You can now receive an `order.charge.cancelled` [webhook ](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/webhooks)when Digital River cancels an order charge.
* You can now receive `order.charge.capture.complete` [webhook ](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/webhooks)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://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/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://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/checkouts)and [Orders ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/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](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/providing-address-information#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](https://docs.digitalriver.com/digital-river-api/product-management/creating-and-updating-skus#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](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/building-you-workflows/handling-delayed-payment-methods) (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](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/webhooks) when an order successfully passes Digital River's fraud checks and has a capturable charge.
* You can now create [Checkouts ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/checkouts)with [tax-inclusive shipping choice amounts](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/configuring-taxes#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://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/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](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/webhooks) 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://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/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](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/landed-costs) of your cross-border orders for you in the `dutiesTotal` attribute.

## 2020/3/31

* We now create event [webhooks](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/webhooks) 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://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/payouts), [Payout transactions](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/payouts), [Sales summaries](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/sales-summaries), and [Sales transactions](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/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 ](https://docs.digitalriver.com/digital-river-api/product-management/creating-and-updating-skus#upserting-a-sku)using the [SKUs ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/skus)resource.

## 2020/3/17

* We extended the supported list of [valid US states](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/providing-address-information#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 ](https://docs.digitalriver.com/digital-river-api/order-management/events-and-webhooks-1/webhooks)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](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts/describing-the-items/price-of-an-item#defining-an-aggregate-price) for a quantity of SKUs rather than their unit price.
* [Orders ](https://app.gitbook.com/s/x8fSFzVR3sg0TsNWwwVz/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](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts/creating-checkouts#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](https://docs.digitalriver.com/digital-river-api/integration-options/checkouts) 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://app.gitbook.com/s/ZrhMyLX5esFYS64lNWVW/digital-river-api-reference-guide/versioning) `2020-01-07` is the base version of the Digital River API.
{% endhint %}
