Customers

Retrieves a customer by id, including the submitted onboarding body (company or individual). Person associates are inlined under company.associates; business-registration associates remain accessible via GET /platform/v2/customers/{customerId}/associates/{associateId}.

get/platform/v2/customers/{id}

Request

Path parameters

idstring uuid required
Example:0a184641-30e2-4414-871f-3db1c683900e

Customer id.

Response

Customer details

idstring uuid
referencestring
status'AGREEMENTS_PENDING' | 'INFO_REQUIRED' | 'PENDING' | 'ACTIONS_REQUIRED' | 'VERIFIED' | 'REJECTED' | 'TERMINATED'

Customer onboarding status:

  • AGREEMENTS_PENDING: The customer was created through pre-customer agreements and the agreements are not yet signed.

  • INFO_REQUIRED: Customer data, documents, or agreements are still missing. Check requiredActions.

  • PENDING: All information is submitted and the customer is under review.

  • ACTIONS_REQUIRED: Additional information is requested during or after review. Check requiredActions.

  • VERIFIED: The customer is verified.

  • REJECTED: The customer failed verification.

  • TERMINATED: The customer was offboarded.

type'COMPANY' | 'INDIVIDUAL'
model'EMBEDDED' | 'RELIANCE'

The onboarding model of the customer. EMBEDDED indicates BVNK-Managed onboarding, where BVNK performs identity verification. RELIANCE indicates Partner-Managed onboarding, where you perform identity verification.

useCase'FIAT' | 'CRYPTO' | 'STABLECOIN_PAYOUTS' | 'EMBEDDED_STABLECOIN_WALLETS' | 'EMBEDDED_FIAT_ACCOUNTS'
namestring
createdAtstring date-time
updatedAtstring date-time
verificationLinkstring uri

Identity verification (KYC) link. Returned for individual customers onboarded with the BVNK-Managed model. Send it to your customer so they can complete identity verification. The link doesn't expire: it stays active and is refreshed automatically.

Example response

{
  "status": "PENDING",
  "verificationLink": "https://verify.bvnk.com/customer/a7227e72-3479-4836-98c3-19ba58d14d44",
  "requiredActions": [
    {
      "status": "REQUIRED",
      "target": {
        "kind": "AGREEMENT",
        "assignedAgreementId": "a3c1f9d2-84b7-4e1a-9f6c-2d8e5b7a4c01",
        "urn": "bvnk:agreements:terms-of-service",
        "version": "2.1",
        "title": "Terms of Service",
        "locale": "en"
      }
    }
  ],
  "company": {
    "name": "Krause Fintech GmbH",
    "entityType": "CORPORATION",
    "taxIdentification": {
      "number": "21/815/08150",
      "taxResidenceCountryCode": "DE"
    },
    "registrationNumber": "HRB 123456",
    "businessProfile": {
      "description": "German fintech company specializing in payment solutions and financial software",
      "naicsCode": "5411",
      "monthlyExpectedVolumes": "FROM_100K_TO_1M",
      "website": "https://www.krause-fintech.de",
      "websiteExplanation": "Trades only through a mobile app and has no public website.",
      "isRegulated": true,
      "regulatorInformation": {
        "regulatorName": "BaFin",
        "regulatorJurisdiction": "DE",
        "regulatorRegisterNumber": "108060"
      },
      "publicInformation": {
        "listedExchange": "NYSE",
        "tickerSymbol": "ACME"
      },
      "sourceOfFunds": "COMMERCIAL_ACTIVITIES",
      "intendedUseOfAccount": "SUPPLIER_VENDOR_PAYMENTS"
    },
    "address": {
      "addressLine1": "Heidestrasse 19",
      "city": "Koeln",
      "postalCode": "51247",
      "stateCode": "NY",
      "countryCode": "DE"
    },
    "operationalAddress": {
      "addressLine1": "Heidestrasse 19",
      "city": "Koeln",
      "postalCode": "51247",
      "stateCode": "NY",
      "countryCode": "DE"
    },
    "incorporationDate": "2019-01-15",
    "associates": [
      {
        "person": {
          "firstName": "Freya",
          "lastName": "Krause",
          "dateOfBirth": "1982-03-24",
          "nationality": "DE",
          "birthCountryCode": "DE",
          "address": {
            "addressLine1": "Heidestrasse 19",
            "city": "Koeln",
            "postalCode": "51247",
            "stateCode": "NY",
            "countryCode": "DE"
          },
          "contactInfo": {
            "emailAddress": "freya.krause@krause-fintech.de",
            "phoneNumber": "+4915112345678"
          },
          "taxIdentification": {
            "number": "21/815/08150",
            "taxResidenceCountryCode": "DE"
          },
          "position": "Geschaeftsfuehrer",
          "estimatedYearlyIncome": "INCOME_100K_TO_250K",
          "reliance": {
            "identityDocumentMetadata": {
              "type": "PASSPORT",
              "number": "C01X00T47",
              "issueDate": "2021-03-01",
              "expiryDate": "2031-02-28",
              "issuingCountryCode": "DE",
              "kycTimestamp": "2026-04-20T09:15:00Z"
            },
            "biometricLiveness": {
              "livenessTimestamp": "2026-04-20T09:16:30Z"
            },
            "addressVerification": {
              "type": "NON_DOC"
            },
            "attestation": {
              "riskScore": "LOW"
            }
          }
        },
        "ownership": {
          "percentage": "100",
          "type": "DIRECT"
        }
      }
    ],
    "cdd": {
      "intendedUseOfAccount": "SUPPLIER_VENDOR_PAYMENTS",
      "pepStatus": "NOT_PEP",
      "expectedMonthlyVolume": {
        "amount": 10000,
        "currency": "EUR"
      }
    },
    "reliance": {
      "attestation": {
        "riskScore": "LOW"
      }
    }
  },
  "individual": {
    "firstName": "Jane",
    "lastName": "Mueller",
    "emailAddress": "jane.mueller@example.com",
    "phoneNumber": "+49301234567",
    "dateOfBirth": "1990-06-15",
    "placeOfBirth": "Berlin",
    "birthCountryCode": "DE",
    "nationality": "DE",
    "documentNumber": "C01X00T47",
    "documentInfo": {
      "number": "C01X00T47",
      "type": "PASSPORT",
      "issuingCountryCode": "DE"
    },
    "address": {
      "addressLine1": "Heidestrasse 19",
      "city": "Koeln",
      "postalCode": "51247",
      "stateCode": "NY",
      "countryCode": "DE"
    },
    "taxIdentification": {
      "number": "21/815/08150",
      "taxResidenceCountryCode": "DE"
    },
    "cdd": {
      "employmentStatus": "SALARIED",
      "sourceOfFunds": "SALARY",
      "pepStatus": "NOT_PEP",
      "intendedUseOfAccount": "GOODS_SERVICES",
      "expectedMonthlyVolume": {
        "amount": 10000,
        "currency": "EUR"
      },
      "estimatedYearlyIncome": "INCOME_50K_TO_100K",
      "employmentIndustrySector": "INFORMATION"
    },
    "reliance": {
      "identityDocumentMetadata": {
        "type": "PASSPORT",
        "number": "C01X00T47",
        "issueDate": "2021-03-01",
        "expiryDate": "2031-02-28",
        "issuingCountryCode": "DE",
        "kycTimestamp": "2026-04-20T09:15:00Z"
      },
      "biometricLiveness": {
        "livenessTimestamp": "2026-04-20T09:16:30Z"
      },
      "addressVerification": {
        "type": "NON_DOC"
      },
      "attestation": {
        "riskScore": "LOW"
      }
    }
  }
}

