Get Sandbox Access

Paybase Developer Centre

OverviewAPI GuidesGetting StartedRecipesGig Economy PlatformsSharing Economy PlatformsMarketplacesBlockchain BusinessesEscrowRolesRulesDue 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: d8b96b6

Customer Due Diligence

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.

The Role of a Customer determines their targetCDDLevel which is the minimum level of verification a Customer must achieve before they are allowed to transact on the platform. Therefore, the minimum set of information required for verifying a Customer ultimately depends on the Customer Type (Individual, Sole Trader etc.) and the targetCDDLevel defined for their Role.

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 varying information requirements and a transaction limit associated with it. Customers can transact up to the limit for the level of verification they have passed before additional information will be required in order for them to continue transacting at higher levels. All verification checks are run asynchronously and therefore the CDD Level of a Customer will not be updated immediately to their targetCDDLevel even if all the required details have been provided. The customer_cdd_level_changed webhook can be used to get notified when the CDD Level of a customer has been updated. If we fail to verify the details you have provided, or when it becomes necessary for you to provide additional information on a customer, an alert will be raised which you will be able to access on the Console. You can also use the check_failed and alert_raised webhooks to get notified of such alerts.

Verification requirements

The minimum CDD Level for a Customer to be able to transact a meaningful volume will usually be set to Level 2. At this level, you will be required to collect the following details from your customers to send to Paybase.

IndividualSole TraderIncorporated Business

firstName
lastName
email
phoneNumber
residentialAddress
dob

firstName
lastName
email
phoneNumber
residentialAddress
dob

companyNumber
registeredName
tradingName
phoneNumber
email
taxCountryISO
registeredAddress
tradingAddress

For an Incorporated Business, you will also need to collect details of at least 2 persons with the role of director and one primaryContact of the business and send it to Paybase using the customer/{customerId}/persons endpoint. One of the 2 directors will need to be the Primary Contact. If your business has only 1 Director, you will be able to create only 1 person and the same person can be identified as both a director and a primaryContact. If any person owns more than 25% if the business, you will also need to provide their details as a ubo (ultimate beneficial owner)

Persons (Primary Contact, Directors, UBOs)

firstName
lastName
residentialAddress
dob

We will attempt to electronically verify the identity of all individuals, sole traders and persons you create. If the verification fails, we will request you to provide identity documents which can be uploaded on the Console or sent via the Document API

The Check object

In certain cases, Paybase might agree to outsource customer verification to you. If this has been agreed, you will still be required to provide a unique reference to the check performed by you as confirmation. This confirmation is then used to update the CDD Level of the customer.

Use the checks endpoint to provide the reference of a kyc check performed by you on your Customer. The referenceId is your internal or external reference for that check that can be used by Paybase to trace the details of the check if required for audit purposes.

1
2
3
4
5
6
7
8
9
10
import { v1 } from '@paybase/client';

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

const result = await client.createCheck({
  customerId: "customer/28958679-e8a8-47a8-967c-f979ae8509a2",
  kyc: {
    referenceId: "28958679"
  }
});

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import json
import requests

requests.post(
  "https://api-json.sandbox.paybase.io/v1/checks",
  data = json.dumps({
    customerId: "customer/28958679-e8a8-47a8-967c-f979ae8509a2",
    kyc: {
      referenceId: "28958679"
    }
  }),
  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
$client = new \GuzzleHttp\Client();
$client->request(
  "post",
  "https://api-json.sandbox.paybase.io/v1/checks",
  [
    "body" => "{
      customerId: \"customer/28958679-e8a8-47a8-967c-f979ae8509a2\",
      kyc: {
        referenceId: \"28958679\"
      }
    }",
    "headers" => [
      "Content-Type" => "application/json",
      "X-Token" => "<X-Token goes here>",
    ]
  ]
);

1
2
3
4
5
6
7
8
9
10
curl -X POST \
"https://api-json.sandbox.paybase.io/v1/checks"  -H "Content-Type: application/json" \
  -H "X-Token: <X-Token goes here>" \
  -d '{
    customerId: "customer/28958679-e8a8-47a8-967c-f979ae8509a2",
    kyc: {
      referenceId: "28958679"
    }
  }'

The response to the API call will be a checks object.

Please contact your Account Manager if you would like to discuss the possibility of outsourcing customer verification to yourself.