# Onboard Customers
source: https://developer.mastercard.com/mastercard-developers-api/documentation/use-cases/createprojects-customer/index.md

If you are directly consuming one or more services offered by Mastercard, it is possible that you may resell these services/capabilities to associated partners or organizations. This use case explains how as a Mastercard's direct partner you can create projects to onboard [associated partners](https://developer.mastercard.com/mastercard-developers-api/documentation/glossary/index.md#associated-partners) or organizations.

Once you successfully create projects for your customers, project credentials such as unique identifiers and keys are generated for each one of your associated partners. The project credentials are unique and can be used to serve business needs such as capturing billing usage, registering applications and customizing experiences for your end customers.

After you create projects through the Developers API, the projects will also be visible on the [project dashboard](https://developer.mastercard.com/dashboard) of your account on Mastercard Developers.

## Get Services Available on Mastercard Developers {#get-services-available-on-mastercard-developers}

1. Before you create a project for a service/API, call [GET /services](https://developer.mastercard.com/mastercard-developers-api/documentation/api-reference/index.md) to retrieve the list of all live services onboarded to Mastercard Developers. From the response, you can retrieve the `serviceId` associated with the service/API you plan to add in your project. `serviceId` is a required parameter for you to successfully create a project.


API Reference: `GET /services`

2. You can call [GET /services/{service_id}](https://developer.mastercard.com/mastercard-developers-api/documentation/api-reference/index.md) to retrieve a service by its `serviceId`.

<br />


API Reference: `GET /services/{service_id}`

Diagram getservices

## Create Project for End Customers {#create-project-for-end-customers}

1. Call the [POST /projects](https://developer.mastercard.com/mastercard-developers-api/documentation/api-reference/index.md) including all the required details for project creation.


API Reference: `POST /projects`

2. After successful project creation, the Developers API returns the project details including the credentials required to call your service/API.

You will receive an email notification once the project is successfully created. Optionally you can call   
[GET /projects/{project_id}](https://developer.mastercard.com/mastercard-developers-api/documentation/api-reference/index.md) with the `projectId` to retrieve the project and view the status of your project creation.
Diagram createproject

## Create a Project with Dynamic Configuration Schema {#create-a-project-with-dynamic-configuration-schema}

Some services require additional customer-specific details when you create a project in Sandbox or Production --- for example, customerId, BINs, or ICA. To determine whether additional fields are required, call the [GET /services](https://developer.mastercard.com/mastercard-developers-api/documentation/api-reference/index.md) endpoint and check if the service you want to create a project for includes a `configSchemaId`.

If a `configSchemaId` is returned in the `GET /services` call, use the corresponding `serviceId` and depending on your use case, call the [GET /services/{service_id}/config-schemas?configType=PROJECT_SANDBOX](https://developer.mastercard.com/mastercard-developers-api/documentation/api-reference/index.md) or [GET /services/{service_id}/config-schemas?configType=PROJECT_PRODUCTION](https://developer.mastercard.com/mastercard-developers-api/documentation/api-reference/index.md) endpoint. This returns a schema that tells you exactly which fields you need to include in your project creation request for Sandbox or Production --- including field names, types, accepted values, and which fields are required.

API Reference: `GET /services/{service_id}/config-schemas`

#### Endpoints: {#endpoints}

The following endpoints are used to complete the end-to-end flow for creating a project when a service requires dynamic configuration.

|                               **Endpoint**                                |                                           **Purpose**                                            |
|---------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|
| `GET /services`                                                           | Retrieve the list of services and check if a `configSchemaId` is defined in the environments.    |
| `GET /services/{service_id}/config-schemas?configType=PROJECT_SANDBOX`    | Retrieve the schema fields required when creating a project.                                     |
| `GET /services/{service_id}/config-schemas?configType=PROJECT_PRODUCTION` | Retrieve the schema fields required when requesting production access.                           |
| `POST /projects`                                                          | Include the required fields in the `config` object to create a project in Sandbox or Production. |

For a step-by-step guide to implement this flow, refer to the Create a Project step in the [Create and Manage Projects](https://developer.mastercard.com/mastercard-developers-api/documentation/tutorials-and-guides/create-and-manage-projects/index.md) tutorial.
Diagram createproject-dc

## Next Steps {#next-steps}

After you create a project, learn how to request production access. See [Manage Projects](https://developer.mastercard.com/mastercard-developers-api/documentation/use-cases/manage_projects/index.md).
