# Create profile Create a profile to process payments on. Profiles are required for payment processing. Normally they are created via the Mollie dashboard. Alternatively, you can use this endpoint to automate profile creation. > 🔑 Access with > > [Organization access token with **profiles.write**](/reference/authentication) > > [OAuth access with **profiles.write**](/reference/authentication) # OpenAPI definition ```json { "openapi": "3.1.0", "info": { "title": "Mollie Connect", "version": "1.0.0", "license": { "name": "Attribution-NonCommercial-ShareAlike 4.0 International", "identifier": "CC-BY-NC-SA-4.0" } }, "servers": [ { "url": "https://api.mollie.com" } ], "security": [ { "apiKey": [] }, { "organizationAccessToken": [] }, { "oAuth": [] } ], "paths": { "/v2/profiles": { "post": { "summary": "Create profile", "x-speakeasy-name-override": "create", "tags": [ "Profiles API" ], "operationId": "create-profile", "security": [ { "organizationAccessToken": [ "profiles.write" ] }, { "oAuth": [ "profiles.write" ] } ], "description": "Create a profile to process payments on.\n\nProfiles are required for payment processing. Normally they are created via the Mollie dashboard. Alternatively, you can use this endpoint to automate profile creation.\n\n> 🔑 Access with\n>\n> [Organization access token with **profiles.write**](/reference/authentication)\n>\n> [OAuth access with **profiles.write**](/reference/authentication)", "requestBody": { "required": true, "content": { "application/json": { "schema": { "allOf": [ { "type": "object", "properties": { "resource": { "type": "string", "description": "Indicates the response contains a profile object. Will always contain the string `profile` for this endpoint.", "readOnly": true, "default": "profile", "example": "profile" }, "id": { "type": "string", "description": "The identifier uniquely referring to this profile. Example: `pfl_v9hTwCvYqw`.", "readOnly": true, "example": "pfl_QkEhN94Ba" }, "mode": { "example": "live", "type": "string", "description": "Whether this entity was created in live mode or in test mode.\n\nPossible values: `live` `test`", "readOnly": true }, "name": { "type": "string", "description": "The profile's name, this will usually reflect the trade name or brand name of the profile's website or application.", "example": "My website name" }, "website": { "type": "string", "description": "The URL to the profile's website or application. Only `https` or `http` URLs are allowed. No `@` signs are allowed.", "maxLength": 255, "example": "https://example.com" }, "email": { "type": "string", "description": "The email address associated with the profile's trade name or brand.", "example": "test@mollie.com" }, "phone": { "type": "string", "description": "The phone number associated with the profile's trade name or brand.", "example": "+31208202070" }, "description": { "type": "string", "description": "The products or services offered by the profile's website or application.", "example": "My website description", "maxLength": 500 }, "countriesOfActivity": { "type": "array", "items": { "type": "string" }, "description": "A list of countries where you expect that the majority of the profile's customers reside, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.", "example": [ "NL", "GB" ] }, "businessCategory": { "type": "string", "description": "The industry associated with the profile's trade name or brand. Please refer to the [business category list](common-data-types#business-category) for all possible options.", "example": "OTHER_MERCHANDISE" }, "status": { "allOf": [ { "type": "string", "description": "The profile status determines whether the profile is able to receive live payments.\n\n* `unverified`: The profile has not been verified yet and can only be used to create test payments.\n* `verified`: The profile has been verified and can be used to create live payments and test payments.\n* `blocked`: The profile is blocked and can no longer be used or changed.\n\nPossible values: `unverified` `verified` `blocked`", "example": "unverified" } ], "readOnly": true }, "review": { "type": "object", "description": "Present if changes have been made that have not yet been approved by Mollie. Changes to test profiles are approved automatically, unless a switch to a live profile has been requested. The review object will therefore usually be `null` in test mode.", "properties": { "status": { "type": "string", "description": "The status of the requested changes.\n\nPossible values: `pending` `rejected`", "example": "pending" } }, "readOnly": true, "example": { "status": "pending" } }, "createdAt": { "example": "2022-01-19T12:30:22+00:00", "type": "string", "description": "The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.", "readOnly": true }, "_links": { "type": "object", "description": "An object with several relevant URLs. Every URL object will contain an `href` and a `type` field.", "properties": { "self": { "type": "object", "description": "In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "dashboard": { "description": "Link to the profile in the Mollie dashboard.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "chargebacks": { "description": "The API resource URL of the chargebacks that belong to this profile.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "methods": { "description": "The API resource URL of the methods that are enabled for this profile.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "payments": { "description": "The API resource URL of the payments that belong to this profile.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "refunds": { "description": "The API resource URL of the refunds that belong to this profile.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "checkoutPreviewUrl": { "description": "The hosted checkout preview URL. You need to be logged in to access this page.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "documentation": { "type": "object", "description": "In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } } }, "readOnly": true, "example": { "self": { "href": "...", "type": "application/hal+json" }, "dashboard": { "href": "https://www.mollie.com/dashboard/org_7049691/settings/profiles/pfl_2q3RyuMGry", "type": "text/html" }, "chargebacks": { "href": "https://api.mollie.com/v2/chargebacks?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "methods": { "href": "https://api.mollie.com/v2/methods?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "payments": { "href": "https://api.mollie.com/v2/payments?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "refunds": { "href": "https://api.mollie.com/v2/refunds?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "checkoutPreviewUrl": { "href": "https://www.mollie.com/checkout/preview/pfl_2q3RyuMGry", "type": "text/html" }, "documentation": { "href": "...", "type": "text/html" } } } } }, { "type": "object", "required": [ "name", "website", "email", "phone" ] } ] } } } }, "responses": { "201": { "description": "The newly created profile object.", "content": { "application/hal+json": { "schema": { "allOf": [ { "type": "object", "properties": { "resource": { "type": "string", "description": "Indicates the response contains a profile object. Will always contain the string `profile` for this endpoint.", "readOnly": true, "default": "profile", "example": "profile" }, "id": { "type": "string", "description": "The identifier uniquely referring to this profile. Example: `pfl_v9hTwCvYqw`.", "readOnly": true, "example": "pfl_QkEhN94Ba" }, "mode": { "example": "live", "type": "string", "description": "Whether this entity was created in live mode or in test mode.\n\nPossible values: `live` `test`", "readOnly": true }, "name": { "type": "string", "description": "The profile's name, this will usually reflect the trade name or brand name of the profile's website or application.", "example": "My website name" }, "website": { "type": "string", "description": "The URL to the profile's website or application. Only `https` or `http` URLs are allowed. No `@` signs are allowed.", "maxLength": 255, "example": "https://example.com" }, "email": { "type": "string", "description": "The email address associated with the profile's trade name or brand.", "example": "test@mollie.com" }, "phone": { "type": "string", "description": "The phone number associated with the profile's trade name or brand.", "example": "+31208202070" }, "description": { "type": "string", "description": "The products or services offered by the profile's website or application.", "example": "My website description", "maxLength": 500 }, "countriesOfActivity": { "type": "array", "items": { "type": "string" }, "description": "A list of countries where you expect that the majority of the profile's customers reside, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.", "example": [ "NL", "GB" ] }, "businessCategory": { "type": "string", "description": "The industry associated with the profile's trade name or brand. Please refer to the [business category list](common-data-types#business-category) for all possible options.", "example": "OTHER_MERCHANDISE" }, "status": { "allOf": [ { "type": "string", "description": "The profile status determines whether the profile is able to receive live payments.\n\n* `unverified`: The profile has not been verified yet and can only be used to create test payments.\n* `verified`: The profile has been verified and can be used to create live payments and test payments.\n* `blocked`: The profile is blocked and can no longer be used or changed.\n\nPossible values: `unverified` `verified` `blocked`", "example": "unverified" } ], "readOnly": true }, "review": { "type": "object", "description": "Present if changes have been made that have not yet been approved by Mollie. Changes to test profiles are approved automatically, unless a switch to a live profile has been requested. The review object will therefore usually be `null` in test mode.", "properties": { "status": { "type": "string", "description": "The status of the requested changes.\n\nPossible values: `pending` `rejected`", "example": "pending" } }, "readOnly": true, "example": { "status": "pending" } }, "createdAt": { "example": "2022-01-19T12:30:22+00:00", "type": "string", "description": "The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.", "readOnly": true }, "_links": { "type": "object", "description": "An object with several relevant URLs. Every URL object will contain an `href` and a `type` field.", "properties": { "self": { "type": "object", "description": "In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "dashboard": { "description": "Link to the profile in the Mollie dashboard.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "chargebacks": { "description": "The API resource URL of the chargebacks that belong to this profile.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "methods": { "description": "The API resource URL of the methods that are enabled for this profile.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "payments": { "description": "The API resource URL of the payments that belong to this profile.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "refunds": { "description": "The API resource URL of the refunds that belong to this profile.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "checkoutPreviewUrl": { "description": "The hosted checkout preview URL. You need to be logged in to access this page.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "documentation": { "type": "object", "description": "In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } } }, "readOnly": true, "example": { "self": { "href": "...", "type": "application/hal+json" }, "dashboard": { "href": "https://www.mollie.com/dashboard/org_7049691/settings/profiles/pfl_2q3RyuMGry", "type": "text/html" }, "chargebacks": { "href": "https://api.mollie.com/v2/chargebacks?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "methods": { "href": "https://api.mollie.com/v2/methods?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "payments": { "href": "https://api.mollie.com/v2/payments?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "refunds": { "href": "https://api.mollie.com/v2/refunds?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "checkoutPreviewUrl": { "href": "https://www.mollie.com/checkout/preview/pfl_2q3RyuMGry", "type": "text/html" }, "documentation": { "href": "...", "type": "text/html" } } } } }, { "type": "object", "required": [ "resource", "id", "mode", "name", "website", "email", "phone", "businessCategory", "status", "createdAt", "_links" ], "properties": { "businessCategory": { "type": [ "string", "null" ], "description": "The industry associated with the profile's trade name or brand. Please refer to the [business category list](common-data-types#business-category) for all possible options.", "example": "OTHER_MERCHANDISE" } } } ] }, "examples": { "create-profile-201-1": { "summary": "The profile object", "value": { "resource": "profile", "id": "pfl_QkEhN94Ba", "mode": "live", "name": "My website name", "website": "https://shop.example.org", "email": "info@example.org", "phone": "+31208202070", "businessCategory": "OTHER_MERCHANDISE", "status": "verified", "review": { "status": "pending" }, "createdAt": "2023-03-20T09:28:37+00:00", "_links": { "self": { "href": "...", "type": "application/hal+json" }, "dashboard": { "href": "https://www.mollie.com/dashboard/org_123456789/settings/profiles/pfl_QkEhN94Ba", "type": "text/html" }, "documentation": { "href": "...", "type": "text/html" } } } }, "create-profile-201-2": { "summary": "Create profile", "x-request": "./requests.yaml#/oauth-create-profile", "value": { "resource": "profile", "id": "pfl_2q3RyuMGry", "mode": "live", "name": "My website name", "website": "https://example.com", "email": "test@mollie.com", "phone": "+31208202070", "businessCategory": "OTHER_MERCHANDISE", "status": "unverified", "createdAt": "2022-01-19T12:30:22+00:00", "review": { "status": "pending" }, "_links": { "self": { "href": "...", "type": "application/hal+json" }, "dashboard": { "href": "https://www.mollie.com/dashboard/org_7049691/settings/profiles/pfl_2q3RyuMGry", "type": "text/html" }, "chargebacks": { "href": "https://api.mollie.com/v2/chargebacks?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "methods": { "href": "https://api.mollie.com/v2/methods?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "payments": { "href": "https://api.mollie.com/v2/payments?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "refunds": { "href": "https://api.mollie.com/v2/refunds?profileId=pfl_2q3RyuMGry", "type": "application/hal+json" }, "checkoutPreviewUrl": { "href": "https://www.mollie.com/checkout/preview/pfl_2q3RyuMGry", "type": "text/html" }, "documentation": { "href": "...", "type": "text/html" } } } } } } } }, "403": { "description": "Profile limit has been reached for demo accounts.", "content": { "application/hal+json": { "schema": { "type": "object", "description": "An error response object.", "required": [ "status", "title", "detail", "_links" ], "properties": { "status": { "type": "integer", "description": "The status code of the error message. This is always the same code as the status code of the HTTP message itself.", "minimum": 400, "maximum": 599, "example": 404 }, "title": { "type": "string", "description": "The HTTP reason phrase of the error. For example, for a `404` error, the `title` will be `Not Found`.", "example": "Not Found" }, "detail": { "type": "string", "description": "A detailed human-readable description of the error that occurred.", "example": "The resource does not exist" }, "field": { "type": "string", "description": "If the error was caused by a value provided by you in a specific field, the `field` property will contain the name of the field that caused the issue.", "example": "description" }, "_links": { "type": "object", "required": [ "documentation" ], "properties": { "documentation": { "type": "object", "description": "The URL to the generic Mollie API error handling guide.", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "example": "https://docs.mollie.com/errors" }, "type": { "type": "string", "example": "text/html" } } } } } } }, "example": { "status": 403, "title": "Forbidden", "detail": "Profile limit has been reached for demo accounts.", "_links": { "documentation": { "href": "...", "type": "text/html" } } } } } }, "422": { "description": "The request contains issues. For example, if a profile name is missing or website URL is invalid.", "content": { "application/hal+json": { "schema": { "type": "object", "description": "An error response object.", "required": [ "status", "title", "detail", "_links" ], "properties": { "status": { "type": "integer", "description": "The status code of the error message. This is always the same code as the status code of the HTTP message itself.", "minimum": 400, "maximum": 599, "example": 404 }, "title": { "type": "string", "description": "The HTTP reason phrase of the error. For example, for a `404` error, the `title` will be `Not Found`.", "example": "Not Found" }, "detail": { "type": "string", "description": "A detailed human-readable description of the error that occurred.", "example": "The resource does not exist" }, "field": { "type": "string", "description": "If the error was caused by a value provided by you in a specific field, the `field` property will contain the name of the field that caused the issue.", "example": "description" }, "_links": { "type": "object", "required": [ "documentation" ], "properties": { "documentation": { "type": "object", "description": "The URL to the generic Mollie API error handling guide.", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "example": "https://docs.mollie.com/errors" }, "type": { "type": "string", "example": "text/html" } } } } } } }, "example": { "status": 422, "title": "Unprocessable Entity", "detail": "The 'website' field is missing", "field": "website", "_links": { "documentation": { "href": "...", "type": "text/html" } } } } } } }, "x-readme": { "code-samples": [ { "language": "shell", "code": "curl -X POST https://api.mollie.com/v2/profiles \\\n -H \"Authorization: Bearer access_Wwvu7egPcJLLJ9Kb7J632x8wJ2zMeJ\" \\\n -d \"name=My website name\" \\\n -d \"website=https://shop.example.org\" \\\n -d \"email=info@example.org\" \\\n -d \"phone=+31208202070\" \\\n -d \"businessCategory=OTHER_MERCHANDISE\" \\\n -d \"mode=live\"" }, { "language": "php", "code": "setAccessToken(\"access_Wwvu7egPcJLLJ9Kb7J632x8wJ2zMeJ\");\n\n$profile = $mollie->send(\n new CreateProfileRequest(\n name: \"My website name\",\n website: \"https://shop.example.org\",\n email: \"info@example.org\",\n phone: \"+31208202070\",\n businessCategory: \"OTHER_MERCHANDISE\"\n )\n);", "install": "composer require mollie/mollie-api-php" }, { "language": "node", "code": "const { createMollieClient } = require('@mollie/api-client');\nconst mollieClient = createMollieClient({ accessToken: 'access_Wwvu7egPcJLLJ9Kb7J632x8wJ2zMeJ' });\n\nconst profile = await mollieClient.profiles.create({\n name: 'My website name',\n website: 'https://shop.example.org',\n email: 'info@example.org',\n phone: '+31208202070',\n businessCategory: 'OTHER_MERCHANDISE',\n mode: 'live'\n});", "install": "npm install @mollie/api-client" }, { "language": "python", "code": "from mollie.api.client import Client\n\nmollie_client = Client()\nmollie_client.set_access_token(\"access_Wwvu7egPcJLLJ9Kb7J632x8wJ2zMeJ\")\n\nprofile = mollie_client.profiles.create({\n \"name\": \"My website name\",\n \"website\": \"https://shop.example.org\",\n \"email\": \"info@example.org\",\n \"phone\": \"+31208202070\",\n \"businessCategory\": \"OTHER_MERCHANDISE\",\n \"mode\": \"live\",\n})", "install": "pip install mollie-api-python" }, { "language": "ruby", "code": "require 'mollie-api-ruby'\n\nMollie::Client.configure do |config|\n config.api_key = 'access_Wwvu7egPcJLLJ9Kb7J632x8wJ2zMeJ'\nend\n\nprofile = Mollie::Profile.create(\n name: 'My website name',\n website: 'https://shop.example.org',\n email: 'info@example.org',\n phone: '+31208202070',\n businessCategory: 'OTHER_MERCHANDISE',\n mode: 'live'\n)", "install": "gem install mollie-api-ruby" } ] } } } }, "components": { "securitySchemes": { "apiKey": { "type": "http", "scheme": "bearer", "x-default": "live_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM" }, "organizationAccessToken": { "type": "http", "scheme": "bearer", "x-default": "access_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM" }, "oAuth": { "type": "oauth2", "flows": { "authorizationCode": { "authorizationUrl": "https://my.mollie.com/oauth2/authorize", "tokenUrl": "https://api.mollie.com/oauth2/tokens", "scopes": {} } } } } }, "x-readme": { "explorer-enabled": false, "samples-languages": [ "shell", "php", "node", "python", "ruby" ] } } ```