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:
- OAuth2: Get the user's authorization to create and manage their WePay account
- Get an access token for the user
- Create a WePay account for the user using the /account/create call.
OAuth2
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. |
https://stage.wepay.com/v2/oauth2/authorize?
client_id=[your client id]
&redirect_uri=[your redirect uri]]
&scope=[manage_accounts,collect_payments,view_user,preapprove_payments,send_money]
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 customizationResponse:
Once the user grants you authorization, they'll be returned to the redirect_uri you've provided along with a url-encoded code parameter.
http://example.com/setup?code=1a2b3c4d5e6f
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 |
https://stage.wepayapi.com/v2/oauth2/token?
client_id=[your client id]
&redirect_uri=[your redirect uri]
&client_secret=[your client secret]
&code=[code you got in the previous step]
Response:
| 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. |
{
"user_id":123456,
"access_token":"1a2b3c4d5e6f",
"token_type":"BEARER"
}
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
<?php
// WePay PHP SDK - http://git.io/mY7iQQ
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
print_r($response);
?>
curl https://stage.wepayapi.com/v2/account/create \ -H "Authorization: Bearer STAGE_8a19aff55b85a436dad5cd1386db1999437facb5914b494f4da5f206a56a5d20" \ -d "name=Account name" \ -d "description=A description for your account."
# WePay Ruby SDK - http://git.io/a_c2uQ require 'wepay' # application settings client_id = 123456789 client_secret = '1a3b5c7d9' access_token = '1a3b5c7d9' # set _use_stage to false for live environments wepay = WePay::Client.new(client_id, client_secret, _use_stage = true) # create an account for a user response = wepay.call('/account/create', access_token, { :name => 'Account Name', :description => 'A description for your account.' }) # display the response p response
# WePay Python SDK - http://git.io/v7Y1jA 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 = wepay.call('/account/create', { 'name': 'Account Name', 'description': 'A description for your account.' }) # display the response print response
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. |
{
"account_id":12345,
"account_uri":"http:\/\/stage.wepay.com\/group\/view\/12345"
}
Now that you've learned how to create accounts for your users, they can start accepting payments on your platform.