Upsert a customer

Creates or updates (upserts) a customer with a specified ID.

If the customer already has an identifier within your system, and you want to create a customer with a specified ID — use this operation to prevent duplicate customers. For more information, see Prevent duplicate customers.

SecuritySecretApiKey or JWT
Request
path Parameters
id
required
string <= 50 characters ^[@~\-\.\w]+$

ID of the resource.

Request Body schema: application/json

Customer resource.

websiteId
string <= 50 characters

ID of the website. A website is where an organization obtains a customer. For more information, see Obtain an organization ID and website ID.

paymentToken
string

Write-only payment token. If supplied, the token is converted into a payment instrument and set as the defaultPaymentInstrument value. If both are supplied, the value of this property overrides the defaultPaymentInstrument value. The token expires after first use.

(Vaulted instrument (object or null)) or (Alternative instrument (object or null)) or (Cash (object or null)) or (Check (object or null))

Default payment instrument information.

Any of:

Vaulted payment instrument.

method
required
string

Payment method supported vault. For more information, see Payment instrument.

Enum: "payment-card" "ach" "cash" "check" "paypal" "AdvCash" "Airpay" "Alfa-click" "Alipay" "AmazonPay" … 165 more
paymentInstrumentId
required
string <= 50 characters

ID of the payment instrument.

customFields
object (ResourceCustomFields)
Default: {}

Use custom fields to extend a resource scheme to include custom data that is not provided as a common field. For more information, see Custom fields.

object or null

Customer's primary address.

