Get Sandbox Access

Paybase Developer Centre

OverviewAPI GuidesGetting StartedRecipesGig Economy PlatformsSharing Economy PlatformsMarketplacesBlockchain BusinessesEscrowSandboxRolesRulesDue DiligenceCustomersAccountsBank AccountsCardsTransactionsIntroductionInboundGetting money into the systemTransaction ReferenceAccount ReferenceInternalOutboundEscrowSplit PaymentsRefundsStrong Customer Authentication3D Secure AuthenticationIntroductionCreate a cardCreate a transactionDocument UploadStatementsWebhooksErrorsPQLAPI ReferenceAccountCreate an accountRetrieve an accountTransition account statusList all accountsAnnotate an accountDelete annotation from an accountTag an accountDelete tag from an accountBank AccountCreate a bank accountRetrieve a bank accountUpdate a bank accountTransition bank account statusList all bank accountsAnnotate a bank accountDelete annotation from a bank accountTag a bank accountDelete tag from a bank accountCardCreate a cardRetrieve a cardUpdate a cardTransition card statusList all cardsAnnotate a cardDelete annotation from a cardTag a cardDelete tag from a cardCardholderCreate a cardholderRetrieve a cardholderUpdate a cardholderTransition cardholder statusList all cardholdersAnnotate a cardholderDelete annotation from a cardholderTag a cardholderDelete tag from a cardholderCreate an authentication tokenCheckCreate a checkCustomerIndividual CustomerCreate a customerRetrieve a customerUpdate a customerSole TraderCreate a customerRetrieve a customerUpdate a customerOrganisationCreate a CustomerRetrieve a CustomerUpdate a CustomerIncorporated BusinessCreate a customerRetrieve a customerUpdate a customerBusiness PersonAdd a business personRetrieve a business personUpdate a business personDelete a business personRetrieve a customerTransition state of a customerList all customersAnnotate a customerDelete annotation from a customerTag a customerRemove tag from a customerCreate an authentication tokenTouch a customerDocumentCreate a documentRetrieve a documentList Document TypesReferenceRetrieve a referenceStatementRetrieve a statementStatusRetrieve API statusTransactionCreate inbound transactionCreate internal transactionCreate outbound transactionRetrieve a transactionTransition transaction statusList all transactionsAnnotate a transactionDelete annotation from a transactionTag a transactionDelete tag from a transaction
API version: ba085a6

Customers

Customers are entities that can own one or multiple Cards, Accounts and Bank Accounts. Depending on your business model, you will create a Customer entity for one or multiple participants on your platform.

Customers are created as one of the following types:

  • Individual - A sender or recipient of funds acting in a personal capacity.

  • Sole Trader - Individuals sending on receiving funds on a platform in a business capacity.

  • Incorporated Business - A limited company that is sending on receiving funds on a platform.

  • Organisation - Other types of entities participating in the platform e.g. Charities, Partnerships etc.

Every Customer created on the platform is indirectly also in a contractual relationship with Paybase and is therefore required to pass the necessary Customer Due Diligence (CDD) checks to satisfy regulatory requirements. You are responsible for collecting the required information from your customers and passing it to Paybase. To ensure that you collect the right level of information, you must create a Customer of the type that actually reflects the type of entity your customer is. For example, if a customer on your platform is a Sole Trader, do not create them as an Individual as you will not be able to provide the industry or tradingName of the Sole Trader which might be required to successfully pass verification.

Paybase offers 5 Customer Due Diligence (CDD) levels so that you have the flexibility to collect Customer details for verification in multiple stages to minimise friction in your user onboarding journey. Each CDD Level has an associated limit up to which a Customer can transact before additional information will be required for them to continue transacting at higher levels.

When creating a Customer, you will need to assign them a Role using the roleId or roleSlug attribute on the Customers object. Each Role also has an associated Target CDD Level between 1 and 5. The Target CDD Level is the minimum level of verification a Customer must achieve before they are allowed to transact on the platform. The set of information required for verifying a Customer ultimately depends on the Customer type and the Target CDD Level defined for their Role.

In the above example of a ride hailing app, if the Driver Role has a Target CDD Level of 2 with a transaction limit of £1,000, it means that a Driver must be verified to CDD Level 2 before being able to start transacting. Once verification is complete, they can transact up to £1,000 per month once they have attained CDD Level 2. To continue transacting over £1,000, the Driver will need to provide additional information to be verified to the next higher CDD Level of 3 which will increase their transaction Limits. Note that the limits indicated here are examples and will vary depending on your particular business model.

