Unfortunately, this feature is not supported on mobile devices. For the best experience, please use a computer.

Core APIs (latest)

Introduction

The Rebilly API is built on HTTP and is RESTful. It has predictable resource URLs and returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. Use your favorite HTTP/REST library in your programming language when using this API, or use one of the Rebilly SDKs, which are available in PHP and JavaScript.

Every action in the Rebilly UI is supported by an API which is documented and available for use, so that you may automate any necessary workflows or processes. This API reference documentation contains the most commonly integrated resources.

Authentication

This topic describes the different forms of authentication that are available in the Rebilly API, and how to use them.

Rebilly offers four forms of authentication: secret key, publishable key, JSON Web Tokens, and public signature key.

  • Secret API key: Use to make requests from the server side. Never share these keys. Keep them guarded and secure.
  • Publishable API key: Use in your client-side code to tokenize payment information.
  • JWT: Use to make short-life tokens that expire after a set period of time.

Manage API keys

To create or manage API keys, select one of the following:

For more information on API keys, see API keys.

Errors

Rebilly follows the error response format proposed in RFC 9457, which is also known as Problem Details for HTTP APIs. As with any API responses, your client must be prepared to gracefully handle additional members of the response.

SDKs

Rebilly provides a JavaScript SDK and a PHP SDK to help interact with the Rebilly API. However, no SDK is required to use the API.

Rebilly also provides FramePay, a client-side iFrame-based solution, to help create payment tokens while minimizing PCI DSS compliance burdens and maximizing your customization ability. FramePay interacts with the payment tokens creation operation.

JavaScript SDK

For installation and usage instructions, see SDKs. All JavaScript SDK code examples are included in the API reference documentation.

PHP SDK

For installation and usage instructions, see SDKs. All SDK code examples are included in the API reference documentation. To use them, you must configure the $client as follows:

$client = new Rebilly\Client([
    'apiKey' => 'YourApiKeyHere',
    'baseUrl' => 'https://api.rebilly.com',
]);

Get started

The full Rebilly API has over 500 operations. This is likely more than you may need to implement your use cases. If you would like to implement a particular use case, contact Rebilly for guidance and feedback on the best API operations to use for the task.

To integrate Rebilly, and learn about related resources and concepts, see Get started.

Download OpenAPI description
Languages
Servers
Mock server
https://www.rebilly.com/_mock/docs/dev-docs/api/
Sandbox server
https://api-sandbox.rebilly.com/organizations/{organizationId}/
Live server
https://api.rebilly.com/organizations/{organizationId}/

Customers

Use these operations to manage customers. A customer is an entity that purchases goods or services from you (a merchant), and is the payee in any transaction that is credited to you. Customers are associated with payment instruments, subscriptions, invoices, and other related resources.

In other systems, customers may be referred to as accounts, clients, members, patrons, or players. For information on the customer resource, see Resources.

Operations

Customer authentication

Use these operations to validate the identity of users and manage authentication credentials.

Operations

Tags

Use tags to organize and categorize customers or KYC documents based on keywords.

Operations

Customers timeline

Use customer timelines to maintain an audit trail of changes and activity for each customer.

Operations

Payment instruments

Use these operations to manage payment instruments. Payment instrument is a term which describes any means of making a digital payment, such as: credit cards, debit cards, direct debits, payment service providers, and digital wallets.

For more information on payment instruments, see Payment instruments.

OperationsWebhooks

Payment tokens

Use payment tokens to reduce the scope of PCI DSS compliance.

A payment token can be made using a different authentication scheme (public key authentication), which enables you to create a payment token directly from the browser. This bypasses the need to send sensitive cardholder info to your servers. We recommend using this with the FramePay library, which helps you integrate a form into this API resource and create payment tokens.

Operations

Transactions

Use these operations to:

  • set up payment instruments for payments
  • authorize and hold funds
  • capture funds
  • make payments
  • make payouts
  • refund transactions.
Operations

Disputes

Use these operations to manage disputes. A dispute occurs when a customer contests a charge to their account. The dispute and related information is made available to the merchant by the bank or credit card company. The merchant then has the option to represent the charge and win the case. This process is called dispute resolution. If the merchant is unable to represent the charge, the card issuer typically reverses the sale and adds fees on top of the charge. This process is called a chargeback.

OperationsWebhooks

Fees

Use fees to reconcile transactions with applicable fees and discount rates. Fees are not applied directly to transaction amounts, they do not modify the transaction amount. Fees help to describe each part of the transaction amount.

Important: These operations are experimental and may change.

Operations

Transactions timeline

Use transaction timelines to maintain an audit trail of changes and activity for each transaction.

Operations

Orders

Use these operations to manage customer orders. An order is a customer's request to purchase items. It can contain subscription and one-time sale items. When an order contains one or more subscription items, it is a subscription order.

An order generates an invoice. A subscription order generates an invoice for each service period. For more information, see Orders.

Operations

Invoices

Use invoices to bill for the goods or services that you provide. If your invoice includes subscription items, it also includes the corresponding service periods and prices.

Operations

Usage

Use these operations to manage the product usage of a subscription item for metered billing purposes.

Use metered billing when product quantity is unknown to the customer at the moment of creating a subscription. Metered billing is based on reported usage records. Every reported usage updates the quantity of an upcoming invoice item for a specified subscription and a plan. To create a metered billing plan, see Plans.

Operations

Credit memos

Use credit memos to provide a customer with store credit. A common use case for using a credit memo is to provide a customer with store credit, rather than a refund, if the customer pays more than they owe or returns a product. For information on the credit memo resource, see Resources.

OperationsWebhooks

Plans

Use pricing plans to describe how the customer must pay for products.

Rebilly provides the following plan types:

  • Trial only: Use this plan to create and offer a free or discounted trial period for your product. For example, a free 2 week trial of an internet service. After the trial, the customer can choose to sign up for a paid subscription, or stop using the service.
  • Recurring: Use this plan to create and offer a subscription for your product. For example, a monthly subscription to an internet service that is charged at 20 USD per month.
  • One time sale: Use this plan to create and offer a one-off sale for your products. For example, a one time purchase of two bags of coffee.

For information on the plans resource, see Plans.

For information on plan pricing, see Pricing formulas.

Operations

Products

Use products to describe the goods and services that your business sells. A product also describes sales items on invoices and receipts. Product pricing is defined in plans. A product may have one or many plans.

For information on the product resource, see Product.

Operations

Coupons

Use coupons to reward customers, generate sales, or to test new pricing strategies. Coupons enable you to apply different types of discounts to invoices, subscriptions, and pricing plans.

Redeemed coupons are attached to a customer's account. Depending on the coupon restrictions, the redeemed coupons are then applied from the customer's account to subsequent invoices or subscriptions. Redeemed coupons can only be applied to invoices of the same currency.

Once a coupon is redeemed it cannot be modified. You may deactivate a coupon or create a new coupon, but you cannot reuse the same coupon code. If you have a use case where you must reuse the same code, contact Rebilly.

Operations

Quotes

Use quote operations to create and manage quotations. Quotations describe the cost of goods or services to potential customers before they commit to a purchase. A quote contains an initial invoice preview that can be accepted to become an order.

A quote can contain subscription and one-time sale items. When a quote contains one or more subscription items, it is a subscription order quote.

Operations

Quotes timeline

Use quote timelines to maintain an audit trail of changes and activity for each quote.

Operations

Shipping rates

Use these operations to manage shipping rates. A shipping rate contains a filter and a pricing for a specific shipping destination.

Operations

Orders timeline

Use order timelines to maintain an audit trail of changes and activity for each order.

Operations

Invoices timeline

Use invoice timelines to maintain an audit trail of changes and activity for each invoice.

Operations

Credit memos timeline

Use credit memo timelines to maintain an audit trail of changes and activity for each credit memo. Credit memos are a means of providing a customer with store credit.

Operations

Blocklists

Use blocklists to prevent fraud and criminal activity.

Blocklists are lists of customer attribute values that are blocked from buying from you. For example, if a customer attempts to make a purchase from you with a credit card that is in a blocklist, the transaction is blocked and is not processed.

Before a new transaction is processed in Rebilly, blocklists are examined to check for attributes related to the entity. If a match is detected, the operation is aborted. A blocklist that expires after a period of time is called a greylist.

Operations

Allowlists

Use allowlists to exclude specific customer attribute data from risk score checks.

Allowlists are lists of data that are excluded from risk score checks. Allowlists prevent specific data from being added to a blocklist record when a risk score threshold reached.