Changes

    • breaking

      the response property //// became optional for the status

    • breaking

      the ////// response property's maxLength was increased from 6 to 36 for the response status

    • breaking

      the /// response's property type changed from object to no type for status

    • breaking

      the ////// response's property type changed from string to no type for status

    • breaking

      removed the required property //// from the response with the status

    • breaking

      removed the required property //// from the response with the status

    • breaking

      removed the required property / from the response with the status

    • warning

      removed the optional property ////// from the response with the status

    • warning

      removed the optional property ////// from the response with the status

    • warning

      removed the optional property ////// from the response with the status

    • warning

      removed the optional property ////// from the response with the status

    • warning

      removed the optional property ////// from the response with the status

    • warning

      added the new AGREEMENTS_PENDING enum value to the response property for the response status

    • warning

      added the new BUSINESS_OWNER enum value to the //// response property for the response status

    • warning

      added the new EMBEDDED enum value to the response property for the response status

    • warning

      added the new GAMBLING enum value to the ////// response property for the response status

    • warning

      added the new GIFT enum value to the ////// response property for the response status

    • warning

      added the new NOT_PROVIDED enum value to the ////// response property for the response status

    • warning

      added the new PENSION enum value to the ////// response property for the response status

    • warning

      added the new REAL_ESTATE enum value to the ////// response property for the response status

    • warning

      added the new RELIANCE enum value to the response property for the response status

    • warning

      added the new SALARY enum value to the ////// response property for the response status

    • warning

      added the new SAVINGS enum value to the ////// response property for the response status

    • warning

      added the new SELF_EMPLOYMENT enum value to the ////// response property for the response status

    • warning

      added the new STUDENT enum value to the ////// response property for the response status

    • warning

      added the new STUDENT_LOAN_GRANT enum value to the ////// response property for the response status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property ////// to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property ////// to the response with the status

    • info

      added the optional property ////// to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added subschema #2 to the ////// response property allOf list for the response status

    • info

      added subschema #2 to the /// response property allOf list for the response status

    • info

      the response property / became required for the status

    • info

      the response property //// became required for the status

    • info

      the response property //// became required for the status

    • info

      the response property //// became required for the status

    • info

      the response property / became required for the status

    • info

      the response property / became required for the status

    • info

      the response property / became required for the status

    • info

      the response property / became required for the status

    • info

      the response property / became required for the status

    • info

      the response property / became required for the status

    • info

      removed the ABOVE_10M enum value from the ////// response property for the response status

    • info

      removed the CHARITY enum value from the / response property for the response status

    • info

      removed the CUSTOMER_VIRTUAL_ACCOUNTS enum value from the response property for the response status

    • info

      removed the DOUBLE_EMBEDDED enum value from the response property for the response status

    • info

      removed the EMBEDDED_BVNK_MANAGED enum value from the response property for the response status

    • info

      removed the EMBEDDED_SELF_MANAGED enum value from the response property for the response status

    • info

      removed the FROM_0_TO_10K enum value from the ////// response property for the response status

    • info

      removed the FROM_100K_TO_1M enum value from the ////// response property for the response status

    • info

      removed the FROM_10K_TO_50K enum value from the ////// response property for the response status

    • info

      removed the FROM_1M_TO_10M enum value from the ////// response property for the response status

    • info

      removed the FROM_50K_TO_100K enum value from the ////// response property for the response status

    • info

      removed the NON_PROFIT_ORGANIZATION enum value from the / response property for the response status

    • info

      removed the PRIVATE_FOUNDATION enum value from the / response property for the response status

    • info

      removed the PUBLIC_AGENCIES_OR_AUTHORITIES enum value from the / response property for the response status

    • info

      the ////// response's property pattern ^\d+$ was removed for the status

    • info

      endpoint added