The platform can be configured to raise an Alert on the Console when a Customer has transacted a pre-defined percentage of the limit permitted by their Active CDD Level. You can use the alert_raised webhook to get notified when such an alert is raised to proactively request additional verification information from your customers so that their transactions are not blocked due to having reached the limits permitted by their Active CDD Level.

Creating an Individual Customer

Creating a Customer is typically the first step to start transacting on Paybase.

Before you create a customer, identify the customer type you want to onboard. For e.g. in a ride hailing app, the rider will be onboarded as an individual. Let’s say the role set-up for them is rider.

Use the customers/individual request to create a Customer and set the roleSlug to rider providing all required details on the customer profile.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import { v1 } from '@paybase/client';

const client = v1('<- API Key ->', { sandbox: true });

const result = await client.createIndividualCustomer({
  roleSlug: "rider",
  profile: {
    firstName: "Mariana",
    lastName: "Gutmann",
    dob: "1994-07-26T00:00:00.000Z",
    email: "monserrate.homenick60@yahoo.com",
    phoneNumber: "+442078137221",
    residentialAddress: {
      postalCode: "SE6 9YU",
      countryISO: "GB",
      houseNameNumber: "7",
      street: "Brick Lane",
      townCity: "London"
    }
  },
  terms: {
    acceptedAt: "2019-08-16T18:29:02.013Z",
    revision: "2.1"
  }
});

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import json
import requests

requests.post(
  "https://api-json.sandbox.paybase.io/v1/customers/individual",
  data = json.dumps({
    "roleSlug": "rider",
    "profile": {
      "firstName": "Mariana",
      "lastName": "Gutmann",
      "dob": "1994-07-26T00:00:00.000Z",
      "email": "monserrate.homenick60@yahoo.com",
      "phoneNumber": "+442078137221",
      "residentialAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      }
    },
    "terms": {
      "acceptedAt": "2019-08-16T18:29:02.013Z",
      "revision": "2.1"
    }
  }),
  headers = {
    "Content-Type": "application/json",
    "X-Token": "<X-Token goes here>"
  }
).json()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$client = new \GuzzleHttp\Client();
$client->request(
  "post",
  "https://api-json.sandbox.paybase.io/v1/customers/individual",
  [
    "body" => "{
      \"roleSlug\": \"rider\",
      \"profile\": {
        \"firstName\": \"Mariana\",
        \"lastName\": \"Gutmann\",
        \"dob\": \"1994-07-26T00:00:00.000Z\",
        \"email\": \"monserrate.homenick60@yahoo.com\",
        \"phoneNumber\": \"+442078137221\",
        \"residentialAddress\": {
          \"postalCode\": \"SE6 9YU\",
          \"countryISO\": \"GB\",
          \"houseNameNumber\": \"7\",
          \"street\": \"Brick Lane\",
          \"townCity\": \"London\"
        }
      },
      \"terms\": {
        \"acceptedAt\": \"2019-08-16T18:29:02.013Z\",
        \"revision\": \"2.1\"
      }
    }",
    "headers" => [
      "Content-Type" => "application/json",
      "X-Token" => "<X-Token goes here>",
    ]
  ]
);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
curl -X POST \
"https://api-json.sandbox.paybase.io/v1/customers/individual"  -H "Content-Type: application/json" \
  -H "X-Token: <X-Token goes here>" \
  -d '{
    "roleSlug": "rider",
    "profile": {
      "firstName": "Mariana",
      "lastName": "Gutmann",
      "dob": "1994-07-26T00:00:00.000Z",
      "email": "monserrate.homenick60@yahoo.com",
      "phoneNumber": "+442078137221",
      "residentialAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      }
    },
    "terms": {
      "acceptedAt": "2019-08-16T18:29:02.013Z",
      "revision": "2.1"
    }
  }'

The response to a successful API request will be the full Customer object including their id, stateId, cddLevel and targetCDDLevel. Store the id in your database as you will need to pass it for any future requests associated with this Customer. The cddLevel will initially be returned as ZERO because the due diligence checks are performed asynchronously. However, if automated checks pass, then the cddLevel of the Customer will be updated to ONE shortly after creation. The customer_cdd_level_changed webhook can notify you of such updates. The stateId will be returned as ENABLED. However, note that a Customer can only start transacting when their cddLevel equals their targetCDDLevel.