Operations

KYC documents

Use Know Your Customer (KYC) documents to verify your customers identity. The KYC document operations generate a signed link to the Rebilly KYC document gatherer.

Document types:

  • identity-proof: Validates a customer's identity.
  • address-proof: Validates a customer's address.
  • purchase-proof: Validates a customer's purchase.
  • funds-proof: Validates that a customer has funds.
  • credit-file-proof: Verifies that there is an existing credit file with two sources that match the customer's name, DOB, and address.

Rebilly parses and analyzes the documents and accepts or rejects them according to a configurable scoring algorithm. When all document types in a KYC request are accepted, the status is fulfilled, and the KYC request fulfilled webhook is sent.

Operations

Credit file proof

The credit-file-proof KYC document request type is only available in the API, this option is not available in the KYC document gatherer. This request verifies that there is an existing credit file with two sources that match the person's name, date of birth, and address.

In Canada, to meet FINTRAC requirements, the credit-file-proof KYC document request verifies the customer's name, address, and date of birth with a credit agency.

If credit-file-proof is requested in combination with identity-proof and address-proof, credit-file-proof is attempted first. If credit-file-proof validates the identity and address, the KYC request is considered fulfilled. If the request is not fulfilled, redirect your customer to the KYC document gatherer to collect their KYC documents.

Create a KYC request

Request

Creates a KYC request.

The customer is redirected to the kycGatherer link. After the customer completes the KYC process, they are redirected back to the redirectUrl link.

Corresponding webhooks, such as: KYC document accepted and KYC document rejected, are sent to the subscribers.

When the complete list of documents is received and accepted, the KYC request fulfilled webhook is sent to subscribers.

If a credit-file-proof request is successful, it returns a decision value of single-source or dual-source. The corresponding identity-proof and address-proof documents are not requested.

Bodyapplication/jsonrequired

KYC request resource.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

documentsArray of objects(KycRequestDocument)non-emptyrequired

Documents to request from the customer.

documents[].typestring(KycDocumentTypes)required

Type of document to request from the customer.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
documents[].subtypesArray of strings or null or null(KycDocumentSubtypes)

Permitted document subtype.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
documents[].maxAttemptsinteger[ 0 .. 100 ]

Total number of allowed document upload attempts. Use 0 to allow unlimited upload attempts.

Default 3
documents[].faceProofRequiredboolean

Specifies if the customer must upload a photo of their face (selfie) that matches a provided KYC document.

documents[].faceLivenessRequiredboolean
redirectUrlstring or null(uri)

URL where the customer is redirected when a KYC document upload is complete. When the customer is redirected, Rebilly appends an info query parameter that has one of the following values:

  • back: Customer clicked the back to website link.
  • token_expired: Customer's token expired.
  • success: Customer uploaded KYC documents that have been analyzed.
  • manual: Customer uploaded KYC documents that require a manual review. This is because the analyzer rejected the documents or could not process them.
  • partial: Some of the customer's KYC documents have been analyzed, but other documents have not. For example, this may occur when a proof of address document is analyzed but proof of ID is not.

Example: https://example.com?info=success.

reasonstring or null

Reason for uploading.

Example:

"spend limit"

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches. The value of 1 is more tolerant and 2 is strict.

Default 2
expirationTimestring(date-time)

Date and time when the request expires. The default value is one hour in the future.

curl -i -X POST \
  https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-requests \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "customerId": "123_456789",
    "redirectUrl": "https://example.com/return-here/",
    "documents": [
      {
        "type": "credit-file-proof",
        "maxAttempts": 1
      },
      {
        "type": "identity-proof"
      },
      {
        "type": "address-proof"
      }
    ],
    "reason": "registration"
  }'
Experience it firsthand in the API Explorer!

Responses

KYC request created.

Headers
Locationstring(uri)

Location of the related resource.

Example:

"https://api.rebilly.com/example"

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC request.

Example:

"kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5"

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

documentsArray of objects(KycRequestDocument)non-emptyrequired

Documents to request from the customer.

documents[].typestring(KycDocumentTypes)required

Type of document to request from the customer.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
documents[].subtypesArray of strings or null or null(KycDocumentSubtypes)

Permitted document subtype.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
documents[].maxAttemptsinteger[ 0 .. 100 ]

Total number of allowed document upload attempts. Use 0 to allow unlimited upload attempts.

Default 3
documents[].faceProofRequiredboolean

Specifies if the customer must upload a photo of their face (selfie) that matches a provided KYC document.

documents[].faceLivenessRequiredboolean
statusstringread-only

Status of the request.

Enum ValueDescription
gathering

No documents have been provided yet. This is a temporary state.

attempted

At least one document has been provided but none were assigned the accepted status. This is a temporary state.

partial

At least one requested document has the accepted status, but not all requested documents have been assigned the accepted status. This is a temporary state.

pending-review

At least one requested document has the pending status, and no requested documents have been assigned the accepted status. This is a temporary state, until the document is reviewed, or another accepted document is provided.

fulfilled

All requested documents are provided and have been assigned the accepted status. This is a permanent state.

failed

At least one requested document has exhausted all attempts, and has not been assigned a accepted, pending, or in-progress status. This is a permanent state.

abandoned

One or more documents provided but the request expired. This is a permanent state.

expired

No documents were provided and the request expired. This is a permanent state.

redirectUrlstring or null(uri)

URL where the customer is redirected when a KYC document upload is complete. When the customer is redirected, Rebilly appends an info query parameter that has one of the following values:

  • back: Customer clicked the back to website link.
  • token_expired: Customer's token expired.
  • success: Customer uploaded KYC documents that have been analyzed.
  • manual: Customer uploaded KYC documents that require a manual review. This is because the analyzer rejected the documents or could not process them.
  • partial: Some of the customer's KYC documents have been analyzed, but other documents have not. For example, this may occur when a proof of address document is analyzed but proof of ID is not.

Example: https://example.com?info=success.

reasonstring or null

Reason for uploading.

Example:

"spend limit"

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches. The value of 1 is more tolerant and 2 is strict.

Default 2
revisionintegerread-only

Number of times the KYC request data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

expirationTimestring(date-time)

Date and time when the request expires. The default value is one hour in the future.

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "documents": [ {} ], "status": "gathering", "redirectUrl": "http://example.com", "reason": "spend limit", "matchLevel": 2, "revision": 0, "expirationTime": "2019-08-24T14:15:22Z", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "_links": [ {} ], "_embedded": { "documents": [] } }

Retrieve KYC requests

Request

Retrieves a list of KYC requests.

Query
limitinteger[ 0 .. 1000 ]

Limits the number of collection items to be returned.

offsetinteger[ 0 .. 1000 ]

Specifies the starting point within the collection of items to be returned.

filterstring

Filters the collection items. This field requires a special format. Use , for multiple allowed values. Use ; for multiple fields.

For more information, see Using filter with collections.

sortArray of strings

Sorts and orders the collection of items. To sort in descending order, prefix with -. Multiple fields can be sorted by separating each with ,.

curl -i -X GET \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-requests?filter=string&limit=1000&offset=1000&sort=string' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

List of KYC requests retrieved.

Headers
Pagination-Totalinteger

Total number of items.

Example:

332

Pagination-Limitinteger

Maximum number of items per page.

Example:

100

Pagination-Offsetinteger

Specifies the starting point within the collection of resource results. For example, a request with limit=20 retrieves and displays the first 20 results on a page. A following request with limit=20 and offset=20, retrieves the next page of 20 results.

Example:

2

