Skip to content

Members

SumUp API reference and code samples.

The Member object

A member is user within specific resource identified by resource id, resource type, and associated roles.

  • idstringrequired

    ID of the member.

    Example: "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"
  • roles[]stringrequired

    User's roles.

  • permissions[]stringrequireddeprecated
    Caution

    Permissions include only legacy permissions, please use roles instead. Member access is based on roles within a given resource and the permissions these roles grant.

    User's permissions.

  • created_atstringrequiredformat: date-time

    The timestamp of when the member was created.

    Example: "2023-01-20T15:16:17Z"
  • updated_atstringrequiredformat: date-time

    The timestamp of when the member was last updated.

    Example: "2023-01-20T15:16:17Z"
  • userobject

    Information about the user associated with the membership.

     Show attributes
     Close
    Attributes
    • idstringrequired

      Identifier for the End-User (also called Subject).

      Example: "44ca0f5b-813b-46e1-aee7-e6242010662e"
    • typestringrequired
      Options: usermanaged_userservice_accountsystem_account

      Type of the user account.

      Example: "user"
    • emailstringrequired

      End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322] addr-spec syntax. The RP MUST NOT rely upon this value being unique, for unique identification use ID instead.

      Example: "example@sumup.com"
    • mfa_on_login_enabledbooleanrequired

      True if the user has enabled MFA on login.

      Example: true
    • virtual_userbooleanrequireddeprecated
      Caution

      Rely on type instead.

      True if the user is a virtual user (operator).

    • service_account_userbooleanrequireddeprecated
      Caution

      Rely on type instead.

      True if the user is a service account.

    • disabled_atstringformat: date-time

      Time when the user has been disabled. Applies only to virtual users (virtual_user: true).

    • nicknamestring

      User's nickname. Used for display purposes only.

      Example: "Test User"
    • picturestringformat: uri

      URL of the End-User's profile picture. This URL refers to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image.

      Example: "https://usercontent.sumup.com/44ca0f5b-813b-46e1-aee7-e6242010662e.png"
    • classicobjectdeprecated

      Classic identifiers of the user.

       Show attributes
       Close
      Attributes
      • user_idintegerrequiredminimum: 0, maximum: 2147483647
  • inviteInvite

    Pending invitation for membership.

     Show attributes
     Close
    Invite
    • emailstringrequiredformat: email

      Email address of the invited user.

      Example: "boaty.mcboatface@sumup.com"
    • expires_atstringrequiredformat: date-time
      Example: "2023-01-20T15:16:17Z"
  • statusstringrequired
    Options: acceptedpendingexpireddisabledunknown

    The status of the membership.

  • metadataobjectmax properties: 64

    Set of user-defined key-value pairs attached to the object. Partial updates are not supported. When updating, always submit whole metadata. Maximum of 64 parameters are allowed in the object.

    Example: {}
  • attributesobject

    Object attributes that are modifiable only by SumUp applications.

    Example: {}
The Member object
{
"id": "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
"roles": [
"role_admin",
"role_owner"
],
"permissions": [
"members_read",
"members_write",
"create_moto_payments",
"full_transaction_history_view",
"refund_transactions",
"create_referral",
"developer_settings_edit",
"developer_settings_access"
],
"created_at": "2023-01-20T15:16:17Z",
"updated_at": "2023-02-20T15:16:17Z",
"user": {
"id": "44ca0f5b-813b-46e1-aee7-e6242010662e",
"email": "example@sumup.com",
"mfa_on_login_enabled": true,
"virtual_user": false,
"service_account_user": false
},
"status": "accepted"
}
Members

List members

GET/v0.1/merchants/{merchant_code}/members

Lists merchant members.

Requires one of scopes:user.subaccountsmembers.read
Required permissions:merchant_read

Path Parameters

  • merchant_codestringrequired

    Short unique identifier for the merchant.

    Example: "MK10CL2A"

Query Parameters

  • offsetintegerminimum: 0, default: 0

    Offset of the first member to return.

    Example: 0
  • limitintegerminimum: 1, maximum: 25, default: 10

    Maximum number of members to return.

    Example: 10
  • scrollbooleandefault: false

    Indicates to skip count query.

    Example: true
  • emailstring

    Filter the returned members by email address prefix.

    Example: "user"
  • user.idstringformat: uuid

    Search for a member by user id.

    Example: "245b2ead-85bf-45ff-856f-311a88a5d454"
  • statusstring
    Options: acceptedpendingexpireddisabledunknown

    Filter the returned members by the membership status.

  • roles[]string

    Filter the returned members by role.

    Example: ["role_employee","role_accountant"]

Response

