# KYC request fulfilled

Endpoint: POST kyc-request-fulfilled
Version: latest
Security: SecretApiKey, JWT

## Request fields (application/json):

  - `customerId` (string)
    ID of the customer resource.

  - `kycRequestId` (string)
    ID of the KYC request.
    Example: "kyc_req_0YV7JMJ3DBCGRBR7K9D4HVGPP5"

  - `eventType` (string)
    Type of event that triggered the webhook.
    Enum: "kyc-request-attempted", "kyc-request-failed", "kyc-request-fulfilled", "kyc-request-partially-fulfilled"

  - `_embedded` (object)
    Embedded objects related to the KYC request event.

  - `_embedded.customer` (object)
    Customer information.

  - `_embedded.customer.websiteId` (string)
    ID of the website.
A website is where an organization obtains a customer.
For more information, see [Obtain an organization ID and website ID](https://www.rebilly.com/docs/settings/organizations-and-websites/#obtain-your-organization-id-and-website-id).
    Example: "web_0YV7DE4Z26DQSA1AC92FBJ7SEG"

  - `_embedded.customer.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.

  - `_embedded.customer.defaultPaymentInstrument` (object,null) — one of:
    - Vaulted payment instrument:
      - `method` (string, required)
        Payment method supported vault.
For more information, see [Payment instrument](https://www.rebilly.com/catalog/all/payment-instruments).
        Enum: "payment-card", "ach", "paypal"
      - `paymentInstrumentId` (string, required)
        ID of the payment instrument.
        Example: "inst_0YVB8KPKNXCBR9EDX7JHSED75N"
    - Alternative instrument:
      - `method` (string, required)
        Payment method.
        Enum: "payment-card", "ach", "cash", "check", "paypal", "AdvCash", "Aera", "Affirm", "Afterpay", "Aircash", "Airpay", "Alfa-click", "Alipay", "AmazonPay", "Apple Pay", "AstroPay Card", "AstroPay-GO", "BankSEND", "BankReferenced", "bank-transfer", "bank-transfer-2", "bank-transfer-3", "bank-transfer-4", "bank-transfer-5", "bank-transfer-6", "bank-transfer-7", "bank-transfer-8", "bank-transfer-9", "Baloto", "Beeline", "Belfius-direct-net", "bitcoin", "Bizum", "Blik", "Boleto", "Boleto-2", "Boleto-3", "cash-deposit", "CASHlib", "CashToCode", "CCAvenue", "China UnionPay", "Clearpay", "Cleo", "CODVoucher", "Conekta-oxxo", "Conekta-spei", "cryptocurrency", "Cupon-de-pagos", "CyberSource", "Dimoco-pay-smart", "Directa24Card", "domestic-cards", "Efecty", "echeck", "ecoPayz", "ecoPayzTurkey", "ecoVoucher", "EPS", "ePay.bg", "Ethereum", "e-wallet", "ezyEFT", "eZeeWallet", "FasterPay", "Flexepin", "Giropay", "Google Pay", "Gpaysafe", "iCashOne Voucher", "iDebit", "iDEAL", "ING-homepay", "INOVAPAY-pin", "INOVAPAY-wallet", "InstaDebit", "InstantPayments", "instant-bank-transfer", "Interac-online", "Interac-eTransfer", "Interac-express-connect", "Interac", "invoice", "iWallet", "Jeton", "JetonCash", "jpay", "KakaoPay", "Khelocard", "Klarna", "KNOT", "Litecoin", "loonie", "LPG-online", "LPG-payment-card", "Matrix", "MaxiCash", "Megafon", "MercadoPago", "MiFinity-eWallet", "miscellaneous", "MobilePay", "Mollie", "Multibanco", "Bancontact", "Bancontact-mobile", "MTS", "MuchBetter", "MuchBetterVoucher", "MyFatoorah", "Neosurf", "Netbanking", "Neteller", "Nordea-Solo", "NordikCoin", "OchaPay", "online-bank-transfer", "Onlineueberweisen", "oriental-wallet", "OXXO", "P24", "Pagadito", "PagoEffectivo", "Pagsmile-lottery", "Pagsmile-deposit-express", "PayCash", "Payco", "Payeer", "PaymentAsia-crypto", "Paysafecard", "PayTabs", "Pay4Fun", "Paynote", "Paymero", "Paymero-QR", "PayU", "PayULatam", "Perfect-money", "Piastrix", "PIX", "PinPay", "phone", "PhonePe", "POLi", "PostFinance-card", "PostFinance-e-finance", "QIWI", "QPay", "QQPay", "Quickpay", "rapyd-checkout", "rebilly-hosted-payment-form", "Resurs", "reverse-withdrawal", "Ripple", "SafetyPay", "Samsung Pay", "SEPA", "Siirto", "Skrill", "Skrill Rapid Transfer", "SMSVoucher", "Sofort", "SparkPay", "SPEI", "swift-dbt", "Tele2", "Telr", "Terminaly-RF", "Tether", "ToditoCash-card", "Trustly", "Tupay", "TWINT", "UniCrypt", "UPayCard", "UPI", "USD-coin", "VCreditos", "VegaWallet", "VenusPoint", "Viva", "voucher", "voucher-2", "voucher-3", "voucher-4", "Wallet88", "Webmoney", "Webpay", "Webpay-2", "Webpay Card", "WeChat Pay", "XPay-P2P", "XPay-QR", "Yandex-money", "Zotapay", "Zimpler", "Zip"
      - `paymentInstrumentId` (string)
        ID of the payment instrument.
        Example: "inst_0YVB8KPKNXCBR9EDX7JHSED75N"
      - `reference` (string,null)
        Reference data.
This field is available only for the bank-transfer payment method.
    - Cash:
      - `method` (string, required)
        Enum: "cash"
      - `receivedBy` (string)
        Individual or entity that received the payment.
    - Check:
      - `method` (string, required)
        Enum: "check"
      - `reference` (string)
        Reference data.

  - `_embedded.customer.preferredPayoutInstrumentId` (string,null)
    ID of the customer's preferred payment instrument for payouts.
    Example: "inst_0YVB8KPKNXCBR9EDX7JHSED75N"

  - `_embedded.customer.customFields` (object)
    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](https://www.rebilly.com/catalog/all/custom-fields).

  - `_embedded.customer.primaryAddress` (any)
    Customer's primary address.
    - `firstName` (string,null)
      Contact's first name.
      Example: "Benjamin"
    - `lastName` (string,null)
      Contact's last name.
      Example: "Franklin"
    - `organization` (string,null)
      Contact's organization.
      Example: "Rebilly"
    - `address` (string,null)
      First line of the contact's street address.
      Example: "36 Craven St"
    - `address2` (string,null)
      Second line of the contact's street address.
    - `city` (string,null)
      Contact's city of residence.
      Example: "Austin"
    - `region` (string,null)
      Contact's region of residence.
      Example: "Texas"
    - `country` (string,null)
      Contact's country of residence in ISO 3166 alpha-2 country code.
For examples, see [ISO.org](https://www.iso.org/obp/ui/#search/code/).
      Example: "GB"
    - `postalCode` (string,null)
      Contact's postal code.
      Example: "WC2N 5NF"
    - `phoneNumbers` (array)
      List of phone numbers associated with the contact.
    - `phoneNumbers.label` (string, required)
      Phone number label or name.
      Example: "main"
    - `phoneNumbers.value` (string, required)
      Phone number value.
      Example: "1-512-777-0269"
    - `phoneNumbers.primary` (boolean)
      Specifies if the phone number is the contact's primary phone number.
      Example: true
    - `emails` (array)
      List of email addresses associated with the contact.
    - `emails.label` (string, required)
      Email label or name.
      Example: "main"
    - `emails.value` (string, required)
      Email address value.
      Example: "rebilly@example.com"
    - `emails.primary` (boolean)
      Specifies if the email address is the contact's primary email address.
      Example: true
    - `dob` (string,null)
      Contact's date of birth in ISO-8601 YYYY-MM-DD format.
      Example: "1980-04-01"
    - `jobTitle` (string,null)
      Contact's job title.
      Example: "CEO"

  - `_embedded.customer.locale` (string,null)
    Language locale identifier in [RFC 5646](https://tools.ietf.org/html/rfc5646) format.
    Example: "fr-FR"

  - `_embedded.customer.taxNumbers` (array,null)
    Tax numbers of the customer.

  - `_embedded.customer.taxNumbers.type` (string, required)
    Type of the tax number.
    Enum: "eu-vat", "other"

  - `_embedded.customer.taxNumbers.value` (string, required)
    Value of the tax number.
    Example: "GB980780684"

  - `_embedded.customer.taxNumbers.isDefault` (boolean)
    Determines if the tax number is selected as default to display on invoices.
    Example: true

  - `_embedded.customer.leadSource` (object)
    Lead source information.

  - `_embedded.customer.leadSource.medium` (string,null)
    Category of the lead source traffic.
For example, the medium could be organic search, Google ads, Display ads, and so on.

  - `_embedded.customer.leadSource.source` (string,null)
    Domain, platform, or channel from which the lead source originates.

  - `_embedded.customer.leadSource.campaign` (string,null)
    Campaign name of the lead source.

  - `_embedded.customer.leadSource.term` (string,null)
    Term associated with a lead source.

  - `_embedded.customer.leadSource.content` (string,null)
    Content contained in the lead source content.
For example, content could be graphics, video, and so on.

  - `_embedded.customer.leadSource.affiliate` (string,null)
    Individual or entity that is affiliated with the lead source.

  - `_embedded.customer.leadSource.subAffiliate` (string,null)
    Individual or entity that is associated with a lead source affiliate.
In other products, this field may also be referred to as sub ID or click ID in some.

  - `_embedded.customer.leadSource.salesAgent` (string,null)
    Name of the sales agent associated with the lead source.

  - `_embedded.customer.leadSource.clickId` (string,null)
    ID of the lead source click.
This value is passed in the ad click URL for tracking and campaign attribution.

  - `_embedded.customer.leadSource.path` (string,null)
    URL from which the lead source originates.

  - `_embedded.customer.leadSource.referrer` (string,null)
    Lead source [referrer URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer).
    Example: "https://www.rebilly.com"

  - `_embedded.customer.personId` (string,null)
    ID of the associated person.
    Example: "prs_0YV7DDSDD1C8DA64KHH2W33CPF"

  - `_embedded.customer.notificationEmails` (array)
    Additional email addresses for notification delivery.

  - `_embedded.kycRequest` (object)
    KYC request information.

  - `_embedded.kycRequest.customerId` (string, required)
    ID of the customer resource.

  - `_embedded.kycRequest.documents` (array, required)
    Documents to request from the customer.

  - `_embedded.kycRequest.documents.type` (string, required)
    Type of document to request from the customer.
    Enum: "identity-proof", "address-proof", "funds-proof", "purchase-proof", "credit-file-proof"

  - `_embedded.kycRequest.documents.subtypes` (array,null)
    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", "inheritance-documentation", "tax-return", "salary-slip", "sale-of-assets", "public-health-card", "proof-of-age-card", "reverse-of-id", "public-service", "ewallet-holder-details", "ewallet-transaction-statement", "marriage-certificate", "firearms-license", "insurance-letter", "income-statement", "debtors-letter", "other", null

  - `_embedded.kycRequest.documents.maxAttempts` (integer)
    Total number of allowed document upload attempts.
Use 0 to allow unlimited upload attempts.

  - `_embedded.kycRequest.documents.faceProofRequired` (boolean)
    Specifies if the customer must upload a photo of their face (selfie) that matches a provided KYC document.

  - `_embedded.kycRequest.documents.faceLivenessRequired` (boolean)
    Specifies if the customer must use the face liveness feature when uploading a selfie.
For more information, see [Facial recognition and identity verification](https://www.rebilly.com/docs/kyc-and-aml/kyc#facial-recognition-identity-verification).

  - `_embedded.kycRequest.redirectUrl` (string,null)
    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.

  - `_embedded.kycRequest.reason` (string,null)
    Reason for uploading.
    Example: "spend limit"

  - `_embedded.kycRequest.matchLevel` (integer)
    Document verification level.
    Enum: 1, 2, 3

  - `_embedded.kycRequest.expirationTime` (string)
    Date and time when the request expires.
The default value is one hour in the future.

  - `_links` (array)
    Links to related resources.

  - `_links.href` (string)
    URL of the link.

  - `_links.rel` (string)
    Relationship type of the link.
    Enum: "customer", "kycRequest"


## Response 2xx fields