Bodyapplication/jsonArray [
idstring<= 50 charactersread-only

ID of the KYC request.

Example:

"kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5"

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

documentsArray of objects(KycRequestDocument)non-emptyrequired

Documents to request from the customer.

documents[].typestring(KycDocumentTypes)required

Type of document to request from the customer.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
documents[].subtypesArray of strings or null or null(KycDocumentSubtypes)

Permitted document subtype.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
documents[].maxAttemptsinteger[ 0 .. 100 ]

Total number of allowed document upload attempts. Use 0 to allow unlimited upload attempts.

Default 3
documents[].faceProofRequiredboolean

Specifies if the customer must upload a photo of their face (selfie) that matches a provided KYC document.

documents[].faceLivenessRequiredboolean
statusstringread-only

Status of the request.

Enum ValueDescription
gathering

No documents have been provided yet. This is a temporary state.

attempted

At least one document has been provided but none were assigned the accepted status. This is a temporary state.

partial

At least one requested document has the accepted status, but not all requested documents have been assigned the accepted status. This is a temporary state.

pending-review

At least one requested document has the pending status, and no requested documents have been assigned the accepted status. This is a temporary state, until the document is reviewed, or another accepted document is provided.

fulfilled

All requested documents are provided and have been assigned the accepted status. This is a permanent state.

failed

At least one requested document has exhausted all attempts, and has not been assigned a accepted, pending, or in-progress status. This is a permanent state.

abandoned

One or more documents provided but the request expired. This is a permanent state.

expired

No documents were provided and the request expired. This is a permanent state.

redirectUrlstring or null(uri)

URL where the customer is redirected when a KYC document upload is complete. When the customer is redirected, Rebilly appends an info query parameter that has one of the following values:

  • back: Customer clicked the back to website link.
  • token_expired: Customer's token expired.
  • success: Customer uploaded KYC documents that have been analyzed.
  • manual: Customer uploaded KYC documents that require a manual review. This is because the analyzer rejected the documents or could not process them.
  • partial: Some of the customer's KYC documents have been analyzed, but other documents have not. For example, this may occur when a proof of address document is analyzed but proof of ID is not.

Example: https://example.com?info=success.

reasonstring or null

Reason for uploading.

Example:

"spend limit"

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches. The value of 1 is more tolerant and 2 is strict.

Default 2
revisionintegerread-only

Number of times the KYC request data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

expirationTimestring(date-time)

Date and time when the request expires. The default value is one hour in the future.

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

]
Response
application/json
[ { "id": "kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "documents": [], "status": "gathering", "redirectUrl": "http://example.com", "reason": "spend limit", "matchLevel": 2, "revision": 0, "expirationTime": "2019-08-24T14:15:22Z", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "_links": [], "_embedded": {} } ]

Retrieve a KYC request

Request

Retrieves a KYC request with a specified ID.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

curl -i -X GET \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-requests/{id}' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

KYC request retrieved.

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC request.

Example:

"kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5"

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

documentsArray of objects(KycRequestDocument)non-emptyrequired

Documents to request from the customer.

documents[].typestring(KycDocumentTypes)required

Type of document to request from the customer.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
documents[].subtypesArray of strings or null or null(KycDocumentSubtypes)

Permitted document subtype.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
documents[].maxAttemptsinteger[ 0 .. 100 ]

Total number of allowed document upload attempts. Use 0 to allow unlimited upload attempts.

Default 3
documents[].faceProofRequiredboolean

Specifies if the customer must upload a photo of their face (selfie) that matches a provided KYC document.

documents[].faceLivenessRequiredboolean
statusstringread-only

Status of the request.

Enum ValueDescription
gathering

No documents have been provided yet. This is a temporary state.

attempted

At least one document has been provided but none were assigned the accepted status. This is a temporary state.

partial

At least one requested document has the accepted status, but not all requested documents have been assigned the accepted status. This is a temporary state.

pending-review

At least one requested document has the pending status, and no requested documents have been assigned the accepted status. This is a temporary state, until the document is reviewed, or another accepted document is provided.

fulfilled

All requested documents are provided and have been assigned the accepted status. This is a permanent state.

failed

At least one requested document has exhausted all attempts, and has not been assigned a accepted, pending, or in-progress status. This is a permanent state.

abandoned

One or more documents provided but the request expired. This is a permanent state.

expired

No documents were provided and the request expired. This is a permanent state.

redirectUrlstring or null(uri)

URL where the customer is redirected when a KYC document upload is complete. When the customer is redirected, Rebilly appends an info query parameter that has one of the following values:

  • back: Customer clicked the back to website link.
  • token_expired: Customer's token expired.
  • success: Customer uploaded KYC documents that have been analyzed.
  • manual: Customer uploaded KYC documents that require a manual review. This is because the analyzer rejected the documents or could not process them.
  • partial: Some of the customer's KYC documents have been analyzed, but other documents have not. For example, this may occur when a proof of address document is analyzed but proof of ID is not.

Example: https://example.com?info=success.

reasonstring or null

Reason for uploading.

Example:

"spend limit"

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches. The value of 1 is more tolerant and 2 is strict.

Default 2
revisionintegerread-only

Number of times the KYC request data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

expirationTimestring(date-time)

Date and time when the request expires. The default value is one hour in the future.

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "documents": [ {} ], "status": "gathering", "redirectUrl": "http://example.com", "reason": "spend limit", "matchLevel": 2, "revision": 0, "expirationTime": "2019-08-24T14:15:22Z", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "_links": [ {} ], "_embedded": { "documents": [] } }

Update a KYC request

Request

Updates a KYC request with a specified ID.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

Bodyapplication/jsonrequired

KYC document resource.

documentsArray of objects(KycRequestDocument)non-emptyrequired

Documents to request from the customer.

documents[].typestring(KycDocumentTypes)required

Type of document to request from the customer.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
documents[].subtypesArray of strings or null or null(KycDocumentSubtypes)

Permitted document subtype.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
documents[].maxAttemptsinteger[ 0 .. 100 ]

Total number of allowed document upload attempts. Use 0 to allow unlimited upload attempts.

Default 3
documents[].faceProofRequiredboolean

Specifies if the customer must upload a photo of their face (selfie) that matches a provided KYC document.

documents[].faceLivenessRequiredboolean
redirectUrlstring or null(uri)

URL where the customer is redirected when a KYC document upload is complete. When the customer is redirected, Rebilly appends an info query parameter that has one of the following values:

  • back: Customer clicked the back to website link.
  • token_expired: Customer's token expired.
  • success: Customer uploaded KYC documents that have been analyzed.
  • manual: Customer uploaded KYC documents that require a manual review. This is because the analyzer rejected the documents or could not process them.
  • partial: Some of the customer's KYC documents have been analyzed, but other documents have not. For example, this may occur when a proof of address document is analyzed but proof of ID is not.

Example: https://example.com?info=success.

reasonstring or null

Reason for uploading.

Example:

"spend limit"

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches. The value of 1 is more tolerant and 2 is strict.

Default 2
expirationTimestring(date-time)

Date and time when the request expires. The default value is one hour in the future.

curl -i -X PATCH \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-requests/{id}' \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF",
    "documents": [
      {
        "type": "identity-proof",
        "subtypes": [
          "passport"
        ],
        "maxAttempts": 3,
        "faceProofRequired": true,
        "faceLivenessRequired": true
      }
    ],
    "redirectUrl": "http://example.com",
    "reason": "spend limit",
    "matchLevel": 2,
    "expirationTime": "2019-08-24T14:15:22Z"
  }'
Experience it firsthand in the API Explorer!

Responses

KYC request updated.

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC request.

Example:

"kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5"

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

documentsArray of objects(KycRequestDocument)non-emptyrequired

Documents to request from the customer.

documents[].typestring(KycDocumentTypes)required

Type of document to request from the customer.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
documents[].subtypesArray of strings or null or null(KycDocumentSubtypes)

Permitted document subtype.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
documents[].maxAttemptsinteger[ 0 .. 100 ]

Total number of allowed document upload attempts. Use 0 to allow unlimited upload attempts.

Default 3
documents[].faceProofRequiredboolean

Specifies if the customer must upload a photo of their face (selfie) that matches a provided KYC document.

documents[].faceLivenessRequiredboolean
statusstringread-only

Status of the request.

Enum ValueDescription
gathering

No documents have been provided yet. This is a temporary state.

attempted

At least one document has been provided but none were assigned the accepted status. This is a temporary state.

partial

At least one requested document has the accepted status, but not all requested documents have been assigned the accepted status. This is a temporary state.

pending-review

At least one requested document has the pending status, and no requested documents have been assigned the accepted status. This is a temporary state, until the document is reviewed, or another accepted document is provided.

fulfilled

All requested documents are provided and have been assigned the accepted status. This is a permanent state.

failed

At least one requested document has exhausted all attempts, and has not been assigned a accepted, pending, or in-progress status. This is a permanent state.

abandoned

One or more documents provided but the request expired. This is a permanent state.

expired

No documents were provided and the request expired. This is a permanent state.

redirectUrlstring or null(uri)

URL where the customer is redirected when a KYC document upload is complete. When the customer is redirected, Rebilly appends an info query parameter that has one of the following values:

  • back: Customer clicked the back to website link.
  • token_expired: Customer's token expired.
  • success: Customer uploaded KYC documents that have been analyzed.
  • manual: Customer uploaded KYC documents that require a manual review. This is because the analyzer rejected the documents or could not process them.
  • partial: Some of the customer's KYC documents have been analyzed, but other documents have not. For example, this may occur when a proof of address document is analyzed but proof of ID is not.