Returns a list of Member objects. See Member object.

  • items[]Memberrequired

    A member is user within specific resource identified by resource id, resource type, and associated roles.

     Show attributes
     Close
    Member
    • idstringrequired

      ID of the member.

      Example: "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"
    • roles[]stringrequired

      User's roles.

    • permissions[]stringrequireddeprecated
      Caution

      Permissions include only legacy permissions, please use roles instead. Member access is based on roles within a given resource and the permissions these roles grant.

      User's permissions.

    • created_atstringrequiredformat: date-time

      The timestamp of when the member was created.

      Example: "2023-01-20T15:16:17Z"
    • updated_atstringrequiredformat: date-time

      The timestamp of when the member was last updated.

      Example: "2023-01-20T15:16:17Z"
    • userobject

      Information about the user associated with the membership.

       Show attributes
       Close
      Attributes
      • idstringrequired

        Identifier for the End-User (also called Subject).

        Example: "44ca0f5b-813b-46e1-aee7-e6242010662e"
      • typestringrequired
        Options: usermanaged_userservice_accountsystem_account

        Type of the user account.

        Example: "user"
      • emailstringrequired

        End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322] addr-spec syntax. The RP MUST NOT rely upon this value being unique, for unique identification use ID instead.

        Example: "example@sumup.com"
      • mfa_on_login_enabledbooleanrequired

        True if the user has enabled MFA on login.

        Example: true
      • virtual_userbooleanrequireddeprecated
        Caution

        Rely on type instead.

        True if the user is a virtual user (operator).

      • service_account_userbooleanrequireddeprecated
        Caution

        Rely on type instead.

        True if the user is a service account.

      • disabled_atstringformat: date-time

        Time when the user has been disabled. Applies only to virtual users (virtual_user: true).

      • nicknamestring

        User's nickname. Used for display purposes only.

        Example: "Test User"
      • picturestringformat: uri

        URL of the End-User's profile picture. This URL refers to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image.

        Example: "https://usercontent.sumup.com/44ca0f5b-813b-46e1-aee7-e6242010662e.png"
      • classicobjectdeprecated

        Classic identifiers of the user.

         Show attributes
         Close
        Attributes
        • user_idintegerrequiredminimum: 0, maximum: 2147483647
    • inviteInvite

      Pending invitation for membership.

       Show attributes
       Close
      Invite
      • emailstringrequiredformat: email

        Email address of the invited user.

        Example: "boaty.mcboatface@sumup.com"
      • expires_atstringrequiredformat: date-time
        Example: "2023-01-20T15:16:17Z"
    • statusstringrequired
      Options: acceptedpendingexpireddisabledunknown

      The status of the membership.

    • metadataobjectmax properties: 64

      Set of user-defined key-value pairs attached to the object. Partial updates are not supported. When updating, always submit whole metadata. Maximum of 64 parameters are allowed in the object.

      Example: {}
    • attributesobject

      Object attributes that are modifiable only by SumUp applications.

      Example: {}
  • total_countinteger
    Example: 3
