> For the complete documentation index, see [llms.txt](https://docs.digitalriver.com/commerce-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.digitalriver.com/commerce-api/payments/sources/retrieving-sources.md).

# Retrieving sources

## Get a source object by identifier

The following [`GET /sources/{id}`](https://docs.digitalriver.com/commerce-api-references/admin-apis/payment-source/source-management#sources-id) request retrieves a source by supplying its unique identifier as a path parameter.

{% hint style="info" %}
This identifier was returned when you used the [DigitalRiver.js](/commerce-api/payments/payments-solutions/digitalriver.js.md) library to [create the source](/commerce-api/resources/reference/digitalriver-object.md#creating-sources).
{% endhint %}

{% tabs %}
{% tab title="cURL" %}

```
curl --location --request GET 'https://api.digitalriver.com/sources/e59c8303-139a-4077-bd26-78d20b43d52b' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer '<API_key>' \
```

{% endtab %}
{% endtabs %}

The response returns a Source object if a valid identifier and API key are provided. This sample response returns a Source with a `type` of `creditCard` and a state of `chargeable`.&#x20;

{% hint style="warning" %}
Only the last four digits of credit card numbers are returned by a `GET` Source request.
{% endhint %}

{% tabs %}
{% tab title="JSON" %}

```json
{
    "id": "e59c8303-139a-4077-bd26-78d20b43d52b",
    "createdTime": "2020-06-17T19:54:54Z",
    "type": "creditCard",
    "currency": "USD",
    "amount": 24.89,
    "reusable": true,
    "state": "chargeable",
    "customerId": "517796760336",
    "owner": {
        "firstName": "William",
        "lastName": "Brown",
        "email": "apiTester@digitalriver.com",
        "address": {
            "line1": "10380 Bren Road West",
            "city": "Minnetonka",
            "postalCode": "55343",
            "state": "MN",
            "country": "US"
        }
    },
    "paymentSessionId": "8ff5840f-b0ec-44f2-8e88-647627a0ba0d",
    "clientSecret": "e59c8303-139a-4077-bd26-78d20b43d52b_5e943931-e4e7-4537-8ae4-f7ff991f463c",
    "creditCard": {
        "brand": "MasterCard",
        "expirationMonth": 5,
        "expirationYear": 2025,
        "lastFourDigits": "0008"
    },
    "liveMode": false
}
```

{% endtab %}
{% endtabs %}

## Obtain a shopper's sources

You can retrieve the Sources associated with a Shopper by making a get shopper by ID request and parsing the `sources` array contained in the response if the payment source is attached to the shopper's payment option. All payment sources will be listed when the shopper gets their payment options.

### Step 1: Create your first payment source and option

1. Create your first payment source using the following: \
   `POST https://api.digitalriver.com/payments/sources/`
2. Create your first payment option using the following: \
   `POST https://api.digitalriver.cm/v1/shoppers/me/payment-options/`

{% tabs %}
{% tab title="cURL" %}

```javascript
curl --location --request POST 'https://api.digitalriver.com/v1/shoppers/me/payment-options/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API_key>' \
--data-raw '{
  "paymentOption" : {
    "nickName" : "Credit Card",
    "isDefault" : "true",
    "sourceId":"{{sourceId1}}"
  }
}'
```

{% endtab %}
{% endtabs %}

### Step 2: Create your second payment source and option

1. Create your second payment source using the following: \
   `POST https://api.digitalriver.com/payments/sources/`
2. Create your second payment option using the following: \
   `POST https://api.digitalriver.com/v1/shoppers/me/payment-options/`

{% tabs %}
{% tab title="Request body" %}

```javascript
curl --location --request POST 'https://api.digitalriver.com/v1/shoppers/me/payment-options/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API_key>' \
--data-raw '{
  "paymentOption" : {
    "nickName" : "PayPal",
    "isDefault" : "true",
    "sourceId":"{{sourceId2}}"
  }
}'
```

{% endtab %}
{% endtabs %}

### Step 3: Get the shopper's payment options

Get the shopper's payment options using: `GET https://api.digitalriver.com/v1/shoppers/me/payment-options/`

{% tabs %}
{% tab title="Response body" %}

```json
curl --location --request POST 'https://api.digitalriver.com/v1/shoppers/me/payment-options/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API_key>' \
--data-raw '{
    "paymentOptions": {
        "uri": "https://api.digitalriver.com/v1/shoppers/me/payment-options",
        "paymentOption": [
            {
                "uri": "https://api.digitalriver.com/v1/shoppers/me/payment-options/15578475589",
                "nickName": "Credit Card",
                "isDefault": "false"
            },
            {
                "uri": "https://api.digitalriver.com/v1/shoppers/me/payment-options/15578475689",
                "nickName": "PayPal",
                "isDefault": "true"
            }
        ]
    }
}'
```

{% endtab %}
{% endtabs %}

### Display a customer's sources

You can use the data contained in the `sources` array to display a customer's saved payment methods on your website or app. To do this, parse the response and extract the values in the `creditCard`, `owner`, and `address` hash tables. You can then use these values to present the card's brand name, last four digits, expiration date, and the customer's billing information.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.digitalriver.com/commerce-api/payments/sources/retrieving-sources.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