Example: https://example.com?info=success.

reasonstring or null

Reason for uploading.

Example:

"spend limit"

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches. The value of 1 is more tolerant and 2 is strict.

Default 2
revisionintegerread-only

Number of times the KYC request data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

expirationTimestring(date-time)

Date and time when the request expires. The default value is one hour in the future.

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "documents": [ {} ], "status": "gathering", "redirectUrl": "http://example.com", "reason": "spend limit", "matchLevel": 2, "revision": 0, "expirationTime": "2019-08-24T14:15:22Z", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "_links": [ {} ], "_embedded": { "documents": [] } }

Delete the KYC request

Request

Deletes a KYC request with a specified ID.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

curl -i -X DELETE \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-requests/{id}' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

KYC request deleted.

Response
application/json
{ "status": 401, "type": "http://example.com", "title": "string", "detail": "string", "instance": "string" }

Retrieve KYC documents

Request

Retrieves a list of KYC documents.

Query
limitinteger[ 0 .. 1000 ]

Limits the number of collection items to be returned.

offsetinteger[ 0 .. 1000 ]

Specifies the starting point within the collection of items to be returned.

filterstring

Filters the collection items. This field requires a special format. Use , for multiple allowed values. Use ; for multiple fields.

For more information, see Using filter with collections.

sortArray of strings

Sorts and orders the collection of items. To sort in descending order, prefix with -. Multiple fields can be sorted by separating each with ,.

expandstring

Expands a request to include embedded objects within the _embedded property of the response. This field accepts a comma-separated list of objects.

For more information, see Expand to include embedded objects.

curl -i -X GET \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents?expand=string&filter=string&limit=1000&offset=1000&sort=string' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

List of KYC documents retrieved.

Headers
Pagination-Totalinteger

Total number of items.

Example:

332

Pagination-Limitinteger

Maximum number of items per page.

Example:

100

Pagination-Offsetinteger

Specifies the starting point within the collection of resource results. For example, a request with limit=20 retrieves and displays the first 20 results on a page. A following request with limit=20 and offset=20, retrieves the next page of 20 results.

Example:

2

Bodyapplication/jsonArray [
idstring<= 50 charactersread-only

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
statusstringread-onlyrequired

Status of the validation.

Enum ValueDescription
pending

Waiting to be reviewed or analyzed.

in-progress

Being analyzed by the Rebilly AI.

accepted

Accepted by AI or a human.

rejected

Rejected by AI or a human.

archived

Archived by the Rebilly AI.

rejectionReasonobject or null(KycDocumentRejection)read-only

Reason the document is rejected.

requestIdstring or null<= 50 charactersread-only

ID of the KYC request.

Example:

"4f6cf35x-2c4y-483z-a0a9-158621f77a21"

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

processedTimestring or null(date-time)read-only

Date and time when the KYC document is processed.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

reviewerIdstring or null<= 50 charactersread-only

ID of the KYC document reviewer.

Example:

"44433322-2c4y-483z-a0a9-158621f77a21"

reviewerNamestring or nullread-only

First and last name of the KYC document reviewer.

reviewStartTimestring or null(date-time)read-only

Date and time when the manual review starts.

reviewTimestring or null(date-time)read-only

Date and time of manual review.

notesstring or null

Reviewer notes.

tagsArray of objects(Tag)read-only

List of KYC document tags.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

revisionintegerread-only

Number of times the KYC document data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

documentMatchesobject or nullread-only

Proof of identity document matches.

parsedDataobject or nullread-only

Parsed data.

settingsKycSettingsIdentity (object) or nullread-only

Settings used to score the document.

One of:

Settings used to score the document.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

]
Response
application/json
[ { "id": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileIds": [], "documentType": "identity-proof", "documentSubtype": "passport", "status": "pending", "rejectionReason": {}, "requestId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "processedTime": "2019-08-24T14:15:22Z", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "reviewerId": "44433322-2c4y-483z-a0a9-158621f77a21", "reviewerName": "string", "reviewStartTime": "2019-08-24T14:15:22Z", "reviewTime": "2019-08-24T14:15:22Z", "notes": "string", "tags": [], "reason": "string", "matchLevel": 2, "revision": 0, "documentMatches": {}, "parsedData": {}, "settings": {}, "_links": [], "_embedded": {} } ]

Create a KYC document

Request

Creates a KYC document.

Bodyapplication/jsonrequired

Kyc document resource.

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

notesstring or null

Reviewer notes.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

curl -i -X POST \
  https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "fileIds": [
      "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"
    ],
    "documentType": "identity-proof",
    "documentSubtype": "passport",
    "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF",
    "notes": "string",
    "reason": "string",
    "matchLevel": 2,
    "settings": {
      "weights": {
        "containsImage": 100,
        "isIdentityDocument": 100,
        "isPublishedOnline": 100,
        "firstName": 100,
        "lastName": 100,
        "expirationDate": 100,
        "dateOfBirth": 100,
        "matchesDateOfBirth": 100,
        "issueDate": 100,
        "hasMinimalAge": 100,
        "hasMatchingFaceProof": 100,
        "nationality": 100,
        "documentSubtype": 100,
        "isTampered": 100
      },
      "thresholds": {
        "rejectBelow": 100,
        "acceptAbove": 100
      }
    }
  }'
Experience it firsthand in the API Explorer!

Responses

KYC document created.

Headers
Locationstring(uri)

Location of the related resource.

Example:

"https://api.rebilly.com/example"

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
statusstringread-onlyrequired

Status of the validation.

Enum ValueDescription
pending

Waiting to be reviewed or analyzed.

in-progress

Being analyzed by the Rebilly AI.

accepted

Accepted by AI or a human.

rejected

Rejected by AI or a human.

archived

Archived by the Rebilly AI.

rejectionReasonobject or null(KycDocumentRejection)read-only

Reason the document is rejected.

requestIdstring or null<= 50 charactersread-only

ID of the KYC request.

Example:

"4f6cf35x-2c4y-483z-a0a9-158621f77a21"

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

processedTimestring or null(date-time)read-only

Date and time when the KYC document is processed.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

reviewerIdstring or null<= 50 charactersread-only

ID of the KYC document reviewer.

Example:

"44433322-2c4y-483z-a0a9-158621f77a21"

reviewerNamestring or nullread-only

First and last name of the KYC document reviewer.

reviewStartTimestring or null(date-time)read-only

Date and time when the manual review starts.

reviewTimestring or null(date-time)read-only

Date and time of manual review.

notesstring or null

Reviewer notes.

tagsArray of objects(Tag)read-only

List of KYC document tags.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

revisionintegerread-only

Number of times the KYC document data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

documentMatchesobject or nullread-only

Proof of identity document matches.

parsedDataobject or nullread-only

Parsed data.

settingsKycSettingsIdentity (object) or nullread-only

Settings used to score the document.

One of:

Settings used to score the document.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileIds": [ "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N" ], "documentType": "identity-proof", "documentSubtype": "passport", "status": "pending", "rejectionReason": { "type": "document-unreadable", "message": "Provided document is unreadable" }, "requestId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "processedTime": "2019-08-24T14:15:22Z", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "reviewerId": "44433322-2c4y-483z-a0a9-158621f77a21", "reviewerName": "string", "reviewStartTime": "2019-08-24T14:15:22Z", "reviewTime": "2019-08-24T14:15:22Z", "notes": "string", "tags": [ {} ], "reason": "string", "matchLevel": 2, "revision": 0, "documentMatches": { "score": 0.75, "data": {} }, "parsedData": { "score": 0.75, "data": {} }, "settings": { "weights": {}, "thresholds": {} }, "_links": [ {} ], "_embedded": { "customer": {}, "files": [] } }

Retrieve a KYC document

Request

Retrieves a KYC document with a specified ID.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

curl -i -X GET \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents/{id}' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

KYC document retrieved.

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
statusstringread-onlyrequired

Status of the validation.

Enum ValueDescription
pending

Waiting to be reviewed or analyzed.

in-progress

Being analyzed by the Rebilly AI.

accepted

Accepted by AI or a human.

rejected

Rejected by AI or a human.

archived

Archived by the Rebilly AI.

rejectionReasonobject or null(KycDocumentRejection)read-only

Reason the document is rejected.

requestIdstring or null<= 50 charactersread-only

ID of the KYC request.

Example:

