Erebor USD virtual account endorsement

Request and complete the usd_bank_erebor_v1 endorsement for eligible individual USD virtual-account routes.

Request and complete the usd_bank_erebor_v1 endorsement when the account’s USD virtual-account channel requires the Erebor route for an individual.

Prerequisites

  1. Complete onboarding for the individual account.
  2. Retrieve the account’s available channels with GET /v1/channels and confirm that its country and permissions allow the Erebor USD virtual-account route.
  3. Confirm that the individual’s residency is one of the eligible residencies: US, GB, KY, PA, BR, AR, ES, PL, FR, IT, or PT.
  4. Store the Due account ID and use it in the Due-Account-Id header.

Confirm the available route

Channel permissions and country configuration determine whether the Erebor route is available. Do not select it based only on the applicant’s residency.

curl "https://api.due.network/v1/channels" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Due-Account-Id: <ACCOUNT_ID>"

Request this endorsement only when the returned channel configuration requires usd_bank_erebor_v1.

Request the endorsement

Request the Erebor USD virtual-account endorsement for the account.

POST /v1/kyc/endorsements/usd_bank_erebor_v1
curl --request POST \
  --url https://api.due.network/v1/kyc/endorsements/usd_bank_erebor_v1 \
  --header 'Authorization: Bearer <API_KEY>' \
  --header 'Due-Account-Id: <ACCOUNT_ID>'

The endorsement configuration references usd_bank_erebor_ubo_v1. If the returned submission requires related UBOs, complete the requirements returned for each related applicant.

The endorsement response returns requirements for the individual submission. Use submission.requirements as the source of truth for the fields, agreements, and questionnaires you must complete.

[
  {
    "if": {
      "info": [{ "key": "residenceCountry", "type": "string", "oneOf": ["US"] }],
      "kind": "static"
    },
    "kind": "conditional",
    "then": {
      "info": [{ "key": "ssn", "type": "string" }],
      "kind": "static"
    }
  },
  {
    "info": [
      { "key": "nationality", "type": "iso3166_1_alpha2" },
      { "key": "phone", "type": "e164" },
      { "key": "email", "type": "email" },
      {
        "key": "address",
        "type": "object",
        "fields": [
          { "key": "country", "type": "iso3166_1_alpha2" },
          { "key": "postCode", "type": "swift_x" },
          { "key": "town", "type": "swift_x" },
          { "key": "street", "type": "swift_x" },
          { "key": "state", "type": "iso3166_2" }
        ]
      }
    ],
    "kind": "static",
    "agreements": [
      {
        "consentText": "I consent to sign electronically and agree this e-signature is legally binding.",
        "documentSetId": "ds_RirCkN88vbWPLlGX"
      },
      {
        "consentText": "By checking the box and clicking \"Submit,\" you acknowledge that you have received, reviewed, and agree to be bound by the terms of the Erebor Bank, N.A. deposit account relationship agreement and related disclosures, which together form your agreement with Erebor Bank, N.A.\nYou also certify that all information you have provided is true, accurate, and complete, and you authorize Erebor Bank, N.A. to verify your identity and obtain information about you from third parties as permitted by law.",
        "documentSetId": "ds_RinPm0BIL4fM3t5Y"
      }
    ]
  },
  {
    "kind": "static",
    "questionnaires": [
      {
        "questions": [
          {
            "id": "employment_status",
            "title": "What is your employment status?",
            "schema": {
              "type": "choice",
              "options": [
                { "id": "full_time", "label": "Full-time" },
                { "id": "part_time", "label": "Part-time" },
                { "id": "unemployed", "label": "Unemployed" }
              ]
            },
            "requiredWhen": null
          },
          {
            "id": "annual_income",
            "title": "What is your annual income (in USD)?",
            "schema": { "type": "number" },
            "requiredWhen": null
          }
        ],
        "templateId": "ereborBankQs"
      }
    ]
  }
]

Complete the individual submission

Use the submission returned by the endorsement as the source of truth for the account’s requirements.

  1. Provide the required individual information.
  2. Answer the ereborBankQs questionnaire.
  3. Accept each agreement returned in the submission.
  4. Complete the submission.

Provide required information

FieldTypeRequirement
residenceCountrystringProvide US when the individual resides in the United States; this makes ssn required.
nationalityiso3166_1_alpha2Required.
phonee164Required.
emailemailRequired.
address.countryiso3166_1_alpha2Required residential-address country.
address.postCodeswift_xRequired postal code.
address.townswift_xRequired town or city.
address.streetswift_xRequired street address.
address.stateiso3166_2Required state or region.
ssnstringRequired when residenceCountry is US.

Answer the questionnaire

The ereborBankQs questionnaire includes the following questions:

Question IDQuestionTypeAccepted values or format
employment_statusEmployment statuschoicefull_time, part_time, or unemployed
annual_incomeAnnual incomenumberAnnual income in USD

Accept the agreements

Accept the electronic-signature consent agreement and the Erebor deposit-account agreement with its related disclosures when they are returned in the submission.

To record acceptance through the API, send the accepted document set ID and the individual’s IP address:

POST /v1/kyc/submissions/:submissionId/agreements
{
  "documentSetId": "ds_RigHEU1FycK2vgA5",
  "ipAddress": "10.10.10.10"
}

Submit one request for each agreement the submission requires. Use the documentSetId returned in submission.requirements[].agreements, and replace :submissionId with the submission ID returned by the endorsement.

Alternatively, render each returned agreement’s consentText and document links in your application, then collect the individual’s acceptance before submitting it through this endpoint.

Submit and track approval

Complete the submission using the standard KYC submission flow. See Individual KYC process for the endpoints and request formats to provide information, answer questionnaires, accept agreements, and complete a submission.

Subscribe to endorsement.status_changed and create the USD virtual account only after usd_bank_erebor_v1 is approved.

{
  "events": ["endorsement.status_changed"]
}

Retrieve the latest endorsement status when needed:

GET /v1/kyc/endorsements/usd_bank_erebor_v1

Did this page help you?