Creating a Sole Trader

Use the customers/sole-trader request to create a Customer who is a Sole Trader. For e.g. a driver using a ride hailing app could be operating as a sole trader.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import { v1 } from '@paybase/client';

const client = v1('<- API Key ->', { sandbox: true });

const result = await client.createSoleTraderCustomer({
  roleSlug: "driver",
  profile: {
    firstName: "Mariana",
    lastName: "Gutmann",
    dob: "1994-07-26T00:00:00.000Z",
    email: "monserrate.homenick60@yahoo.com",
    phoneNumber: "+442078137221",
    residentialAddress: {
      postalCode: "SE6 9YU",
      countryISO: "GB",
      houseNameNumber: "7",
      street: "Brick Lane",
      townCity: "London"
    }
  },
  terms: {
    acceptedAt: "2019-08-16T18:29:02.013Z",
    revision: "2.1"
  }
});

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import json
import requests

requests.post(
  "https://api-json.sandbox.paybase.io/v1/customers/sole-trader",
  data = json.dumps({
    "roleSlug": "driver",
    "profile": {
      "firstName": "Mariana",
      "lastName": "Gutmann",
      "dob": "1994-07-26T00:00:00.000Z",
      "email": "monserrate.homenick60@yahoo.com",
      "phoneNumber": "+442078137221",
      "residentialAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      }
    },
    "terms": {
      "acceptedAt": "2019-08-16T18:29:02.013Z",
      "revision": "2.1"
    }
  }),
  headers = {
    "Content-Type": "application/json",
    "X-Token": "<X-Token goes here>"
  }
).json()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$client = new \GuzzleHttp\Client();
$client->request(
  "post",
  "https://api-json.sandbox.paybase.io/v1/customers/sole-trader",
  [
    "body" => "{
      \"roleSlug\": \"driver\",
      \"profile\": {
        \"firstName\": \"Mariana\",
        \"lastName\": \"Gutmann\",
        \"dob\": \"1994-07-26T00:00:00.000Z\",
        \"email\": \"monserrate.homenick60@yahoo.com\",
        \"phoneNumber\": \"+442078137221\",
        \"residentialAddress\": {
          \"postalCode\": \"SE6 9YU\",
          \"countryISO\": \"GB\",
          \"houseNameNumber\": \"7\",
          \"street\": \"Brick Lane\",
          \"townCity\": \"London\"
        }
      },
      \"terms\": {
        \"acceptedAt\": \"2019-08-16T18:29:02.013Z\",
        \"revision\": \"2.1\"
      }
    }",
    "headers" => [
      "Content-Type" => "application/json",
      "X-Token" => "<X-Token goes here>",
    ]
  ]
);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
curl -X POST \
"https://api-json.sandbox.paybase.io/v1/customers/sole-trader"  -H "Content-Type: application/json" \
  -H "X-Token: <X-Token goes here>" \
  -d '{
    "roleSlug": "driver",
    "profile": {
      "firstName": "Mariana",
      "lastName": "Gutmann",
      "dob": "1994-07-26T00:00:00.000Z",
      "email": "monserrate.homenick60@yahoo.com",
      "phoneNumber": "+442078137221",
      "residentialAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      }
    },
    "terms": {
      "acceptedAt": "2019-08-16T18:29:02.013Z",
      "revision": "2.1"
    }
  }'

The response to a successful API request will be the full Customer object.

Creating an Incorporated Business

Use the customers/incorporated-business request to create a Customer who is an Incorporated Business.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { v1 } from '@paybase/client';

const client = v1('<- API Key ->', { sandbox: true });

const result = await client.createIncorporatedBusinessCustomer({
  roleSlug: "driver",
  companyNumber: "12345678",
  profile: {
    registeredName: "ABC Limited",
    email: "abclimited@yahoo.com",
    phoneNumber: "+442078137221",
    taxCountryISO: "GB",
    registeredAddress: {
      postalCode: "SE6 9YU",
      countryISO: "GB",
      houseNameNumber: "7",
      street: "Brick Lane",
      townCity: "London"
    },
    tradingAddress: {
      postalCode: "DH6 4JN",
      countryISO: "GB",
      houseNameNumber: "12 Park Ave",
      street: "Coxhoe",
      townCity: "Durham"
    }
  },
  terms: {
    acceptedAt: "2019-08-16T18:29:02.013Z",
    revision: "2.1"
  }
});

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import json
import requests