GET/v0.1/merchants/{merchant_code}/members
curl https://api.sumup.com/v0.1/merchants/{merchant_code}/members \
-X GET \
-H "Authorization: Bearer $SUMUP_API_KEY"
sumup members list \
--merchant-code "MK10CL2A"
import SumUp from "@sumup/sdk";
async function main() {
const client = new SumUp({ apiKey: "sup_sk_your_api_key" });
const result = await client.members.list(
"MK10CL2A",
{
"offset": 0
}
);
console.log(result);
}
main().catch(console.error);
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SumUp;
public static class Program
{
public static async Task Main()
{
using var client = new SumUpClient();
var response = await client.Members.ListAsync(
"your-merchant-code",
new MembersListOptions
{
Offset = 10,
Limit = 10,
Scroll = true,
Email = "merchant@example.com",
UserId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
UserType = Array.Empty<UserType>(),
Status = MembershipStatus.Accepted,
Roles = Array.Empty<string>(),
});
Console.WriteLine(response.StatusCode);
}
}
import com.sumup.sdk.SumUpClient;
public final class ListMerchantMembersSample {
public static void main(String[] args) throws Exception {
var client = new SumUpClient();
var result = client.members().list(
"MK10CL2A"
);
System.out.println(result);
}
}
import os
import sumup
client = sumup.Sumup(api_key=os.environ["SUMUP_API_KEY"])
result = client.members.list(
"MK10CL2A",
offset=0,
limit=10,
scroll=True,
email="user",
user_id="245b2ead-85bf-45ff-856f-311a88a5d454",
status="accepted",
roles=[
"role_employee",
"role_accountant",
],
)
print(result)
$sumup = new \SumUp\SumUp();
$result = $sumup->members->list('MK10CL2A');
package main
import (
"context"
"fmt"
"github.com/sumup/sumup-go"
)
func main() {
client := sumup.NewClient()
result, err := client.Members.List(context.TODO(), "MK10CL2A", sumup.MembersListParams{
Offset: new(0),
Limit: new(10),
Scroll: new(true),
Email: new("user"),
UserID: new("245b2ead-85bf-45ff-856f-311a88a5d454"),
Status: new(sumup.MembershipStatus("accepted")),
Roles: []string{"role_employee", "role_accountant"},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", result)
}
use sumup::{Authorization, Client};
#[tokio::main]
async fn main() {
let client = Client::default()
.with_authorization(Authorization::api_key("sup_sk_test_..."));
let response = client
.members()
.list("MERCHANT_CODE", Default::default())
.await
.expect("list request failed");
println!("{response:#?}");
}
List members response
{
"items": [
{
"id": "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
"roles": [
"role_admin",
"role_owner"
],
"permissions": [
"members_read",
"members_write",
"create_moto_payments",
"full_transaction_history_view",
"refund_transactions",
"create_referral",
"developer_settings_edit",
"developer_settings_access"
],
"created_at": "2023-01-20T15:16:17Z",
"updated_at": "2023-02-20T15:16:17Z",
"user": {
"id": "44ca0f5b-813b-46e1-aee7-e6242010662e",
"email": "example@sumup.com",
"mfa_on_login_enabled": true,
"virtual_user": false,
"service_account_user": false
},
"status": "accepted"
}
],
"total_count": 3
}

Content-Type: application/problem+json

Merchant not found.

  • typestringrequiredformat: uri

    A URI reference that identifies the problem type.

    Example: "https://developer.sumup.com/problem/not-found"
  • titlestring

    A short, human-readable summary of the problem type.

    Example: "Requested resource couldn't be found."
  • statusinteger

    The HTTP status code generated by the origin server for this occurrence of the problem.

    Example: 404
  • detailstring

    A human-readable explanation specific to this occurrence of the problem.

    Example: "The requested resource doesn't exist or does not belong to you."
  • instancestringformat: uri

    A URI reference that identifies the specific occurrence of the problem.

    Example: "https://api.sumup.com/v0.1/checkouts/4e425463-3e1b-431d-83fa-1e51c2925e99"
Error 404
{
"type": "https://developer.sumup.com/problem/not-found",
"title": "Requested resource couldn't be found.",
"status": 404,
"detail": "The requested resource doesn't exist or does not belong to you."
}
Members

Create a member

POST/v0.1/merchants/{merchant_code}/members

Adds a member to the merchant account with the specified roles.

By default, sends an invitation email to the provided address. The recipient must accept the invitation to join the account. When is_managed_user is true, creates a managed user with the provided password and optional nickname and assigns the roles directly, without sending an invitation.

Requires one of scopes:user.subaccountsmembers.write
Required permissions:members_create

Path Parameters

  • merchant_codestringrequired

    Short unique identifier for the merchant.

    Example: "MK10CL2A"

Body Parameters

  • is_managed_userboolean

    True if the user is managed by the merchant. In this case, we'll created a virtual user with the provided password and nickname.

  • emailstringrequiredmax length: 256, format: email

    Email address of the member to add.

  • passwordstringmin length: 8, format: password

    Password of the member to add. Only used if is_managed_user is true. In the case of service accounts, the password is not used and can not be defined by the caller.

  • nicknamestringmax length: 64

    Nickname of the member to add. Only used if is_managed_user is true. Used for display purposes only.

    Example: "Test User"
  • roles[]stringrequiredmin items: 1, max items: 124

    List of roles to assign to the new member.

  • metadataobjectmax properties: 64

    Set of user-defined key-value pairs attached to the object. Partial updates are not supported. When updating, always submit whole metadata. Maximum of 64 parameters are allowed in the object.

    Example: {}
  • attributesobject

    Object attributes that are modifiable only by SumUp applications.

    Example: {}

Response

Returns the Member object if the creation succeeded. See Member object.

  • idstringrequired

    ID of the member.

    Example: "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"
  • roles[]stringrequired

    User's roles.

  • permissions[]stringrequireddeprecated
    Caution

    Permissions include only legacy permissions, please use roles instead. Member access is based on roles within a given resource and the permissions these roles grant.

    User's permissions.

  • created_atstringrequiredformat: date-time

    The timestamp of when the member was created.

    Example: "2023-01-20T15:16:17Z"
  • updated_atstringrequiredformat: date-time

    The timestamp of when the member was last updated.

    Example: "2023-01-20T15:16:17Z"
  • userobject

    Information about the user associated with the membership.

     Show attributes
     Close
    Attributes
    • idstringrequired

      Identifier for the End-User (also called Subject).

      Example: "44ca0f5b-813b-46e1-aee7-e6242010662e"
    • typestringrequired
      Options: usermanaged_userservice_accountsystem_account

      Type of the user account.

      Example: "user"
    • emailstringrequired

      End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322] addr-spec syntax. The RP MUST NOT rely upon this value being unique, for unique identification use ID instead.

      Example: "example@sumup.com"
    • mfa_on_login_enabledbooleanrequired

      True if the user has enabled MFA on login.

      Example: true
    • virtual_userbooleanrequireddeprecated
      Caution

      Rely on type instead.

      True if the user is a virtual user (operator).

    • service_account_userbooleanrequireddeprecated
      Caution

      Rely on type instead.

      True if the user is a service account.

    • disabled_atstringformat: date-time

      Time when the user has been disabled. Applies only to virtual users (virtual_user: true).

    • nicknamestring

      User's nickname. Used for display purposes only.

      Example: "Test User"
    • picturestringformat: uri

      URL of the End-User's profile picture. This URL refers to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image.

      Example: "https://usercontent.sumup.com/44ca0f5b-813b-46e1-aee7-e6242010662e.png"
    • classicobjectdeprecated

      Classic identifiers of the user.

       Show attributes
       Close
      Attributes
      • user_idintegerrequiredminimum: 0, maximum: 2147483647
  • inviteInvite

    Pending invitation for membership.

     Show attributes
     Close
    Invite
    • emailstringrequiredformat: email

      Email address of the invited user.

      Example: "boaty.mcboatface@sumup.com"
    • expires_atstringrequiredformat: date-time
      Example: "2023-01-20T15:16:17Z"
  • statusstringrequired
    Options: acceptedpendingexpireddisabledunknown

    The status of the membership.

  • metadataobjectmax properties: 64

    Set of user-defined key-value pairs attached to the object. Partial updates are not supported. When updating, always submit whole metadata. Maximum of 64 parameters are allowed in the object.

    Example: {}
  • attributesobject

    Object attributes that are modifiable only by SumUp applications.

    Example: {}
POST/v0.1/merchants/{merchant_code}/members
curl https://api.sumup.com/v0.1/merchants/{merchant_code}/members \
-X POST \
-H "Authorization: Bearer $SUMUP_API_KEY" \
--json '{
"email": "karl.berg@example.com",
"roles": [
"role_employee"
]
}'
sumup members create \
--merchant-code "MK10CL2A" \
--email "karl.berg@example.com" \
--password "secret" \
--role "role_employee"
import SumUp from "@sumup/sdk";
async function main() {
const client = new SumUp({ apiKey: "sup_sk_your_api_key" });
const result = await client.members.create(
"MK10CL2A",
{
"email": "karl.berg@example.com",
"roles": [
"role_employee"
]
}
);
console.log(result);
}
main().catch(console.error);
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SumUp;
public static class Program
{
public static async Task Main()
{
using var client = new SumUpClient();
var response = await client.Members.CreateAsync(
"your-merchant-code",
new MembersCreateRequest
{
Email = "karl.berg@example.com",
Roles = new string[]
{
"role_employee",
},
});
Console.WriteLine(response.StatusCode);
}
}
import com.sumup.sdk.SumUpClient;
public final class CreateMerchantMemberSample {
public static void main(String[] args) throws Exception {
var client = new SumUpClient();
var result = client.members().create(
"MK10CL2A",
com.sumup.sdk.models.CreateMerchantMemberRequest.builder()
.email("karl.berg@example.com")
.roles(java.util.List.of("role_employee"))
.build()
);
System.out.println(result);
}
}
import os
import sumup
client = sumup.Sumup(api_key=os.environ["SUMUP_API_KEY"])
result = client.members.create(
"MK10CL2A",
email="karl.berg@example.com",
roles=[
"role_employee",
],
)
print(result)
$sumup = new \SumUp\SumUp();
$result = $sumup->members->create('MK10CL2A', [
'email' => 'karl.berg@example.com',
'roles' => [ 'role_employee'],
]);
package main
import (
"context"
"fmt"
"github.com/sumup/sumup-go"
)
func main() {
client := sumup.NewClient()
result, err := client.Members.Create(context.TODO(), "MK10CL2A", sumup.MembersCreateParams{
Email: "karl.berg@example.com",
Roles: []string{"role_employee"},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", result)
}
use sumup::{Authorization, Client};
#[tokio::main]
async fn main() {
let client = Client::default()
.with_authorization(Authorization::api_key("sup_sk_test_..."));
let body = sumup::resources::members::CreateRequest {
attributes: None,
email: "karl.berg@example.com".to_string(),
is_managed_user: None,
metadata: None,
nickname: None,
password: None,
roles: vec!["role_employee".to_string()],
};
let response = client
.members()
.create("MERCHANT_CODE", body)
.await
.expect("create request failed");
println!("{response:#?}");
}
Create a member response
{
"id": "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
"roles": [
"role_admin",
"role_owner"
],
"permissions": [
"members_read",
"members_write",
"create_moto_payments",
"full_transaction_history_view",
"refund_transactions",
"create_referral",
"developer_settings_edit",
"developer_settings_access"
],
"created_at": "2023-01-20T15:16:17Z",
"updated_at": "2023-02-20T15:16:17Z",
"user": {
"id": "44ca0f5b-813b-46e1-aee7-e6242010662e",
"email": "example@sumup.com",
"mfa_on_login_enabled": true,
"virtual_user": false,
"service_account_user": false
},
"status": "accepted"
}

Content-Type: application/problem+json

Invalid request.

  • typestringrequiredformat: uri

    A URI reference that identifies the problem type.

    Example: "https://developer.sumup.com/problem/not-found"
  • titlestring

    A short, human-readable summary of the problem type.

    Example: "Requested resource couldn't be found."
  • statusinteger

    The HTTP status code generated by the origin server for this occurrence of the problem.

    Example: 404
  • detailstring

    A human-readable explanation specific to this occurrence of the problem.

    Example: "The requested resource doesn't exist or does not belong to you."
  • instancestringformat: uri

    A URI reference that identifies the specific occurrence of the problem.

    Example: "https://api.sumup.com/v0.1/checkouts/4e425463-3e1b-431d-83fa-1e51c2925e99"
Error 400
{
"type": "https://developer.sumup.com/problem/bad-request",
"title": "Bad Request",
"status": 400,
"detail": "Request validation failed."
}
Members

Retrieve a member

GET/v0.1/merchants/{merchant_code}/members/{member_id}

Retrieve a merchant member.

Requires one of scopes:user.subaccountsmembers.read
Required permissions:members_view

Path Parameters

  • merchant_codestringrequired

    Short unique identifier for the merchant.

    Example: "MK10CL2A"
  • member_idstringrequired

    The ID of the member to retrieve.

    Example: "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"

Response

Returns the Member object for a valid identifier. See Member object.

  • idstringrequired

    ID of the member.

    Example: "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"
  • roles[]stringrequired

    User's roles.

  • permissions[]stringrequireddeprecated
    Caution

    Permissions include only legacy permissions, please use roles instead. Member access is based on roles within a given resource and the permissions these roles grant.

    User's permissions.

  • created_atstringrequiredformat: date-time

    The timestamp of when the member was created.

    Example: "2023-01-20T15:16:17Z"
  • updated_atstringrequiredformat: date-time

    The timestamp of when the member was last updated.

    Example: "2023-01-20T15:16:17Z"
  • userobject

    Information about the user associated with the membership.

     Show attributes
     Close
    Attributes
    • idstringrequired

      Identifier for the End-User (also called Subject).

      Example: "44ca0f5b-813b-46e1-aee7-e6242010662e"
    • typestringrequired
      Options: usermanaged_userservice_accountsystem_account

      Type of the user account.

      Example: "user"
    • emailstringrequired

      End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322] addr-spec syntax. The RP MUST NOT rely upon this value being unique, for unique identification use ID instead.

      Example: "example@sumup.com"
    • mfa_on_login_enabledbooleanrequired

      True if the user has enabled MFA on login.

      Example: true
    • virtual_userbooleanrequireddeprecated
      Caution

      Rely on type instead.

      True if the user is a virtual user (operator).

    • service_account_userbooleanrequireddeprecated
      Caution

      Rely on type instead.

      True if the user is a service account.

    • disabled_atstringformat: date-time

      Time when the user has been disabled. Applies only to virtual users (virtual_user: true).

    • nicknamestring

      User's nickname. Used for display purposes only.

      Example: "Test User"
    • picturestringformat: uri

      URL of the End-User's profile picture. This URL refers to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image.

      Example: "https://usercontent.sumup.com/44ca0f5b-813b-46e1-aee7-e6242010662e.png"
    • classicobjectdeprecated

      Classic identifiers of the user.

       Show attributes
       Close
      Attributes
      • user_idintegerrequiredminimum: 0, maximum: 2147483647
  • inviteInvite

    Pending invitation for membership.

     Show attributes
     Close
    Invite
    • emailstringrequiredformat: email

      Email address of the invited user.

      Example: "boaty.mcboatface@sumup.com"
    • expires_atstringrequiredformat: date-time
      Example: "2023-01-20T15:16:17Z"
  • statusstringrequired
    Options: acceptedpendingexpireddisabledunknown

    The status of the membership.

  • metadataobjectmax properties: 64

    Set of user-defined key-value pairs attached to the object. Partial updates are not supported. When updating, always submit whole metadata. Maximum of 64 parameters are allowed in the object.

    Example: {}
  • attributesobject

    Object attributes that are modifiable only by SumUp applications.

    Example: {}
GET/v0.1/merchants/{merchant_code}/members/{member_id}
curl https://api.sumup.com/v0.1/merchants/{merchant_code}/members/{member_id} \
-X GET \
-H "Authorization: Bearer $SUMUP_API_KEY"
sumup members get "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP" \
--merchant-code "MK10CL2A"
import SumUp from "@sumup/sdk";
async function main() {
const client = new SumUp({ apiKey: "sup_sk_your_api_key" });
const result = await client.members.get(
"MK10CL2A",
"mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"
);
console.log(result);
}
main().catch(console.error);
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SumUp;
public static class Program
{
public static async Task Main()
{
using var client = new SumUpClient();
var response = await client.Members.GetAsync(
"your-merchant-code",
"example-id");
Console.WriteLine(response.StatusCode);
}
}
import com.sumup.sdk.SumUpClient;
public final class GetMerchantMemberSample {
public static void main(String[] args) throws Exception {
var client = new SumUpClient();
var result = client.members().get(
"mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
"MK10CL2A"
);
System.out.println(result);
}
}
import os
import sumup
client = sumup.Sumup(api_key=os.environ["SUMUP_API_KEY"])
result = client.members.get(
"MK10CL2A",
"mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
)
print(result)
$sumup = new \SumUp\SumUp();
$result = $sumup->members->get('MK10CL2A', 'mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP');
package main
import (
"context"
"fmt"
"github.com/sumup/sumup-go"
)
func main() {
client := sumup.NewClient()
result, err := client.Members.Get(context.TODO(), "MK10CL2A", "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", result)
}
use sumup::{Authorization, Client};
#[tokio::main]
async fn main() {
let client = Client::default()
.with_authorization(Authorization::api_key("sup_sk_test_..."));
let response = client
.members()
.get("MERCHANT_CODE", "MEMBER_ID")
.await
.expect("get request failed");
println!("{response:#?}");
}
Retrieve a member response
{
"id": "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
"roles": [
"role_admin",
"role_owner"
],
"permissions": [
"members_read",
"members_write",
"create_moto_payments",
"full_transaction_history_view",
"refund_transactions",
"create_referral",
"developer_settings_edit",
"developer_settings_access"
],
"created_at": "2023-01-20T15:16:17Z",
"updated_at": "2023-02-20T15:16:17Z",
"user": {
"id": "44ca0f5b-813b-46e1-aee7-e6242010662e",
"email": "example@sumup.com",
"mfa_on_login_enabled": true,
"virtual_user": false,
"service_account_user": false
},
"status": "accepted"
}

Content-Type: application/problem+json

Merchant or member not found.

  • typestringrequiredformat: uri

    A URI reference that identifies the problem type.

    Example: "https://developer.sumup.com/problem/not-found"
  • titlestring

    A short, human-readable summary of the problem type.

    Example: "Requested resource couldn't be found."
  • statusinteger

    The HTTP status code generated by the origin server for this occurrence of the problem.

    Example: 404
  • detailstring

    A human-readable explanation specific to this occurrence of the problem.

    Example: "The requested resource doesn't exist or does not belong to you."
  • instancestringformat: uri

    A URI reference that identifies the specific occurrence of the problem.

    Example: "https://api.sumup.com/v0.1/checkouts/4e425463-3e1b-431d-83fa-1e51c2925e99"
Error 404
{
"type": "https://developer.sumup.com/problem/not-found",
"title": "Requested resource couldn't be found.",
"status": 404,
"detail": "The requested resource doesn't exist or does not belong to you."
}
Members

Update a member

PUT/v0.1/merchants/{merchant_code}/members/{member_id}

Updates a merchant member and returns the updated member.

Providing roles replaces the member’s assigned roles and can grant or revoke access. Providing metadata replaces the entire metadata object. For managed users, user.nickname changes the display name and user.password replaces the password. Updating the password also enables the managed user account.

Requires one of scopes:user.subaccountsmembers.write
Required permissions:members_update

Path Parameters

  • merchant_codestringrequired

    Short unique identifier for the merchant.

    Example: "MK10CL2A"
  • member_idstringrequired

    The ID of the member to retrieve.

    Example: "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"

Body Parameters

  • roles[]stringmin items: 1, max items: 124
  • metadataobjectmax properties: 64

    Set of user-defined key-value pairs attached to the object. Partial updates are not supported. When updating, always submit whole metadata. Maximum of 64 parameters are allowed in the object.

    Example: {}
  • attributesobject

    Object attributes that are modifiable only by SumUp applications.

    Example: {}
  • userobject

    Allows you to update user data of managed users.

     Show attributes
     Close
    Attributes
    • nicknamestringmax length: 64

      User's nickname. Used for display purposes only.

      Example: "Test User"
    • passwordstringmin length: 8, format: password

      Password of the member to add. Only used if is_managed_user is true.

Response

Returns the updated Member object if the update succeeded. See Member object.

  • idstringrequired

    ID of the member.

    Example: "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"
  • roles[]stringrequired

    User's roles.

  • permissions[]stringrequireddeprecated
    Caution

    Permissions include only legacy permissions, please use roles instead. Member access is based on roles within a given resource and the permissions these roles grant.

    User's permissions.

  • created_atstringrequiredformat: date-time

    The timestamp of when the member was created.

    Example: "2023-01-20T15:16:17Z"
  • updated_atstringrequiredformat: date-time

    The timestamp of when the member was last updated.

    Example: "2023-01-20T15:16:17Z"
  • userobject

    Information about the user associated with the membership.

     Show attributes
     Close
    Attributes
    • idstringrequired

      Identifier for the End-User (also called Subject).

      Example: "44ca0f5b-813b-46e1-aee7-e6242010662e"
    • typestringrequired
      Options: usermanaged_userservice_accountsystem_account

      Type of the user account.

      Example: "user"
    • emailstringrequired

      End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322] addr-spec syntax. The RP MUST NOT rely upon this value being unique, for unique identification use ID instead.

      Example: "example@sumup.com"
    • mfa_on_login_enabledbooleanrequired

      True if the user has enabled MFA on login.

      Example: true
    • virtual_userbooleanrequireddeprecated
      Caution

      Rely on type instead.

      True if the user is a virtual user (operator).

    • service_account_userbooleanrequireddeprecated
      Caution

      Rely on type instead.

      True if the user is a service account.

    • disabled_atstringformat: date-time

      Time when the user has been disabled. Applies only to virtual users (virtual_user: true).

    • nicknamestring

      User's nickname. Used for display purposes only.

      Example: "Test User"
    • picturestringformat: uri

      URL of the End-User's profile picture. This URL refers to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image.

      Example: "https://usercontent.sumup.com/44ca0f5b-813b-46e1-aee7-e6242010662e.png"
    • classicobjectdeprecated

      Classic identifiers of the user.

       Show attributes
       Close
      Attributes
      • user_idintegerrequiredminimum: 0, maximum: 2147483647
  • inviteInvite

    Pending invitation for membership.

     Show attributes
     Close
    Invite
    • emailstringrequiredformat: email

      Email address of the invited user.

      Example: "boaty.mcboatface@sumup.com"
    • expires_atstringrequiredformat: date-time
      Example: "2023-01-20T15:16:17Z"
  • statusstringrequired
    Options: acceptedpendingexpireddisabledunknown

    The status of the membership.

  • metadataobjectmax properties: 64

    Set of user-defined key-value pairs attached to the object. Partial updates are not supported. When updating, always submit whole metadata. Maximum of 64 parameters are allowed in the object.

    Example: {}
  • attributesobject

    Object attributes that are modifiable only by SumUp applications.

    Example: {}