"4f6cf35x-2c4y-483z-a0a9-158621f77a21"

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

processedTimestring or null(date-time)read-only

Date and time when the KYC document is processed.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

reviewerIdstring or null<= 50 charactersread-only

ID of the KYC document reviewer.

Example:

"44433322-2c4y-483z-a0a9-158621f77a21"

reviewerNamestring or nullread-only

First and last name of the KYC document reviewer.

reviewStartTimestring or null(date-time)read-only

Date and time when the manual review starts.

reviewTimestring or null(date-time)read-only

Date and time of manual review.

notesstring or null

Reviewer notes.

tagsArray of objects(Tag)read-only

List of KYC document tags.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

revisionintegerread-only

Number of times the KYC document data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

documentMatchesobject or nullread-only

Proof of identity document matches.

parsedDataobject or nullread-only

Parsed data.

settingsKycSettingsIdentity (object) or nullread-only

Settings used to score the document.

One of:

Settings used to score the document.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileIds": [ "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N" ], "documentType": "identity-proof", "documentSubtype": "passport", "status": "pending", "rejectionReason": { "type": "document-unreadable", "message": "Provided document is unreadable" }, "requestId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "processedTime": "2019-08-24T14:15:22Z", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "reviewerId": "44433322-2c4y-483z-a0a9-158621f77a21", "reviewerName": "string", "reviewStartTime": "2019-08-24T14:15:22Z", "reviewTime": "2019-08-24T14:15:22Z", "notes": "string", "tags": [ {} ], "reason": "string", "matchLevel": 2, "revision": 0, "documentMatches": { "score": 0.75, "data": {} }, "parsedData": { "score": 0.75, "data": {} }, "settings": { "weights": {}, "thresholds": {} }, "_links": [ {} ], "_embedded": { "customer": {}, "files": [] } }

Upsert a KYC document

Request

Creates or updates (upserts) a KYC document with a specified ID.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

Bodyapplication/jsonrequired

KYC document resource.

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

notesstring or null

Reviewer notes.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

curl -i -X PUT \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents/{id}' \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "fileIds": [
      "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"
    ],
    "documentType": "identity-proof",
    "documentSubtype": "passport",
    "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF",
    "notes": "string",
    "reason": "string",
    "matchLevel": 2,
    "settings": {
      "weights": {
        "containsImage": 100,
        "isIdentityDocument": 100,
        "isPublishedOnline": 100,
        "firstName": 100,
        "lastName": 100,
        "expirationDate": 100,
        "dateOfBirth": 100,
        "matchesDateOfBirth": 100,
        "issueDate": 100,
        "hasMinimalAge": 100,
        "hasMatchingFaceProof": 100,
        "nationality": 100,
        "documentSubtype": 100,
        "isTampered": 100
      },
      "thresholds": {
        "rejectBelow": 100,
        "acceptAbove": 100
      }
    }
  }'
Experience it firsthand in the API Explorer!

Responses

KYC document updated.

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
statusstringread-onlyrequired

Status of the validation.

Enum ValueDescription
pending

Waiting to be reviewed or analyzed.

in-progress

Being analyzed by the Rebilly AI.

accepted

Accepted by AI or a human.

rejected

Rejected by AI or a human.

archived

Archived by the Rebilly AI.

rejectionReasonobject or null(KycDocumentRejection)read-only

Reason the document is rejected.

requestIdstring or null<= 50 charactersread-only

ID of the KYC request.

Example:

"4f6cf35x-2c4y-483z-a0a9-158621f77a21"

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

processedTimestring or null(date-time)read-only

Date and time when the KYC document is processed.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

reviewerIdstring or null<= 50 charactersread-only

ID of the KYC document reviewer.

Example:

"44433322-2c4y-483z-a0a9-158621f77a21"

reviewerNamestring or nullread-only

First and last name of the KYC document reviewer.

reviewStartTimestring or null(date-time)read-only

Date and time when the manual review starts.

reviewTimestring or null(date-time)read-only

Date and time of manual review.

notesstring or null

Reviewer notes.

tagsArray of objects(Tag)read-only

List of KYC document tags.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

revisionintegerread-only

Number of times the KYC document data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

documentMatchesobject or nullread-only

Proof of identity document matches.

parsedDataobject or nullread-only

Parsed data.

settingsKycSettingsIdentity (object) or nullread-only

Settings used to score the document.

One of:

Settings used to score the document.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileIds": [ "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N" ], "documentType": "identity-proof", "documentSubtype": "passport", "status": "pending", "rejectionReason": { "type": "document-unreadable", "message": "Provided document is unreadable" }, "requestId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "processedTime": "2019-08-24T14:15:22Z", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "reviewerId": "44433322-2c4y-483z-a0a9-158621f77a21", "reviewerName": "string", "reviewStartTime": "2019-08-24T14:15:22Z", "reviewTime": "2019-08-24T14:15:22Z", "notes": "string", "tags": [ {} ], "reason": "string", "matchLevel": 2, "revision": 0, "documentMatches": { "score": 0.75, "data": {} }, "parsedData": { "score": 0.75, "data": {} }, "settings": { "weights": {}, "thresholds": {} }, "_links": [ {} ], "_embedded": { "customer": {}, "files": [] } }

Accept a KYC document

Request

Accepts a KYC document and changes the documents status to accepted. The review time and reviewer information is also updated.

Note: Use this operation for manual overrides.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

curl -i -X POST \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents/{id}/acceptance' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

KYC document acceptance created.

Headers
Locationstring(uri)

Location of the related resource.

Example:

"https://api.rebilly.com/example"

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
statusstringread-onlyrequired

Status of the validation.

Enum ValueDescription
pending

Waiting to be reviewed or analyzed.

in-progress

Being analyzed by the Rebilly AI.

accepted

Accepted by AI or a human.

rejected

Rejected by AI or a human.

archived

Archived by the Rebilly AI.

rejectionReasonobject or null(KycDocumentRejection)read-only

Reason the document is rejected.

requestIdstring or null<= 50 charactersread-only

ID of the KYC request.

Example:

"4f6cf35x-2c4y-483z-a0a9-158621f77a21"

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

processedTimestring or null(date-time)read-only

Date and time when the KYC document is processed.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

reviewerIdstring or null<= 50 charactersread-only

ID of the KYC document reviewer.

Example:

"44433322-2c4y-483z-a0a9-158621f77a21"

reviewerNamestring or nullread-only

First and last name of the KYC document reviewer.

reviewStartTimestring or null(date-time)read-only

Date and time when the manual review starts.

reviewTimestring or null(date-time)read-only

Date and time of manual review.

notesstring or null

Reviewer notes.

tagsArray of objects(Tag)read-only

List of KYC document tags.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

revisionintegerread-only

Number of times the KYC document data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

documentMatchesobject or nullread-only

Proof of identity document matches.

parsedDataobject or nullread-only

Parsed data.

settingsKycSettingsIdentity (object) or nullread-only

Settings used to score the document.

One of:

Settings used to score the document.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileIds": [ "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N" ], "documentType": "identity-proof", "documentSubtype": "passport", "status": "pending", "rejectionReason": { "type": "document-unreadable", "message": "Provided document is unreadable" }, "requestId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "processedTime": "2019-08-24T14:15:22Z", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "reviewerId": "44433322-2c4y-483z-a0a9-158621f77a21", "reviewerName": "string", "reviewStartTime": "2019-08-24T14:15:22Z", "reviewTime": "2019-08-24T14:15:22Z", "notes": "string", "tags": [ {} ], "reason": "string", "matchLevel": 2, "revision": 0, "documentMatches": { "score": 0.75, "data": {} }, "parsedData": { "score": 0.75, "data": {} }, "settings": { "weights": {}, "thresholds": {} }, "_links": [ {} ], "_embedded": { "customer": {}, "files": [] } }

Update KYC document matches

Request

Updates the document matches of a KYC document with a specified ID.

Note: Use this operation for manual overrides.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

Bodyapplication/jsonrequired

Kyc document resource.

Any of:

Matched identity data.

containsImageboolean

Specifies if the document includes an image that contains a face.

Example:

true

isIdentityDocumentboolean

Specifies if the document resembles an ID.

Example:

true

isPublishedOnlineboolean

Specifies if an exact match of the document has been found online.

Example:

false

firstNamestring or null

First name of the customer. This value is null if no match is found.

Example:

"John"

lastNamestring or null

Last name of the customer. This value is null if no match is found.

Example:

"Doe"

dateOfBirthstring or null(date-time)

