# Customer portal

This section's checklist items and standards cover building a customer portal in the storefront's user interface. This customer portal should allow customers to store default shipping addresses, save payment methods for future use, review orders, and access links to their invoices and credit memos.

## Integration checklist

Click any checklist item to see more detail on how to meet the integration standard.

* [ ] [Using the Events, Files, and FileLinks APIs, do you provide a method for Digital River-generated invoices to be emailed to customers or retrieved through your storefront UI?](#provide-a-method-for-customers-to-access-invoices-and-credit-memos)
* [ ] [Outside of a typical checkout flow, does your integration allow customers to use their account portal to save a payment method for future use?](#allow-customers-to-use-their-account-portal-to-save-payment-methods)

## Integration standards

These integration standards relate to building customer account portals:

### Provide order invoice and credit memo notifications and download access

Your integration must allow customers to [access an order's invoice and credit memo files](/digital-river-api/order-management/creating-and-updating-an-order.md#tax-invoices-and-credit-memos). Once Digital River generates these files, we notify you by sending either the `order.invoice.created` or `order.credit_memo.created` event. You can use these events to create publicly accessible [links ](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/file-links/file-link-basics)to the documents and then send the links to the customer through email, text message, or another method of your choice.

Beyond these notifications, you must also provide customers access to the file links so they can download them through their account or order detail pages.

### Allow customers to use their account portal to save payment methods

Your integration's payment workflows should [allow customers to use their account portal to save a payment method](/digital-river-api/integration-options/checkouts/building-you-workflows.md#saving-a-credit-card-for-future-use). When setting up this account management flow, the key step is configuring [Drop-in payments](/digital-river-api/payments/payment-integrations-1/drop-in.md) to [manage payment methods](/digital-river-api/integration-options/checkouts/building-you-workflows.md#account-management-flows). If configured correctly, Drop-in renders the payment method entry form. Once the customer supplies payment information and Digital River returns a [chargeable payment source](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/charges/charge-basics), you can use its identifier to [attach the source to the customer](/digital-river-api/payments/payment-sources/using-the-source-identifier.md#attaching-sources-to-customers).

## API interfaces

| Documentation                                                                                                    | Direct API                                                                                    | PHP SDK                                                                                          |
| ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| [Files](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/files/file-basics)                  | [Files](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/files)           | [Files](https://github.com/DigitalRiver/digital-river-php/blob/main/docs/Model/File.md)          |
| [File-links](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/file-links/file-link-basics)   | [File-links](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/file-links) | [File-links](https://github.com/DigitalRiver/digital-river-php/blob/main/docs/Model/FileLink.md) |
| [Orders](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/orders/order-basics)               | [Orders](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/orders)         | [Orders](https://github.com/DigitalRiver/digital-river-php/blob/main/docs/Model/Order.md)        |
| [DigitalRiver.js](/digital-river-api/developer-resources/reference.md)                                           |                                                                                               |                                                                                                  |
| [Drop-in payments](/digital-river-api/payments/payment-integrations-1/drop-in.md)                                |                                                                                               |                                                                                                  |
| [Customers](/digital-river-api/customer-management/customers.md)                                                 | [Customers](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/customers)   | [Customers](https://github.com/DigitalRiver/digital-river-php/blob/main/docs/Model/Customer.md)  |
| [Events](/digital-river-api/order-management/events-and-webhooks-1/events-1.md): file.created, file-link.created | [Events](https://docs.digitalriver.com/digital-river-api-reference/2021-12-13/events)         |                                                                                                  |


---

# 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/standards-and-certifications/integration-checklists/customer-portal.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.