firstName
string or null <= 45 characters ^[\w\s\-\p{L},.']+$

Contact's first name.

lastName
string or null <= 45 characters ^[\w\s\-\p{L},.']+$

Contact's last name.

organization
string or null <= 255 characters ^[\w\s\-\p{L},.'&]+$

Contact's organization.

address
string or null <= 60 characters ^[\w\s\-\/\p{L},.#;:()'&]+$

First line of the contact's street address.

address2
string or null <= 60 characters ^[\w\s\-\/\p{L},.#;:()'&]+$

Second line of the contact's street address.

city
string or null <= 45 characters ^[\w\s\-\p{L},.']+$

Contact's city of residence.

region
string or null <= 45 characters ^[\w\s\-\/\p{L},.#;:()']+$

Contact's region of residence.

country
string or null <= 2 characters ^[A-Z]{2}$

Contact's country of residence in ISO 3166 alpha-2 country code. For examples, see ISO.org.

postalCode
string or null <= 10 characters ^[\w\s\-]+$

Contact's postal code.

Array of objects (ContactPhoneNumbers)

List of phone numbers associated with the contact.

Array
label
required
string <= 45 characters

Phone number label or name.

value
required
string <= 50 characters

Phone number value.

primary
boolean

Specifies if the phone number is the contact's primary phone number.

Array of objects (ContactEmails)

List of email addresses associated with the contact.

Array
label
required
string <= 45 characters

Email label or name.

value
required
string <email> <= 255 characters

Email address value.

primary
boolean

Specifies if the email address is the contact's primary email address.

dob
string or null <date>

Contact's date of birth in ISO-8601 YYYY-MM-DD format.

jobTitle
string or null <= 255 characters ^[\w\s\-\/\p{L},.#;:()']+$

Contact's job title.

isEddRequired
boolean
Default: false

Specifies if Enhanced Due Diligence (EDD) is enabled for this customer. For more information, see Enhanced Due Diligence.

Responses
200

Customer.

Response Schema: application/json
id
string <= 50 characters

ID of the customer.

email
string or null <email>

Customer's email address.

firstName
string or null

Customer's first name.

lastName
string or null

Customer's last name.

websiteId
string <= 50 characters

ID of the website. A website is where an organization obtains a customer. For more information, see Obtain an organization ID and website ID.

(Vaulted instrument (object or null)) or (Alternative instrument (object or null)) or (Cash (object or null)) or (Check (object or null))

Default payment instrument information.

Any of:

Vaulted payment instrument.

method
required
string

Payment method supported vault. For more information, see Payment instrument.

Enum: "payment-card" "ach" "cash" "check" "paypal" "AdvCash" "Airpay" "Alfa-click" "Alipay" "AmazonPay" … 165 more
paymentInstrumentId
required
string <= 50 characters

ID of the payment instrument.

createdTime
string <date-time> (CreatedTime)

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

updatedTime
string <date-time> (UpdatedTime)

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

customFields
object (ResourceCustomFields)
Default: {}

Use custom fields to extend a resource scheme to include custom data that is not provided as a common field. For more information, see Custom fields.

object or null

Customer's primary address.

firstName
string or null <= 45 characters ^[\w\s\-\p{L},.']+$

Contact's first name.

lastName
string or null <= 45 characters ^[\w\s\-\p{L},.']+$

Contact's last name.

organization
string or null <= 255 characters ^[\w\s\-\p{L},.'&]+$

Contact's organization.

address
string or null <= 60 characters ^[\w\s\-\/\p{L},.#;:()'&]+$

First line of the contact's street address.

address2
string or null <= 60 characters ^[\w\s\-\/\p{L},.#;:()'&]+$

Second line of the contact's street address.

city
string or null <= 45 characters ^[\w\s\-\p{L},.']+$

Contact's city of residence.

region
string or null <= 45 characters ^[\w\s\-\/\p{L},.#;:()']+$

Contact's region of residence.

country
string or null <= 2 characters ^[A-Z]{2}$

Contact's country of residence in ISO 3166 alpha-2 country code. For examples, see ISO.org.

postalCode
string or null <= 10 characters ^[\w\s\-]+$

Contact's postal code.

Array of objects (ContactPhoneNumbers)

List of phone numbers associated with the contact.

Array
label
required
string <= 45 characters

Phone number label or name.

value
required
string <= 50 characters

Phone number value.

primary
boolean

Specifies if the phone number is the contact's primary phone number.

Array of objects (ContactEmails)

List of email addresses associated with the contact.

Array
label
required
string <= 45 characters

Email label or name.

value
required
string <email> <= 255 characters

Email address value.

primary
boolean

Specifies if the email address is the contact's primary email address.

dob
string or null <date>

Contact's date of birth in ISO-8601 YYYY-MM-DD format.

jobTitle
string or null <= 255 characters ^[\w\s\-\/\p{L},.#;:()']+$

Contact's job title.

hash
string <= 40 characters

Use this value to compare contacts for identical attribute values.

object (CustomerAverageValue)

Average customer value.

currency
string = 3 characters

Merchant's reporting currency.

amount
number <double>

Average approved payment amount in merchant's reporting currency.

amountUsd
number <double>

Average approved payment amount in USD.

paymentCount
integer

Total number of approved payments made by the customer.

lastPaymentTime
string or null <date-time>

Time and date of the customer's last approved payment.

object (CustomerLifetimeRevenue)

Customer's lifetime revenue.

currency
string = 3 characters

Merchant's reporting currency.

amount
number <double>

Revenue amount in the merchant's reporting currency.

amountUsd
number <double>

Revenue amount in USD.

invoiceCount
integer

Total number of invoices issued to the customer. This value is auto-incrementing. If this value is 0, the record relates to a lead. A lead is a customer who has not made a payment yet. If this value is greater than or equal to 1 the record relates to a customer.

Array of objects (Tag)

List of customer tags.

Array
name
required
string <= 255 characters ^[@~\-\.\w\s]+$

Unique name for the tag. Tag names are not case-sensitive.

type
required
string

Type of tag. Tags of a specific type can only be assigned to corresponding entity types. For example, you can only use customer tags on customers.

Enum: "customer" "kyc-document"
id
string <= 50 characters

ID of the tag.

createdTime
string <date-time> (CreatedTime)

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

updatedTime
string <date-time> (UpdatedTime)

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

Array of objects (SelfLink)

Related links.

revision
integer

Number of times the customer's data has been modified.

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

isEddRequired
boolean
Default: false

Specifies if Enhanced Due Diligence (EDD) is enabled for this customer. For more information, see Enhanced Due Diligence.

hasFulfilledKyc
boolean

Specifies if the customer has accepted and reviewed identity and address documents, or an accepted credit file document.

organizationId
string <= 50 characters

Unique organization identifier. An organization is an entity that represents a company. For more information, see Obtain an organization ID.

Array of objects

Related links.

Array
href
string

Link URL.

rel
string

Type of link.

Enum: "self" "attachments" "defaultPaymentInstrument" "leadSource" "website"
object

Embedded objects that are requested using the expand query string parameter.

leadSource
object
201

Customer with a specified ID created.

Response Headers
Location
string <uri>

Location of the related resource.

Example: "https://api.rebilly.com/example"
Response Schema: application/json
id
string <= 50 characters

ID of the customer.

email
string or null <email>

Customer's email address.

firstName
string or null

Customer's first name.

lastName
string or null

Customer's last name.

websiteId
string <= 50 characters

ID of the website. A website is where an organization obtains a customer. For more information, see Obtain an organization ID and website ID.

(Vaulted instrument (object or null)) or (Alternative instrument (object or null)) or (Cash (object or null)) or (Check (object or null))

Default payment instrument information.

Any of:

Vaulted payment instrument.

method
required
string

Payment method supported vault. For more information, see Payment instrument.

Enum: "payment-card" "ach" "cash" "check" "paypal" "AdvCash" "Airpay" "Alfa-click" "Alipay" "AmazonPay" … 165 more
paymentInstrumentId
required
string <= 50 characters

ID of the payment instrument.

createdTime
string <date-time> (CreatedTime)

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

updatedTime
string <date-time> (UpdatedTime)

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

customFields
object (ResourceCustomFields)
Default: {}

Use custom fields to extend a resource scheme to include custom data that is not provided as a common field. For more information, see Custom fields.

object or null

Customer's primary address.

firstName
string or null <= 45 characters ^[\w\s\-\p{L},.']+$

Contact's first name.

lastName
string or null <= 45 characters ^[\w\s\-\p{L},.']+$

Contact's last name.

organization
string or null <= 255 characters ^[\w\s\-\p{L},.'&]+$

Contact's organization.

address
string or null <= 60 characters ^[\w\s\-\/\p{L},.#;:()'&]+$

First line of the contact's street address.

address2
string or null <= 60 characters ^[\w\s\-\/\p{L},.#;:()'&]+$

Second line of the contact's street address.

city
string or null <= 45 characters ^[\w\s\-\p{L},.']+$

Contact's city of residence.

region
string or null <= 45 characters ^[\w\s\-\/\p{L},.#;:()']+$

Contact's region of residence.

country
string or null <= 2 characters ^[A-Z]{2}$

Contact's country of residence in ISO 3166 alpha-2 country code. For examples, see ISO.org.

postalCode
string or null <= 10 characters ^[\w\s\-]+$

Contact's postal code.

Array of objects (ContactPhoneNumbers)

List of phone numbers associated with the contact.

Array
label
required
string <= 45 characters

Phone number label or name.

value
required
string <= 50 characters

Phone number value.

primary
boolean

Specifies if the phone number is the contact's primary phone number.

Array of objects (ContactEmails)

List of email addresses associated with the contact.

Array
label
required
string <= 45 characters

Email label or name.

value
required
string <email> <= 255 characters

Email address value.

primary
boolean

Specifies if the email address is the contact's primary email address.

dob
string or null <date>

Contact's date of birth in ISO-8601 YYYY-MM-DD format.

jobTitle
string or null <= 255 characters ^[\w\s\-\/\p{L},.#;:()']+$

Contact's job title.

hash
string <= 40 characters

Use this value to compare contacts for identical attribute values.

object (CustomerAverageValue)

Average customer value.

currency
string = 3 characters

Merchant's reporting currency.

amount
number <double>

Average approved payment amount in merchant's reporting currency.

amountUsd
number <double>

Average approved payment amount in USD.

paymentCount
integer

Total number of approved payments made by the customer.

lastPaymentTime
string or null <date-time>

Time and date of the customer's last approved payment.

object (CustomerLifetimeRevenue)

Customer's lifetime revenue.

currency
string = 3 characters

Merchant's reporting currency.

amount
number <double>

Revenue amount in the merchant's reporting currency.

amountUsd
number <double>

Revenue amount in USD.

invoiceCount
integer

Total number of invoices issued to the customer. This value is auto-incrementing. If this value is 0, the record relates to a lead. A lead is a customer who has not made a payment yet. If this value is greater than or equal to 1 the record relates to a customer.

Array of objects (Tag)

List of customer tags.

Array
name
required
string <= 255 characters ^[@~\-\.\w\s]+$

Unique name for the tag. Tag names are not case-sensitive.

type
required
string

Type of tag. Tags of a specific type can only be assigned to corresponding entity types. For example, you can only use customer tags on customers.

Enum: "customer" "kyc-document"
id
string <= 50 characters

ID of the tag.

createdTime
string <date-time> (CreatedTime)

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

updatedTime
string <date-time> (UpdatedTime)

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

Array of objects (SelfLink)

Related links.

revision
integer

Number of times the customer's data has been modified.

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

isEddRequired
boolean
Default: false

Specifies if Enhanced Due Diligence (EDD) is enabled for this customer. For more information, see Enhanced Due Diligence.

hasFulfilledKyc
boolean

Specifies if the customer has accepted and reviewed identity and address documents, or an accepted credit file document.

organizationId
string <= 50 characters

Unique organization identifier. An organization is an entity that represents a company. For more information, see Obtain an organization ID.

Array of objects

Related links.

Array
href
string

Link URL.

rel
string

Type of link.

Enum: "self" "attachments" "defaultPaymentInstrument" "leadSource" "website"
object

Embedded objects that are requested using the expand query string parameter.

leadSource
object
401

Unauthorized access. Invalid credentials used.

403

Access forbidden.

409

Conflict.

422

Invalid data sent.

put/customers/{id}
Request samples
application/json
{
  • "websiteId": "web_0YV7DE4Z26DQSA1AC92FBJ7SEG",
  • "paymentToken": "string",
  • "defaultPaymentInstrument": {
    },
  • "customFields": {
    },
  • "primaryAddress": {
    },
  • "isEddRequired": false
}
Response samples
application/json
{
  • "id": "cus_0YV7DDSDD1C8DA64KHH2W33CPF",
  • "email": "user@example.com",
  • "firstName": "string",
  • "lastName": "string",
  • "websiteId": "web_0YV7DE4Z26DQSA1AC92FBJ7SEG",
  • "defaultPaymentInstrument": {
    },
  • "createdTime": "2019-08-24T14:15:22Z",
  • "updatedTime": "2019-08-24T14:15:22Z",
  • "customFields": {
    },
  • "primaryAddress": {
    },
  • "averageValue": {
    },
  • "paymentCount": 0,
  • "lastPaymentTime": "2019-08-24T14:15:22Z",
  • "lifetimeRevenue": {
    },
  • "invoiceCount": 0,
  • "tags": [
    ],
  • "revision": 0,
  • "isEddRequired": false,
  • "hasFulfilledKyc": true,
  • "organizationId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21",
  • "_links": [
    ],
  • "_embedded": {
    }
}