Date of birth detected on the document. This value is null if no match is detected.

expirationDatestring or null(date-time)

Expiration date detected on the document. This value is null if no expiration date is detected.

issueDatestring or null(date-time)

Issue date detected on the document. This value is null if no issue date is detected.

nationalitystring or null<= 3 characters

Nationality detected on a passport or citizenship document. This value is null if no nationality is detected.

Example:

"US"

issuanceCountrystring or null= 2 characters

Country that issued the document.

Example:

"CA"

issuanceRegionstring or null

Region, state, province, or territory that issued the document.

Example:

"Ontario"

documentNumberstring or null

Unique number on the identity document. This value may contain alphanumeric characters.

Example:

"1234567890"

documentSubtypestring or null(KycDocumentSubtypes)

Interpreted subtype of the uploaded document.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
hasMatchingFaceProofboolean

Specifies if an identity document has matching face proof.

Example:

false

isTamperedboolean

Specifies if an identity document has been tampered with.

Example:

false

expiryDatestring or null(date-time)Deprecated

Use expirationDate field instead.

curl -i -X POST \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents/{id}/matches' \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "containsImage": true,
    "isIdentityDocument": true,
    "isPublishedOnline": false,
    "firstName": "John",
    "lastName": "Doe",
    "dateOfBirth": "2019-08-24T14:15:22Z",
    "expirationDate": "2019-08-24T14:15:22Z",
    "issueDate": "2019-08-24T14:15:22Z",
    "nationality": "US",
    "issuanceCountry": "CA",
    "issuanceRegion": "Ontario",
    "documentNumber": "1234567890",
    "documentSubtype": "passport",
    "hasMatchingFaceProof": false,
    "isTampered": false,
    "expiryDate": "2019-08-24T14:15:22Z"
  }'
Experience it firsthand in the API Explorer!

Responses

Document matches updated.

Response
application/json
{ "status": 401, "type": "http://example.com", "title": "string", "detail": "string", "instance": "string" }

Reject a KYC document

Request

Rejects a KYC document and changes the status to rejected. The review time and reviewer information is also updated.

Note: Use this operation for manual overrides.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

Bodyapplication/jsonrequired

KYC document resource.

typestring(KycDocumentRejectionReasonTypes)

Reason the document is rejected.

Enum"document-unreadable""document-expired""document-not-matching""document-duplicate""document-invalid""document-not-open""underage-person""third-party-or-mismatch""expiration-date-missing""issue-date-missing"
messagestring

KYC document rejection message.

Example:

"Provided document is unreadable"

curl -i -X POST \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents/{id}/rejection' \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "type": "document-unreadable",
    "message": "Provided document is unreadable"
  }'
Experience it firsthand in the API Explorer!

Responses

KYC document rejected.

Headers
Locationstring(uri)

Location of the related resource.

Example:

"https://api.rebilly.com/example"

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
statusstringread-onlyrequired

Status of the validation.

Enum ValueDescription
pending

Waiting to be reviewed or analyzed.

in-progress

Being analyzed by the Rebilly AI.

accepted

Accepted by AI or a human.

rejected

Rejected by AI or a human.

archived

Archived by the Rebilly AI.

rejectionReasonobject or null(KycDocumentRejection)read-only

Reason the document is rejected.

requestIdstring or null<= 50 charactersread-only

ID of the KYC request.

Example:

"4f6cf35x-2c4y-483z-a0a9-158621f77a21"

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

processedTimestring or null(date-time)read-only

Date and time when the KYC document is processed.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

reviewerIdstring or null<= 50 charactersread-only

ID of the KYC document reviewer.

Example:

"44433322-2c4y-483z-a0a9-158621f77a21"

reviewerNamestring or nullread-only

First and last name of the KYC document reviewer.

reviewStartTimestring or null(date-time)read-only

Date and time when the manual review starts.

reviewTimestring or null(date-time)read-only

Date and time of manual review.

notesstring or null

Reviewer notes.

tagsArray of objects(Tag)read-only

List of KYC document tags.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

revisionintegerread-only

Number of times the KYC document data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

documentMatchesobject or nullread-only

Proof of identity document matches.

parsedDataobject or nullread-only

Parsed data.

settingsKycSettingsIdentity (object) or nullread-only

Settings used to score the document.

One of:

Settings used to score the document.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileIds": [ "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N" ], "documentType": "identity-proof", "documentSubtype": "passport", "status": "pending", "rejectionReason": { "type": "document-unreadable", "message": "Provided document is unreadable" }, "requestId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "processedTime": "2019-08-24T14:15:22Z", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "reviewerId": "44433322-2c4y-483z-a0a9-158621f77a21", "reviewerName": "string", "reviewStartTime": "2019-08-24T14:15:22Z", "reviewTime": "2019-08-24T14:15:22Z", "notes": "string", "tags": [ {} ], "reason": "string", "matchLevel": 2, "revision": 0, "documentMatches": { "score": 0.75, "data": {} }, "parsedData": { "score": 0.75, "data": {} }, "settings": { "weights": {}, "thresholds": {} }, "_links": [ {} ], "_embedded": { "customer": {}, "files": [] } }

Review a KYC document

Request

Updates the reviewTime and reviewerId of a KYC document with a specified ID.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

curl -i -X POST \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents/{id}/review' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

KYC document reviewed.

Headers
Locationstring(uri)

Location of the related resource.

Example:

"https://api.rebilly.com/example"

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
statusstringread-onlyrequired

Status of the validation.

Enum ValueDescription
pending

Waiting to be reviewed or analyzed.

in-progress

Being analyzed by the Rebilly AI.

accepted

Accepted by AI or a human.

rejected

Rejected by AI or a human.

archived

Archived by the Rebilly AI.

rejectionReasonobject or null(KycDocumentRejection)read-only

Reason the document is rejected.

requestIdstring or null<= 50 charactersread-only

ID of the KYC request.

Example:

"4f6cf35x-2c4y-483z-a0a9-158621f77a21"

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

processedTimestring or null(date-time)read-only

Date and time when the KYC document is processed.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

reviewerIdstring or null<= 50 charactersread-only

ID of the KYC document reviewer.

Example:

"44433322-2c4y-483z-a0a9-158621f77a21"

reviewerNamestring or nullread-only

First and last name of the KYC document reviewer.

reviewStartTimestring or null(date-time)read-only

Date and time when the manual review starts.

reviewTimestring or null(date-time)read-only

Date and time of manual review.

notesstring or null

Reviewer notes.

tagsArray of objects(Tag)read-only

List of KYC document tags.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

revisionintegerread-only

Number of times the KYC document data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

documentMatchesobject or nullread-only

Proof of identity document matches.

parsedDataobject or nullread-only

Parsed data.

settingsKycSettingsIdentity (object) or nullread-only

Settings used to score the document.

One of:

Settings used to score the document.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileIds": [ "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N" ], "documentType": "identity-proof", "documentSubtype": "passport", "status": "pending", "rejectionReason": { "type": "document-unreadable", "message": "Provided document is unreadable" }, "requestId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "processedTime": "2019-08-24T14:15:22Z", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "reviewerId": "44433322-2c4y-483z-a0a9-158621f77a21", "reviewerName": "string", "reviewStartTime": "2019-08-24T14:15:22Z", "reviewTime": "2019-08-24T14:15:22Z", "notes": "string", "tags": [ {} ], "reason": "string", "matchLevel": 2, "revision": 0, "documentMatches": { "score": 0.75, "data": {} }, "parsedData": { "score": 0.75, "data": {} }, "settings": { "weights": {}, "thresholds": {} }, "_links": [ {} ], "_embedded": { "customer": {}, "files": [] } }

Start review of a KYC document

Request

Starts the review process of a KYC document with a specified ID.

This operation also sets the KYC document reviewStartTime to the current date-time, and updates the review information.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

curl -i -X POST \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents/{id}/start-review' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

KYC document review started.

Headers
Locationstring(uri)

Location of the related resource.

Example:

"https://api.rebilly.com/example"

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
statusstringread-onlyrequired

Status of the validation.

Enum ValueDescription
pending

Waiting to be reviewed or analyzed.

in-progress

Being analyzed by the Rebilly AI.

accepted

Accepted by AI or a human.

rejected

Rejected by AI or a human.

archived

Archived by the Rebilly AI.

rejectionReasonobject or null(KycDocumentRejection)read-only

Reason the document is rejected.

requestIdstring or null<= 50 charactersread-only

ID of the KYC request.

Example:

"4f6cf35x-2c4y-483z-a0a9-158621f77a21"

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

processedTimestring or null(date-time)read-only

Date and time when the KYC document is processed.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

reviewerIdstring or null<= 50 charactersread-only

ID of the KYC document reviewer.

Example:

"44433322-2c4y-483z-a0a9-158621f77a21"

reviewerNamestring or nullread-only

First and last name of the KYC document reviewer.

reviewStartTimestring or null(date-time)read-only

Date and time when the manual review starts.

reviewTimestring or null(date-time)read-only

Date and time of manual review.

notesstring or null

Reviewer notes.

tagsArray of objects(Tag)read-only

List of KYC document tags.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

revisionintegerread-only

Number of times the KYC document data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

documentMatchesobject or nullread-only

Proof of identity document matches.

parsedDataobject or nullread-only

Parsed data.

settingsKycSettingsIdentity (object) or nullread-only

Settings used to score the document.

One of:

Settings used to score the document.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileIds": [ "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N" ], "documentType": "identity-proof", "documentSubtype": "passport", "status": "pending", "rejectionReason": { "type": "document-unreadable", "message": "Provided document is unreadable" }, "requestId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "processedTime": "2019-08-24T14:15:22Z", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "reviewerId": "44433322-2c4y-483z-a0a9-158621f77a21", "reviewerName": "string", "reviewStartTime": "2019-08-24T14:15:22Z", "reviewTime": "2019-08-24T14:15:22Z", "notes": "string", "tags": [ {} ], "reason": "string", "matchLevel": 2, "revision": 0, "documentMatches": { "score": 0.75, "data": {} }, "parsedData": { "score": 0.75, "data": {} }, "settings": { "weights": {}, "thresholds": {} }, "_links": [ {} ], "_embedded": { "customer": {}, "files": [] } }

Stop review of a KYC document

Request

Stops the review of a KYC document with a specified ID.

This operation also sets the KYC document reviewStartTime and the reviewer information to null. Use this operation when the reviewer must stop the review. For example, if the reviewer must take a break, or ends a shift.

Path
idstring<= 50 characters^[@~\-\.\w]+$required

ID of the resource.

curl -i -X POST \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-documents/{id}/stop-review' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

KYC document review stopped.

Headers
Locationstring(uri)

Location of the related resource.

Example:

"https://api.rebilly.com/example"

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdsArray of stringsrequired

IDs of linked file objects.

Uploaded identity-proof files must have the following tags attached to be used for KYC purposes: ['kyc', 'id-front'], ['kyc', 'id-back'], ['kyc', 'face-proof'].

Example:

["file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"]

documentTypestring(KycDocumentTypes)required

Document type submitted for validation. Only the identity-proof and address-proof types are analyzed automatically.

Enum"identity-proof""address-proof""funds-proof""purchase-proof""credit-file-proof"
Discriminator
documentSubtypestring or null(KycDocumentSubtypes)

Document subtype submitted for validation.

Enum"passport""id-card""driver-license""birth-certificate""utility-bill""rental-receipt""lease-agreement""copy-credit-card""credit-card-statement""bank-statement"
statusstringread-onlyrequired

Status of the validation.

Enum ValueDescription
pending

Waiting to be reviewed or analyzed.

in-progress

Being analyzed by the Rebilly AI.

accepted

Accepted by AI or a human.

rejected

Rejected by AI or a human.

archived

Archived by the Rebilly AI.

rejectionReasonobject or null(KycDocumentRejection)read-only

Reason the document is rejected.

requestIdstring or null<= 50 charactersread-only

ID of the KYC request.

Example:

"4f6cf35x-2c4y-483z-a0a9-158621f77a21"

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.

updatedTimestring(date-time)(UpdatedTime)read-only

Date and time which updates automatically when the resource is updated.

processedTimestring or null(date-time)read-only

Date and time when the KYC document is processed.

customerIdstring(CustomerId)<= 50 charactersrequired

ID of the customer resource.

reviewerIdstring or null<= 50 charactersread-only

ID of the KYC document reviewer.

Example:

"44433322-2c4y-483z-a0a9-158621f77a21"

reviewerNamestring or nullread-only

First and last name of the KYC document reviewer.

reviewStartTimestring or null(date-time)read-only

Date and time when the manual review starts.

reviewTimestring or null(date-time)read-only

Date and time of manual review.

notesstring or null

Reviewer notes.

tagsArray of objects(Tag)read-only

List of KYC document tags.

reasonstring or null

Reason for uploading.

matchLevelinteger[ 1 .. 2 ]

Tolerance level setting for document matches.

Example:

2

revisionintegerread-only

Number of times the KYC document data has been modified.

Use this value when analyzing webhook data to determine if a change must take precedence over the current representation.

documentMatchesobject or nullread-only

Proof of identity document matches.

parsedDataobject or nullread-only

Parsed data.

settingsKycSettingsIdentity (object) or nullread-only

Settings used to score the document.

One of:

Settings used to score the document.

_linksArray of objectsread-only

Related links.

_embeddedobjectread-only

Embedded objects that are requested by the expand query parameter.

Response
application/json
{ "id": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileIds": [ "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N" ], "documentType": "identity-proof", "documentSubtype": "passport", "status": "pending", "rejectionReason": { "type": "document-unreadable", "message": "Provided document is unreadable" }, "requestId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "createdTime": "2019-08-24T14:15:22Z", "updatedTime": "2019-08-24T14:15:22Z", "processedTime": "2019-08-24T14:15:22Z", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "reviewerId": "44433322-2c4y-483z-a0a9-158621f77a21", "reviewerName": "string", "reviewStartTime": "2019-08-24T14:15:22Z", "reviewTime": "2019-08-24T14:15:22Z", "notes": "string", "tags": [ {} ], "reason": "string", "matchLevel": 2, "revision": 0, "documentMatches": { "score": 0.75, "data": {} }, "parsedData": { "score": 0.75, "data": {} }, "settings": { "weights": {}, "thresholds": {} }, "_links": [ {} ], "_embedded": { "customer": {}, "files": [] } }

Retrieve KYC settings

Request

Retrieves KYC settings.

curl -i -X GET \
  https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-settings \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

KYC settings retrieved.

Bodyapplication/json
identityProofobject(KycSettingsIdentity)

Identity proof settings.

addressProofobject(KycSettingsAddress)

Address proof settings.

Response
application/json
{ "identityProof": { "weights": {}, "thresholds": {} }, "addressProof": { "weights": {}, "thresholds": {} } }

Update KYC settings

Request

Updates KYC settings.

Bodyapplication/jsonrequired

Settings for KYC analysis.

identityProofobject(KycSettingsIdentity)

Identity proof settings.

addressProofobject(KycSettingsAddress)

Address proof settings.

curl -i -X PUT \
  https://www.rebilly.com/_mock/docs/dev-docs/api/kyc-settings \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "identityProof": {
      "weights": {
        "containsImage": 100,
        "isIdentityDocument": 100,
        "isPublishedOnline": 100,
        "firstName": 100,
        "lastName": 100,
        "expirationDate": 100,
        "dateOfBirth": 100,
        "matchesDateOfBirth": 100,
        "issueDate": 100,
        "hasMinimalAge": 100,
        "hasMatchingFaceProof": 100,
        "nationality": 100,
        "documentSubtype": 100,
        "isTampered": 100
      },
      "thresholds": {
        "rejectBelow": 100,
        "acceptAbove": 100
      }
    },
    "addressProof": {
      "weights": {
        "firstName": 100,
        "lastName": 100,
        "line1": 100,
        "city": 100,
        "region": 100,
        "postalCode": 100,
        "date": 100,
        "phone": 100,
        "documentSubtype": 100,
        "isTampered": 100
      },
      "thresholds": {
        "rejectBelow": 100,
        "acceptAbove": 100
      }
    }
  }'
Experience it firsthand in the API Explorer!

Responses

KYC settings updated.

Bodyapplication/json
identityProofobject(KycSettingsIdentity)

Identity proof settings.

addressProofobject(KycSettingsAddress)

Address proof settings.

Response
application/json
{ "identityProof": { "weights": {}, "thresholds": {} }, "addressProof": { "weights": {}, "thresholds": {} } }

KYC document acceptedWebhook

Request

Bodyapplication/json

KYC document webhook request body resource.

customerIdstring(CustomerId)<= 50 characters

ID of the customer resource.

kycDocumentIdstring<= 50 characters

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdstring<= 50 characters

ID of the file.

Example:

"file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"

eventTypestring

