# Quick Start Guide
source: https://developer.mastercard.com/mastercard-send-person-to-person/documentation/quick-start-guide/index.md

## Overview {#overview}

Use this guide to progress from account setup to your first successful Sandbox request for this API. You will create a Mastercard Developers project, generate credentials, make a test call, and prepare the same project for Production access.

### Good to know {#good-to-know}

You can use the **same** Mastercard Developers project and credentials to access multiple Mastercard API services:

* The **Mastercard Send** API service you select in step 2 can provide access to these Mastercard Send services: [Disbursements](https://developer.mastercard.com/mastercard-send-disbursements/documentation/), Person-to-Person (this API), [Funding](https://developer.mastercard.com/mastercard-send-funding/documentation/), [Account Information](https://developer.mastercard.com/mastercard-send-account-info/documentation/), and [Account Verification](https://developer.mastercard.com/mastercard-send-avs/documentation/).
* You can add other Outh 1.0a services to this project, such as [Mastercard Account Validation](https://developer.mastercard.com/account-validation/documentation/) and [Mastercard Cross-Border Services](https://developer.mastercard.com/cross-border-services/documentation/), see [Adding a new service to an existing project](https://developer.mastercard.com/mastercard-send/documentation/implementation/getting-started/#adding-a-new-service-to-an-existing-project).

You will need to register for the required services before you can use those APIs in the Mastercard Test Facility (MTF) and Production.

### Before you begin {#before-you-begin}

* Have a secure place to store downloaded OAuth and encryption keys.
* Decide how you want to test: Postman, Insomnia, the reference application, or your own client.
* Have an OAuth 1.0a signing method ready, such as a Mastercard OAuth library or a configured Postman or Insomnia workspace.

### Sandbox checklist {#sandbox-checklist}

| # |      Step      |                                                                                            What to do                                                                                             |
|---|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | Access         | Get access to the API service.                                                                                                                                                                    |
| 2 | Credentials    | Create your Mastercard Developers project, generate your Sandbox OAuth credentials, and record your consumer key.                                                                                 |
| 3 | Environment    | Confirm that you are using the Sandbox base URL and that your project is still in Sandbox mode.                                                                                                   |
| 4 | Authentication | Configure OAuth 1.0a signing for the first request and confirm which consumer key and private key pair you will use.                                                                              |
| 5 | First call     | Send your first Sandbox request using the Sandbox base URL and OAuth 1.0a signing.                                                                                                                |
| 6 | Validation     | Use the sample response and [Testing](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/testing/index.md) page to validate positive, negative, and follow-on flows. |

## Step 1: Get access to the API {#step-1-get-access-to-the-api}

You need a Mastercard Developers account to access the API. If you haven't already done so:

1. Go to [Mastercard Developers](https://developer.mastercard.com/) and create an account.

2. Activate your account by opening the link sent to your email address, and log in.

   Your [My projects](https://developer.mastercard.com/dashboard) page appears, also known as your project dashboard, which is where you create your projects.

## Step 2: Create a project and generate Sandbox credentials {#step-2-create-a-project-and-generate-sandbox-credentials}

Create a Mastercard Developers project to generate your Sandbox credentials. Sandbox is open and gives you mocked data so you can begin trying the API with your Sandbox credentials before completing program registration and testing with the Mastercard Test Facility (MTF).

### Project details {#project-details}

1. Click 'Create new project' on your [My projects](https://developer.mastercard.com/dashboard) page.

   ![Create project flow - project details panel](https://static.developer.mastercard.com/content/mastercard-send-person-to-person/documentation/img/send-madev-create-1-project-details.png)
2. Name your project.   

3. Answer the question 'Are you creating this project on behalf of a client?' based on your company type (see [Participants](https://developer.mastercard.com/mastercard-send/documentation/send-eligibility/#participants)):

   * Select 'No' if you are an acquirer who will act as a Mastercard Send Originating Institution.
   * Select 'Yes' if you are a service provider or partner to an acquirer (the Originating Institution), and provide the acquirer's details.
4. In the 'Select at least one API' field, select **Mastercard Send**.

<!-- -->

5. Click 'Proceed'.

### Service details {#service-details}

6. In 'Service details', read and acknowledge the registration requirement for Mastercard Send, select your participant type, and click 'Proceed'.

   ![Create project flow - service details panel](https://static.developer.mastercard.com/content/mastercard-send-person-to-person/documentation/img/send-madev-create-2-service-details.png)

### Project credentials {#project-credentials}

7. In 'Project credentials', create a key alias and keystore password for your OAuth keys, record them securely, and click 'Create project'.

   ![Create project flow - project credentials panel](https://static.developer.mastercard.com/content/mastercard-send-person-to-person/documentation/img/send-madev-create-3-project-credentials.png)
8. Download the OAuth 1.0a keys, also known as Sandbox signing keys, and store them in a safe place.

   ![Create project flow - create your project panel](https://static.developer.mastercard.com/content/mastercard-send-person-to-person/documentation/img/send-madev-create-4-create-your-project.png)

### Save the values you will need {#save-the-values-you-will-need}

9. Go to the project page's 'Sandbox credentials' panel and record the consumer key.

   ![Project page - Sandbox panel](https://static.developer.mastercard.com/content/mastercard-send-person-to-person/documentation/img/send-madev-create-6-project-page-sandbox.png)

Note: Company verification of your Mastercard Developers account is required for [moving to Production](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/quick-start-guide/index.md#step-7-request-production-access-and-set-up-production-keys). However, only submit a customer verification request **after** you complete Mastercard Send registration and onboarding and have a valid Customer ID (CID). Verification requests made before these prerequisites are met will be ignored.

## Step 3: Confirm Sandbox configuration and make your first request {#step-3-confirm-sandbox-configuration-and-make-your-first-request}

Once you have Sandbox credentials, confirm the environment and configuration, then make a simple POST request to verify that your project is set up correctly.

### Sandbox environment and configuration {#sandbox-environment-and-configuration}

* Use the Sandbox base URL for the first call: `https://sandbox.api.move.mastercard.com/send/static`.
* Configure OAuth 1.0a signing for every request to this service.

Before you run the request, make sure you have:

* Your Sandbox consumer key from your project page.
* The private key used to sign OAuth requests. This is the key you downloaded.
* A Mastercard OAuth library or signer that generates `oauth_timestamp`, `oauth_nonce`, and `oauth_signature`.

<br />

This first-call example uses `POST /v1/partners/{partnerId}/transfers/payment` so you can verify access, OAuth signing, and the Sandbox base URL.
Note: For a full client setup, see [API Basics](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/api-basics/index.md).

##### Example request (cURL) {#example-request-curl}

```cURL
curl --request POST \
  --url https://sandbox.api.move.mastercard.com/send/static/v1/partners/{partnerId}/transfers/payment \
  --header 'Authorization: OAuth oauth_body_hash="GENERATED_BODY_HASH", 
  oauth_consumer_key="YOUR_CONSUMER_KEY", 
  oauth_nonce="GENERATED_BY_OAUTH_LIBRARY",
  oauth_signature_method="RSA-SHA256", 
  oauth_timestamp="GENERATED_BY_OAUTH_LIBRARY", 
  oauth_version="1.0", 
  oauth_signature="GENERATED_BY_OAUTH_LIBRARY"' \
  --header 'Content-Type: application/json' \
  --header 'User-Agent: TESTING_TOOL/VERSION' \
  --header 'partnerId: ptnr_BEeCrYJHh2BXTXPy_PEtp-8DBOo' \
  --cookie 'COOKIE_VALUE' \
  --data '{
  "payment_transfer": {
    "transfer_reference": "HAPPYPATH_PAY_000001",
    "payment_type": "P2P",
    "amount": "5300",
    "currency": "USD",
    "sender_account_uri": "pan:5102589999999921;exp=2077-02;cvc=123",
    "sender": {
      "first_name": "John",
      "last_name": "Jones",
      "account_type": "03",
      "address": {
        "line1": "1 Main St",
        "line2": "Apartment 9",
        "city": "St. Louis",
        "country_subdivision": "MO",
        "postal_code": "63368",
        "country": "USA"
      }
    },
    "funding_source": "DEBIT",
    "transaction_purpose": "00",
    "recipient_account_uri": "pan:5102589999999913;exp=2077-02;cvc=123",
    "recipient": {
      "first_name": "Jane",
      "last_name": "Smith",
      "account_type": "03",
      "address": {
        "line1": "1 Main St",
        "line2": "Apartment 9",
        "city": "St. Louis",
        "country_subdivision": "MO",
        "postal_code": "63368",
        "country": "USA"
      }
    }
  }
}'
```

> This example shows the required OAuth 1.0a header fields explicitly, but uses placeholders for sensitive values. Replace `YOUR_CONSUMER_KEY` with the Sandbox consumer key from your project page and generate `oauth_signature` with a Mastercard OAuth library. The library also handles `oauth_timestamp` and `oauth_nonce` for you.

##### Expected response (truncated) {#expected-response-truncated}

```JSON
{
  "transfer": {
    "id": "HAPPYPATH_PAY_000001_txn",
    "resource_type": "transfer",
    "transfer_reference": "HAPPYPATH_PAY_000001",
    "payment_type": "P2P",
    "sender_account_uri": "pan:************9921",
    "sender": {
      "first_name": "John",
      "last_name": "Jones",
      "account_type": "03",
      "address": {
        "line1": "1 Main St",
        "line2": "Apartment 9",
        "city": "St. Louis",
        "country_subdivision": "MO",
        "postal_code": "63368",
        "country": "USA"
      }
    },
    "funding_source": "DEBIT",
    "transaction_purpose": "00",
    "recipient_account_uri": "pan:************9913",
    "recipient": {
      "first_name": "Jane",
      "last_name": "Smith",
      "account_type": "03",
      "address": {
        "line1": "1 Main St",
        "line2": "Apartment 9",
        "city": "St. Louis",
        "country_subdivision": "MO",
        "postal_code": "63368",
        "country": "USA"
      },
...
```

##### What success looks like {#what-success-looks-like}

* The request returns `201 Created`.
* The response body includes the `transfer_reference` value used in the API request call, a generated `id` value, and a `status` of 'APPROVED'.

## Step 4: Choose how you want to test and integrate {#step-4-choose-how-you-want-to-test-and-integrate}

After the first Sandbox request succeeds, choose the integration path that matches your workflow:

* **Postman:** Use the [Postman Collection](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/developer-tools/postman-collection/index.md) page for setup.
* **curl or a custom client:** Use the [API Basics](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/api-basics/index.md) and [Java API Client](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/tutorials-and-guides/api-tutorial/index.md) pages for guidance.

Sandbox has mock APIs with predefined [test cases](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/testing/index.md#test-cases) that demonstrate positive and negative (error) scenarios, enabling initial development of your funds transfer application or solution. For full integration testing, use MTF.

## Step 5: Request MTF access {#step-5-request-mtf-access}

The full APIs in MTF are available only to registered Mastercard customers who complete Mastercard Send program registration. During onboarding, a Mastercard Delivery Manager may be assigned to facilitate your program implementation, and they will engage the Customer Implementation Service (CIS) team to help with MTF configuration, test cases, and so on.

When you have completed registration and are ready to test in MTF, send your Sandbox consumer key to your Mastercard Delivery Manager, identifying your project and that the key is for the MTF environment. This is the same consumer key you used in Step 3 to confirm Sandbox configuration, unless you generate a new key.

It can take 5-7 business days for Mastercard to configure the MTF environment for your keys. Mastercard will notify you when you can start making API calls to that environment.

## Step 6: Test service in MTF {#step-6-test-service-in-mtf}

When Mastercard notifies you that MTF configuration is complete, you can begin full API testing using the test cases provided by the CIS Implementation Manager assigned to your project. Continue to use your Sandbox keys, but adjust your application to use:

* The MTF base URL: `https://sandbox.api.move.mastercard.com/send`.
* Your MTF Partner Reference ID, which is a unique identifier assigned to you when you register as a Mastercard Send Program Participant. Use this ID for the `partnerId` portion of the MTF API endpoint URL.

<br />

For MTF test cards, see [MTF Testing](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/testing/index.md#mtf-testing).

Once API testing is complete, a Testing Acknowledgment Notice (TAN) letter will be sent to you, a live date will be scheduled, and the CIS Implementation Manager will indicate when you are ready to move to Production.
Note: The Mastercard Send APIs are updated periodically, see [Release History](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/release-history/index.md). Retain your MTF implementation so you can test changes to the APIs and your application post go-live.

## Step 7: Request Production access and set up Production keys {#step-7-request-production-access-and-set-up-production-keys}

When you are ready to move the Production:

1. Go to the project page's 'Summary' panel. You may see these messages:

   * 'Verify your company details': Follow [these instructions](https://developer.mastercard.com/platform/documentation/account-management/company-verification/).
   * 'Provide commercial countries for your project': Click 'Get Started' and select the commercial countries where you intend to use the service.

   ![Project page - messaged](https://static.developer.mastercard.com/content/mastercard-send-person-to-person/documentation/img/send-madev-project-page-notifications.png)
2. In the 'Summary' panel, click **Request Production access** to set up your Production credentials. During this procedure:

   * You can generate the Production OAuth 1.0a keys, also known as Production signing keys, in your browser or skip the step and upload your own Production key from a CSR file (PEM format) later. If you choose to have the keys generated for you, you will download them (as a P12 file). Store the keys and key password in a safe place. The P12 file can generate the required Production private and public keys and a certificate.
   * Your public key is uploaded to Mastercard Developers and your request is submitted to Mastercard for approval.

<!-- -->

2. Go to the project page's 'Production credentials' panel and record the consumer key.

3. Send the Production consumer key to your Mastercard Delivery Manager, identifying your project and that the key is for the Production environment, and tell them you have requested Production access in Mastercard Developers.

It can take 5-7 business days for Mastercard to configure the Production environment for your keys and approve your Production request. Mastercard will notify you when you can start making API calls to that environment.

## Step 8: Validate service in Production {#step-8-validate-service-in-production}

When you have Production access, adjust your implementation to use the Production keys, Production API endpoints, and your Production Partner Reference ID which is a unique identifier assigned to you when you register as a Mastercard Send Program Participant. Use this ID for the `partnerId` portion of the Production API endpoint URL.

As per your launch plan, conduct pilot launch or proof of concept, including your own end-to-end testing, to validate your implementation.

### Adding or renewing keys {#adding-or-renewing-keys}

Keys generated on Mastercard Developers are valid for 13 months. You will receive email reminders to replace or renew your keys before they expire. These reminders are sent 60, 30, 15, 5, and 1 day prior to expiration.

You can add or renew keys at any time, follow [these instructions](https://developer.mastercard.com/platform/documentation/credential-management/oauth-key-management/#managing-an-expiring-key-oauth-10a). Keys remain active until they expire or are revoked. To minimize disruption, allow yourself plenty of time to update your application before the current keys expire.

Your Mastercard Developers project has unique client IDs: one for Sandbox keys, one for Production keys. If you add or renew keys in the **same** project, they have the same client IDs and you do **not** need to send the new consumer keys to Mastercard. However, if you create a **new** Mastercard Developers project and keys, the client ID will be different and you will need to send the new consumer keys to Mastercard to update the environments.

### Adding services post go-live {#adding-services-post-go-live}

If you choose to implement additional Mastercard Send API services after launching your solution, you will need to ask your Mastercard representative or Account Manager to subscribe you to the additional services and initiate a new CIS implementation project.

## Next Steps {#next-steps}

Continue with the documentation that matches your next task:

* [API Reference](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/api-reference/payment-transfer/index.md) for endpoint details
* [API Basics](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/api-basics/index.md) for authentication and client configuration
* [Testing](https://developer.mastercard.com/mastercard-send-person-to-person/documentation/testing/index.md) for additional request scenarios
