Create accounts for your users

Before reading this tutorial...

You should be familiar with the following concepts:

WePay lets you create accounts for your users through the API, so they can start accepting payments on your platform, instantly.

Creating an account for a user happens in two steps:

  1. OAuth2: Get the user's authorization to create and manage their WePay account
  2. Get an access token for the user
  3. Create a WePay account for the user using the /account/create call.


The purpose of OAuth2 is to get an access_token for a user, so you can create and manage their account.

First, send the user to the authorization endpoint uri with the following parameters uri encoded:

Parameter Description
client_id Your app's unique identifier. Find it on your dashboard
redirect_uri Where the user will be redirected after they complete the authorization.
scope Custom user permission settings are no longer supported. Please provide a comma-separated list of all of the following permissions when registering a user with this call: manage_accounts, collect_payments, view_user, preapprove_payments, and send_money.
    client_id=[your client id]
    &redirect_uri=[your redirect uri]]

The user will see the following screen:

Want to customize this page?

Create a theme and upload a logo to ensure a great user experience.

Learn more about customization


Once the user grants you authorization, they'll be returned to the redirect_uri you've provided along with a url-encoded code parameter.

Get an access token

Set up your redirect_uri to listen for this code parameter, which you can exchange for an access_token using the /oauth2/token call. The response to the call will be sent to the redirect_uri provided in the call as a POST request.

API Call:

Parameter Description
client_id Your app's unique identifier. Found on your dashboard
client_secret Your app's secret password. Found on your dashboard
redirect_uri The redirect uri you used in the authorization endpoint uri (previous step)
code The code you received in the previous step
    client_id=[your client id]
    &redirect_uri=[your redirect uri]
    &client_secret=[your client secret]
    &code=[code you got in the previous step]


Parameter Description
user_id The unique ID of the user that has granted you authorization
access_token The token that allows you to make calls on behalf of that user
token_type For now, this will always be BEARER
expires_in When the token will expire. If not present, the token will not expire automatically.

Now that you have an access_token for the user, you have everything you need to create a WePay account for them.

Create a WePay account

To create a WePay account for one of your users, use the /account/create call with that user's access_token.

API Call:

Parameter Description
name What you would like to name the account. (Note: This appears on people's credit card statements, so we suggest using the name of the person or business accepting payments)
description The description or purpose of the account you're creating.
  • PHP
  • cURL
  • Ruby
  • Python
    // WePay PHP SDK -
    require 'wepay.php';

    // application settings
    $client_id = 123456789;
    $client_secret = "1a3b5c7d9";
    $access_token = "1a3b5c7d9";

    // change to useProduction for live environments
    Wepay::useStaging($client_id, $client_secret);

    $wepay = new WePay($access_token);

    // create an account for a user
    $response = $wepay->request('account/create/', array(
        'name'          => 'Account Name',
        'description'   => 'A description for your account.'

    // display the response
curl \
	-H "Authorization: Bearer STAGE_8a19aff55b85a436dad5cd1386db1999437facb5914b494f4da5f206a56a5d20" \
	-d "name=Account name" \
	-d "description=A description for your account."
# WePay Ruby SDK -
require 'wepay'

# application settings
client_id = 123456789
client_secret = '1a3b5c7d9'
access_token = '1a3b5c7d9'

# set _use_stage to false for live environments
wepay =, client_secret, _use_stage = true)

# create an account for a user
response ='/account/create', access_token, {
    :name          => 'Account Name',
    :description   => 'A description for your account.'

# display the response
p response
# WePay Python SDK -
from wepay import WePay

# application settings
access_token = '1a3b5c7d9'
production = False

# set production to True for live environments
wepay = WePay(production, access_token)

# create an account for a user
response ='/account/create', {
    'name': 'Account Name',
    'description': 'A description for your account.'

# display the response
print response


Parameter Description
account_id The user's account, which will hold the payments they receive
account_uri A uri that corresponds to the account's page on WePay.

Now that you've learned how to create accounts for your users, they can start accepting payments on your platform.