requests.post(
  "https://api-json.sandbox.paybase.io/v1/customers/incorporated-business",
  data = json.dumps({
    "roleSlug": "driver",
    "companyNumber": "12345678",
    "profile": {
      "registeredName": "ABC Limited",
      "email": "abclimited@yahoo.com",
      "phoneNumber": "+442078137221",
      "taxCountryISO": "GB",
      "registeredAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      },
      "tradingAddress": {
        "postalCode": "DH6 4JN",
        "countryISO": "GB",
        "houseNameNumber": "12 Park Ave",
        "street": "Coxhoe",
        "townCity": "Durham"
      }
    },
    "terms": {
      "acceptedAt": "2019-08-16T18:29:02.013Z",
      "revision": "2.1"
    }
  }),
  headers = {
    "Content-Type": "application/json",
    "X-Token": "<X-Token goes here>"
  }
).json()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$client = new \GuzzleHttp\Client();
$client->request(
  "post",
  "https://api-json.sandbox.paybase.io/v1/customers/incorporated-business",
  [
    "body" => "{
      \"roleSlug\": \"driver\",
      \"companyNumber\": \"12345678\",
      \"profile\": {
        \"registeredName\": \"ABC Limited\",
        \"email\": \"abclimited@yahoo.com\",
        \"phoneNumber\": \"+442078137221\",
        \"taxCountryISO\": \"GB\",
        \"registeredAddress\": {
          \"postalCode\": \"SE6 9YU\",
          \"countryISO\": \"GB\",
          \"houseNameNumber\": \"7\",
          \"street\": \"Brick Lane\",
          \"townCity\": \"London\"
        },
        \"tradingAddress\": {
          \"postalCode\": \"DH6 4JN\",
          \"countryISO\": \"GB\",
          \"houseNameNumber\": \"12 Park Ave\",
          \"street\": \"Coxhoe\",
          \"townCity\": \"Durham\"
        }
      },
      \"terms\": {
        \"acceptedAt\": \"2019-08-16T18:29:02.013Z\",
        \"revision\": \"2.1\"
      }
    }",
    "headers" => [
      "Content-Type" => "application/json",
      "X-Token" => "<X-Token goes here>",
    ]
  ]
);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
curl -X POST \
"https://api-json.sandbox.paybase.io/v1/customers/incorporated-business"  -H "Content-Type: application/json" \
  -H "X-Token: <X-Token goes here>" \
  -d '{
    "roleSlug": "driver",
    "companyNumber": "12345678",
    "profile": {
      "registeredName": "ABC Limited",
      "email": "abclimited@yahoo.com",
      "phoneNumber": "+442078137221",
      "taxCountryISO": "GB",
      "registeredAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      },
      "tradingAddress": {
        "postalCode": "DH6 4JN",
        "countryISO": "GB",
        "houseNameNumber": "12 Park Ave",
        "street": "Coxhoe",
        "townCity": "Durham"
      }
    },
    "terms": {
      "acceptedAt": "2019-08-16T18:29:02.013Z",
      "revision": "2.1"
    }
  }'

The response to a successful API request will be the full Customer object. At this point you have only provided details on incorporated business itself. To successfully complete verification, you will also need to create a Business Person and associate it with the Customer. Business Persons are usually Directors or UBO’s (Ultimate Beneficial Owner) of the business. Depending on your business structure, you might have to provide details of multiple business persons which will ultimately be based on the targetCDDLevel of the Customer.

Use the customer/{customerId}/persons request to create a Business Person by passing the customerId in the URI. For e.g. to add a person who is a Director in your business, set the profile.roles attribute to director.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import { v1 } from '@paybase/client';

const client = v1('<- API Key ->', { sandbox: true });