Type of webhook event.

Enum"kyc-document-accepted""kyc-document-created""kyc-document-modified""kyc-document-rejected""kyc-document-reviewed""kyc-document-archived"
_embeddedobject

Customer and KYC document data.

_linksArray of objects

Related links.

application/json
{ "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "kycDocumentId": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileId": "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N", "eventType": "kyc-document-accepted", "_embedded": { "customer": {}, "kycDocument": {} }, "_links": [ {} ] }

Responses

Returns any 2xx status to indicate that data is received.

KYC document modifiedWebhook

Request

Bodyapplication/json

KYC document webhook request body resource.

customerIdstring(CustomerId)<= 50 characters

ID of the customer resource.

kycDocumentIdstring<= 50 characters

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdstring<= 50 characters

ID of the file.

Example:

"file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"

eventTypestring

Type of webhook event.

Enum"kyc-document-accepted""kyc-document-created""kyc-document-modified""kyc-document-rejected""kyc-document-reviewed""kyc-document-archived"
_embeddedobject

Customer and KYC document data.

_linksArray of objects

Related links.

application/json
{ "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "kycDocumentId": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileId": "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N", "eventType": "kyc-document-accepted", "_embedded": { "customer": {}, "kycDocument": {} }, "_links": [ {} ] }

Responses

Returns any 2xx status to indicate that data is received.

KYC document rejectedWebhook

Request

Bodyapplication/json

KYC document webhook request body resource.

customerIdstring(CustomerId)<= 50 characters

ID of the customer resource.

kycDocumentIdstring<= 50 characters

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdstring<= 50 characters

ID of the file.

Example:

"file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"

eventTypestring

Type of webhook event.

Enum"kyc-document-accepted""kyc-document-created""kyc-document-modified""kyc-document-rejected""kyc-document-reviewed""kyc-document-archived"
_embeddedobject

Customer and KYC document data.

_linksArray of objects

Related links.

application/json
{ "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "kycDocumentId": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileId": "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N", "eventType": "kyc-document-accepted", "_embedded": { "customer": {}, "kycDocument": {} }, "_links": [ {} ] }

Responses

Returns any 2xx status to indicate that data is received.

KYC document reviewedWebhook

Request

Bodyapplication/json

KYC document webhook request body resource.

customerIdstring(CustomerId)<= 50 characters

ID of the customer resource.

kycDocumentIdstring<= 50 characters

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdstring<= 50 characters

ID of the file.

Example:

"file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"

eventTypestring

Type of webhook event.

Enum"kyc-document-accepted""kyc-document-created""kyc-document-modified""kyc-document-rejected""kyc-document-reviewed""kyc-document-archived"
_embeddedobject

Customer and KYC document data.

_linksArray of objects

Related links.

application/json
{ "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "kycDocumentId": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileId": "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N", "eventType": "kyc-document-accepted", "_embedded": { "customer": {}, "kycDocument": {} }, "_links": [ {} ] }

Responses

Returns any 2xx status to indicate that data is received.

KYC document archivedWebhook

Request

Bodyapplication/json

KYC document webhook request body resource.

customerIdstring(CustomerId)<= 50 characters

ID of the customer resource.

kycDocumentIdstring<= 50 characters

ID of the KYC document.

Example:

"kyc_doc_0YV7JHY705C6DA487BFTAA33V8"

fileIdstring<= 50 characters

ID of the file.

Example:

"file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N"

eventTypestring

Type of webhook event.

Enum"kyc-document-accepted""kyc-document-created""kyc-document-modified""kyc-document-rejected""kyc-document-reviewed""kyc-document-archived"
_embeddedobject

Customer and KYC document data.

_linksArray of objects

Related links.

application/json
{ "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "kycDocumentId": "kyc_doc_0YV7JHY705C6DA487BFTAA33V8", "fileId": "file_0YV7HZ7KDCC5WBV9Q7WRKG1H6N", "eventType": "kyc-document-accepted", "_embedded": { "customer": {}, "kycDocument": {} }, "_links": [ {} ] }

Responses

Returns any 2xx status to indicate that data is received.

KYC request attemptedWebhook

Request

Bodyapplication/json

KYC request webhook body resource.

customerIdstring(CustomerId)<= 50 characters

ID of the customer resource.

kycRequestIdstring<= 50 characters

ID of the KYC request.

Example:

"kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5"

eventTypestring

Rebilly webhooks event type.

Enum"kyc-request-attempted""kyc-request-failed""kyc-request-fulfilled""kyc-request-partially-fulfilled"
_embeddedobject

Customer and KYC request data.

_linksArray of objects

Related links.

application/json
{ "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "kycRequestId": "kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5", "eventType": "kyc-request-attempted", "_embedded": { "customer": {}, "kycRequest": {} }, "_links": [ {} ] }

Responses

Returns any 2xx status to indicate that data is received.

KYC request failedWebhook

Request

Bodyapplication/json

KYC request webhook body resource.

customerIdstring(CustomerId)<= 50 characters

ID of the customer resource.

kycRequestIdstring<= 50 characters

ID of the KYC request.

Example:

"kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5"

eventTypestring

Rebilly webhooks event type.

Enum"kyc-request-attempted""kyc-request-failed""kyc-request-fulfilled""kyc-request-partially-fulfilled"
_embeddedobject

Customer and KYC request data.

_linksArray of objects

Related links.

application/json
{ "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "kycRequestId": "kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5", "eventType": "kyc-request-attempted", "_embedded": { "customer": {}, "kycRequest": {} }, "_links": [ {} ] }

Responses

Returns any 2xx status to indicate that data is received.

KYC request fulfilledWebhook

Request

Bodyapplication/json

KYC request webhook body resource.

customerIdstring(CustomerId)<= 50 characters

ID of the customer resource.

kycRequestIdstring<= 50 characters

ID of the KYC request.

Example:

"kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5"

eventTypestring

Rebilly webhooks event type.

Enum"kyc-request-attempted""kyc-request-failed""kyc-request-fulfilled""kyc-request-partially-fulfilled"
_embeddedobject

Customer and KYC request data.

_linksArray of objects

Related links.

application/json
{ "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "kycRequestId": "kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5", "eventType": "kyc-request-attempted", "_embedded": { "customer": {}, "kycRequest": {} }, "_links": [ {} ] }

Responses

Returns any 2xx status to indicate that data is received.

KYC request partially fulfilledWebhook

Request

Bodyapplication/json

KYC request webhook body resource.

customerIdstring(CustomerId)<= 50 characters

ID of the customer resource.

kycRequestIdstring<= 50 characters

ID of the KYC request.

Example:

"kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5"

eventTypestring

Rebilly webhooks event type.

Enum"kyc-request-attempted""kyc-request-failed""kyc-request-fulfilled""kyc-request-partially-fulfilled"
_embeddedobject

Customer and KYC request data.

_linksArray of objects

Related links.

application/json
{ "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "kycRequestId": "kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5", "eventType": "kyc-request-attempted", "_embedded": { "customer": {}, "kycRequest": {} }, "_links": [ {} ] }

Responses

Returns any 2xx status to indicate that data is received.

AML

Use Anti-Money Laundering (AML) operations to screen customers and help prevent your business from becoming directly or indirectly involved in criminal activity.

Use AML operations during customer creation, and some transaction processing, to help determine if a potential customer (lead), or customer, has political or economic sanctions against them.

AML operations search the following for screening purposes: Politically Exposed Persons (PEPs) lists, sanction lists, and adverse media lists.

OperationsWebhooks

Risk score

Use risk score operations to configure blocklists based on transaction risk factors.

Operations

Custom fields

Use custom fields to extend a resource scheme to include custom data that is not provided as a common field. Depending on the resource on which the custom field is added, it may be available in the Rebilly UI.

Example: A custom field called preferredCommunicationChannel is added to the customer resource. It has two allowed values, which are 'email' and 'phone'.

{
  "customFields": {
      "preferredCommunicationChannel": "email"
  }
}

For detailed information on Rebilly resources, see Resources.

Operations

Files

Use the file entity to store files and related metadata. Files can be sorted by size, MIME-type, user-defined tags, and description.

The following methods are available to upload files: multipart/form-data encoded form, RAW POST — by sending the file contents as the POST body, and fetching from URL — by providing the file URL using the 'url' parameter.

Use the attachments entity to link a file to one or multiple objects, such as: customer, dispute, transaction, order, plan, product, invoice, or timeline comment. Attachments enable you to quickly find and use files related to specific entities.

Operations