PUT/v0.1/merchants/{merchant_code}/members/{member_id}
curl https://api.sumup.com/v0.1/merchants/{merchant_code}/members/{member_id} \
-X PUT \
-H "Authorization: Bearer $SUMUP_API_KEY" \
--json '{
"Update member\'s role": {
"roles": [
"role_manager"
]
},
"Update managed user": {
"user": {
"nickname": "New Employee Name"
}
}
}'
sumup members update "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP" \
--merchant-code "MK10CL2A" \
--role "role_manager" \
--nickname "New Employee Name"
import SumUp from "@sumup/sdk";
async function main() {
const client = new SumUp({ apiKey: "sup_sk_your_api_key" });
const result = await client.members.update(
"MK10CL2A",
"mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
{}
);
console.log(result);
}
main().catch(console.error);
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SumUp;
public static class Program
{
public static async Task Main()
{
using var client = new SumUpClient();
var response = await client.Members.UpdateAsync(
"your-merchant-code",
"example-id",
new MembersUpdateRequest { });
Console.WriteLine(response.StatusCode);
}
}
import com.sumup.sdk.SumUpClient;
public final class UpdateMerchantMemberSample {
public static void main(String[] args) throws Exception {
var client = new SumUpClient();
var result = client.members().update(
"mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
"MK10CL2A",
com.sumup.sdk.models.UpdateMerchantMemberRequest.builder()
.build()
);
System.out.println(result);
}
}
import os
import sumup
client = sumup.Sumup(api_key=os.environ["SUMUP_API_KEY"])
result = client.members.update(
"MK10CL2A",
"mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
)
print(result)
$sumup = new \SumUp\SumUp();
$result = $sumup->members->update('MK10CL2A', 'mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP', [
'Update member's role' => [
'roles' => [ 'role_manager'],
],
'Update managed user' => [
'user' => [
'nickname' => 'New Employee Name',
],
],
]);
package main
import (
"context"
"fmt"
"github.com/sumup/sumup-go"
)
func main() {
client := sumup.NewClient()
result, err := client.Members.Update(context.TODO(), "MK10CL2A", "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP", sumup.MembersUpdateParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", result)
}
use sumup::{Authorization, Client};
#[tokio::main]
async fn main() {
let client = Client::default()
.with_authorization(Authorization::api_key("sup_sk_test_..."));
let body = sumup::resources::members::UpdateRequest {
..Default::default()
};
let response = client
.members()
.update("MERCHANT_CODE", "MEMBER_ID", body)
.await
.expect("update request failed");
println!("{response:#?}");
}
Update a member response
{
"id": "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
"roles": [
"role_admin",
"role_owner"
],
"permissions": [
"members_read",
"members_write",
"create_moto_payments",
"full_transaction_history_view",
"refund_transactions",
"create_referral",
"developer_settings_edit",
"developer_settings_access"
],
"created_at": "2023-01-20T15:16:17Z",
"updated_at": "2023-02-20T15:16:17Z",
"user": {
"id": "44ca0f5b-813b-46e1-aee7-e6242010662e",
"email": "example@sumup.com",
"mfa_on_login_enabled": true,
"virtual_user": false,
"service_account_user": false
},
"status": "accepted"
}

Content-Type: application/problem+json

Cannot set password or nickname for an invited user.

  • typestringrequiredformat: uri

    A URI reference that identifies the problem type.

    Example: "https://developer.sumup.com/problem/not-found"
  • titlestring

    A short, human-readable summary of the problem type.

    Example: "Requested resource couldn't be found."
  • statusinteger

    The HTTP status code generated by the origin server for this occurrence of the problem.

    Example: 404
  • detailstring

    A human-readable explanation specific to this occurrence of the problem.

    Example: "The requested resource doesn't exist or does not belong to you."
  • instancestringformat: uri

    A URI reference that identifies the specific occurrence of the problem.

    Example: "https://api.sumup.com/v0.1/checkouts/4e425463-3e1b-431d-83fa-1e51c2925e99"
Error 400
{
"type": "https://developer.sumup.com/problem/bad-request",
"title": "Bad Request",
"status": 400,
"detail": "Request validation failed."
}
Members

Delete a member

DELETE/v0.1/merchants/{merchant_code}/members/{member_id}

Deletes a merchant member.

Requires one of scopes:user.subaccountsmembers.write
Required permissions:members_delete

Path Parameters

  • merchant_codestringrequired

    Short unique identifier for the merchant.

    Example: "MK10CL2A"
  • member_idstringrequired

    The ID of the member to retrieve.

    Example: "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"

Response

Returns empty response.

DELETE/v0.1/merchants/{merchant_code}/members/{member_id}
curl https://api.sumup.com/v0.1/merchants/{merchant_code}/members/{member_id} \
-X DELETE \
-H "Authorization: Bearer $SUMUP_API_KEY"
sumup members delete "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP" \
--merchant-code "MK10CL2A"
import SumUp from "@sumup/sdk";
async function main() {
const client = new SumUp({ apiKey: "sup_sk_your_api_key" });
const result = await client.members.delete(
"MK10CL2A",
"mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"
);
console.log(result);
}
main().catch(console.error);
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SumUp;
public static class Program
{
public static async Task Main()
{
using var client = new SumUpClient();
var response = await client.Members.DeleteAsync(
"your-merchant-code",
"example-id");
Console.WriteLine(response.StatusCode);
}
}
import com.sumup.sdk.SumUpClient;
public final class DeleteMerchantMemberSample {
public static void main(String[] args) throws Exception {
var client = new SumUpClient();
client.members().delete(
"mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
"MK10CL2A"
);
}
}
import os
import sumup
client = sumup.Sumup(api_key=os.environ["SUMUP_API_KEY"])
client.members.delete(
"MK10CL2A",
"mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP",
)
$sumup = new \SumUp\SumUp();
$result = $sumup->members->delete('MK10CL2A', 'mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP');
package main
import (
"context"
"github.com/sumup/sumup-go"
)
func main() {
client := sumup.NewClient()
if err := client.Members.Delete(context.TODO(), "MK10CL2A", "mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP"); err != nil {
panic(err.Error())
}
}
use sumup::{Authorization, Client};
#[tokio::main]
async fn main() {
let client = Client::default()
.with_authorization(Authorization::api_key("sup_sk_test_..."));
let response = client
.members()
.delete("MERCHANT_CODE", "MEMBER_ID")
.await
.expect("delete request failed");
println!("{response:#?}");
}

Content-Type: application/problem+json

Member deletion was forbidden.

  • typestringrequiredformat: uri

    A URI reference that identifies the problem type.

    Example: "https://developer.sumup.com/problem/not-found"
  • titlestring

    A short, human-readable summary of the problem type.

    Example: "Requested resource couldn't be found."
  • statusinteger

    The HTTP status code generated by the origin server for this occurrence of the problem.

    Example: 404
  • detailstring

    A human-readable explanation specific to this occurrence of the problem.

    Example: "The requested resource doesn't exist or does not belong to you."
  • instancestringformat: uri

    A URI reference that identifies the specific occurrence of the problem.

    Example: "https://api.sumup.com/v0.1/checkouts/4e425463-3e1b-431d-83fa-1e51c2925e99"
Error 403
{
"type": "https://developer.sumup.com/problem/forbidden",
"title": "Forbidden",
"status": 403,
"detail": "You do not have permission to perform this action."
}