const result = await client.addBusinessPerson({
  customerId: "customer/28958679-e8a8-47a8-967c-f979ae8509a2",
  profile: {
    firstName: "Mariana",
    lastName: "Gutmann",
    dob: "1994-07-26T00:00:00.000Z",
    roles: [
      director
    ],
    residentialAddress: {
      postalCode: "SE6 9YU",
      countryISO: "GB",
      houseNameNumber: "7",
      street: "Brick Lane",
      townCity: "London"
    }
  }
});

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import json
import requests

requests.post(
  "https://api-json.sandbox.paybase.io/v1/customer/customer/28958679-e8a8-47a8-967c-f979ae8509a2Params: customerId/persons",
  data = json.dumps({
    "profile": {
      "firstName": "Mariana",
      "lastName": "Gutmann",
      "dob": "1994-07-26T00:00:00.000Z",
      "roles": [
        "director"
      ],
      "residentialAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      }
    }
  }),
  headers = {
    "Content-Type": "application/json",
    "X-Token": "<X-Token goes here>"
  }
).json()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$client = new \GuzzleHttp\Client();
$client->request(
  "post",
  "https://api-json.sandbox.paybase.io/v1/customer/customer/28958679-e8a8-47a8-967c-f979ae8509a2Params: customerId/persons",
  [
    "body" => "{
      \"profile\": {
        \"firstName\": \"Mariana\",
        \"lastName\": \"Gutmann\",
        \"dob\": \"1994-07-26T00:00:00.000Z\",
        \"roles\": [
          \"director\"
        ],
        \"residentialAddress\": {
          \"postalCode\": \"SE6 9YU\",
          \"countryISO\": \"GB\",
          \"houseNameNumber\": \"7\",
          \"street\": \"Brick Lane\",
          \"townCity\": \"London\"
        }
      }
    }",
    "headers" => [
      "Content-Type" => "application/json",
      "X-Token" => "<X-Token goes here>",
    ]
  ]
);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
curl -X POST \
"https://api-json.sandbox.paybase.io/v1/customer/customer/28958679-e8a8-47a8-967c-f979ae8509a2Params: customerId/persons"  -H "Content-Type: application/json" \
  -H "X-Token: <X-Token goes here>" \
  -d '{
    "profile": {
      "firstName": "Mariana",
      "lastName": "Gutmann",
      "dob": "1994-07-26T00:00:00.000Z",
      "roles": [
        "director"
      ],
      "residentialAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      }
    }
  }'

The response to a successful API call will be the full persons object. Store the returned id on your database. The Customer object for an Incorporated Business also contains a list of the business person id’s of the associated with it.

Creating an Organisation

Organisation can be used to create Customers that do not fit into any of the other types. Such Customers can be Charities, Partnerships etc. Use the customers/organisation request to create such a Customer. In addition to passing basic information on the organisation, this endpoint allows you to send supplementaryInformation as key value pairs. Any supplementary information that you will be required to provide will be determined and communicated to you when your platform is being onboarded by Paybase.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { v1 } from '@paybase/client';

const client = v1('<- API Key ->', { sandbox: true });

const result = await client.createOrganisationCustomer({
  roleSlug: "charity-seller",
  profile: {
    name: "Charity Organisation",
    email: "charity.organisation60@charity.org",
    phoneNumber: "+442078137221",
    registeredAddress: {
      postalCode: "SE6 9YU",
      countryISO: "GB",
      houseNameNumber: "7",
      street: "Brick Lane",
      townCity: "London"
    },
    registeredNumber: "810sj9lf768",
    supplementaryInformation: {
      type: "Registered Charity",
      activity: "selling clothes to raise funds"
    }
  },
  terms: {
    acceptedAt: "2019-08-16T18:29:02.013Z",
    revision: "2.1"
  }
});

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import json
import requests

requests.post(
  "https://api-json.sandbox.paybase.io/v1/customers/organisation",
  data = json.dumps({
    "roleSlug": "charity-seller",
    "profile": {
      "name": "Charity Organisation",
      "email": "charity.organisation60@charity.org",
      "phoneNumber": "+442078137221",
      "registeredAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      },
      "registeredNumber": "810sj9lf768",
      "supplementaryInformation": {
        "type": "Registered Charity",
        "activity": "selling clothes to raise funds"
      }
    },
    "terms": {
      "acceptedAt": "2019-08-16T18:29:02.013Z",
      "revision": "2.1"
    }
  }),
  headers = {
    "Content-Type": "application/json",
    "X-Token": "<X-Token goes here>"
  }
).json()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$client = new \GuzzleHttp\Client();
$client->request(
  "post",
  "https://api-json.sandbox.paybase.io/v1/customers/organisation",
  [
    "body" => "{
      \"roleSlug\": \"charity-seller\",
      \"profile\": {
        \"name\": \"Charity Organisation\",
        \"email\": \"charity.organisation60@charity.org\",
        \"phoneNumber\": \"+442078137221\",
        \"registeredAddress\": {
          \"postalCode\": \"SE6 9YU\",
          \"countryISO\": \"GB\",
          \"houseNameNumber\": \"7\",
          \"street\": \"Brick Lane\",
          \"townCity\": \"London\"
        },
        \"registeredNumber\": \"810sj9lf768\",
        \"supplementaryInformation\": {
          \"type\": \"Registered Charity\",
          \"activity\": \"selling clothes to raise funds\"
        }
      },
      \"terms\": {
        \"acceptedAt\": \"2019-08-16T18:29:02.013Z\",
        \"revision\": \"2.1\"
      }
    }",
    "headers" => [
      "Content-Type" => "application/json",
      "X-Token" => "<X-Token goes here>",
    ]
  ]
);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
curl -X POST \
"https://api-json.sandbox.paybase.io/v1/customers/organisation"  -H "Content-Type: application/json" \
  -H "X-Token: <X-Token goes here>" \
  -d '{
    "roleSlug": "charity-seller",
    "profile": {
      "name": "Charity Organisation",
      "email": "charity.organisation60@charity.org",
      "phoneNumber": "+442078137221",
      "registeredAddress": {
        "postalCode": "SE6 9YU",
        "countryISO": "GB",
        "houseNameNumber": "7",
        "street": "Brick Lane",
        "townCity": "London"
      },
      "registeredNumber": "810sj9lf768",
      "supplementaryInformation": {
        "type": "Registered Charity",
        "activity": "selling clothes to raise funds"
      }
    },
    "terms": {
      "acceptedAt": "2019-08-16T18:29:02.013Z",
      "revision": "2.1"
    }
  }'

The response to a successful API request will be the full Customer object.

Creating Test Customers

The majority of the Customers you create on sandbox will fail verification checks. However, you can use the following details to ensure that the test Customer passes verification checks and can therefore achieve their target CDD level. The details are not case-sensitive and fields marked N/A can be omitted.

NB: Please ensure you append registeredAddress to any of the address sub fields. ie: registeredAddress.flatNumber.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
body: {
    roleSlug: 'buyer',
    profile: {
      firstName: 'Shannon',
      lastName: 'Mcdonald',
      dob: '1962-01-21T00:00:00.000Z',
      email: 'shannon.mcdonald60@yahoo.com',
      phoneNumber: '+442078137221',
      residentialAddress: {
        postalCode: 'SE6 9YU',
        countryISO: 'GB',
        houseNameNumber:'7',
        street:'Brick Lane',
        townCity:'London'
      },
    },
    terms: {
      acceptedAt: '2019-08-16T18:29:02.013Z',
      revision: '2.1',
    },
    tags: ['42', 'monetize'],
    annotations: { everything: '43' },
}

firstNamelastNamedobflatNumberhouseNameNumberstreetpostalCodecountryISO
AllisonLeigh1974-04-17T00:00:00.000ZN/A91Brick laneE1 6QLGB
ChloeHardy1979-01-12T00:00:00.000Z1a1Orchid bankWT2 2DFGB
KelvinThursby1985-04-25T00:00:00.000ZN/A91Brick laneE1 6QLGB
FaisulMiah1977-12-04T00:00:00.000ZN/A91Brick laneE1 6QLGB
MadisonReynolds1900-01-01T00:00:00.000ZN/A85N/ANR24 9JBGB
MeganCrawford1957-04-05T00:00:00.000Z1b1Orchid bankWT2 2DFGB
MorayAbdiou1924-12-11T00:00:00.000ZN/A26N/ALN4 7ATGB
RobJames1983-10-12T00:00:00.000ZN/A91Brick laneE1 6QLGB
ScottJames1976-08-17T00:00:00.000ZN/A91Brick laneE1 6QLGB
ShannonMacdonald1962-01-21T00:00:00.000Zflat b7Orchid bankWT2 2DFGB