Sign inSubscribe

API Docs

Company-scoped public API for creating customers via X-Api-Key.

Authentication

  • Send the API key in header X-Api-Key.
  • The company is resolved automatically from the key (no company-id header required).
  • Keys are shown once when created. Rotate by creating a new key and revoking the old one.

Endpoints

MethodPathContent-TypeResponse
POST/api/public/customersapplication/json201 { customerId, documentIds }
POST/api/public/customersmultipart/form-data201 { customerId, documentIds }
POST/api/public/customers/ai-createmultipart/form-data200 { customerId, analysis }
POST/api/public/transactionsapplication/json200 { transactionId, externalTransactionId, participantCustomerIds, riskScore, riskLevel }

Create customer (JSON)

Required: type. Recommended: externalId.

curl -X POST "$API_BASE/api/public/customers" \
  -H "X-Api-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "crm-123",
    "type": "Individual",
    "fullName": "Jane Doe",
    "email": "jane@example.com",
    "country": "US",
    "dateOfBirth": "1990-01-01",
    "isPep": false,
    "customFieldValues": [
      { "fieldDefinitionId": "GUID", "value": "Example" }
    ]
  }'
Response 201:
{ "customerId": "GUID", "documentIds": [] }

Create customer (multipart + documents)

  • Include customer (JSON string) in the form body.
  • If you upload files, also include documentsMeta as a JSON array with the same length and order as the files.
curl -X POST "$API_BASE/api/public/customers" \
  -H "X-Api-Key: YOUR_KEY" \
  -F "customer={\"externalId\":\"crm-123\",\"type\":\"Individual\",\"fullName\":\"Jane Doe\"}" \
  -F "documentsMeta=[{\"documentTypeId\":\"GUID\",\"documentCategoryId\":null}]" \
  -F "file=@passport.jpg"
Response 201:
{ "customerId": "GUID", "documentIds": ["GUID"] }

Create customer from images (AI)

Upload 1–2 images. The API runs AI extraction and creates the customer + stores a document.

curl -X POST "$API_BASE/api/public/customers/ai-create" \
  -H "X-Api-Key: YOUR_KEY" \
  -F "files=@front.jpg" \
  -F "files=@back.jpg"

Request requirements

  • Required: type
  • If type = Business: businessName is required.
  • If type = Individual: fullName is required.
  • Recommended: externalId (lets you safely retry without duplicates).

Create customer (JSON) — full field reference

FieldTypeRequiredMeaning
externalIdstringNo (recommended)Your system ID. Used for duplicate prevention within the same company.
type"Individual" | "Business"YESCustomer type (case-insensitive).
businessNamestringYes (if Business)Business/company name (required when type = Business).
dbastringNoDoing business as name.
givenNamestringNoFirst name.
middleNamestringNoMiddle name(s).
familyNamestringNoLast name/surname.
fullNamestringYes (if Individual)Full display name (required when type = Individual).
legalNamestringNoLegal name (individual or business).
dateOfBirthYYYY-MM-DDNoDate of birth (DateOnly).
placeOfBirthstringNoPlace of birth.
nationalitystringNoNationality (free-form; often country name/ISO code).
governmentIdstringNoGovernment-issued ID number.
passportNumberstringNoPassport number.
taxIdstringNoTax identifier.
occupationstringNoOccupation (individual).
industrystringNoIndustry/sector.
addressLine1stringNoAddress line 1.
addressLine2stringNoAddress line 2.
citystringNoCity.
stateOrProvincestringNoState/Province/Region.
postalCodestringNoPostal/ZIP code.
countrystringNoCountry (free-form; often country name/ISO code).
emailstringNoEmail address.
phoneNumberstringNoPhone number (free-form).
riskRatingstringNoInitial risk rating label (free-form).
isPepbooleanNoPolitically exposed person flag (defaults to false).
customFieldValuesarrayNoArray of custom field values (see next table).

customFieldValues[] item — field reference

FieldTypeRequiredMeaning
fieldDefinitionIdGUIDYESCustom field definition ID (company-scoped).
valuestring | nullNoValue for the custom field.

documentsMeta[] item — field reference (multipart documents)

FieldTypeRequiredMeaning
documentTypeIdGUIDYESDocument type ID (company-scoped).
documentCategoryIdGUID | nullNoDocument category ID (company-scoped).
notesstringNoNotes saved with the document record.
issuingCountrystringNoIssuing country.
issuingAuthoritystringNoIssuing authority.
documentNumberstringNoDocument number.
documentIssueDateISO datetimeNoDocument issue date/time.
documentExpirationDateISO datetimeNoDocument expiration date/time.
firstNamestringNoAssociated first name for the document.
middleNamestringNoAssociated middle name(s).
lastNamestringNoAssociated last name(s).
fullNamestringNoAssociated full name.
dateOfBirthISO datetimeNoDOB associated with the document (stored as DateTime).
placeOfBirthstringNoPlace of birth associated with the document.
nationalitystringNoNationality associated with the document.
genderstringNoGender associated with the document.
alternateNamesstringNoAlternate names / aliases associated with the document.

AI create response — extracted fields

The AI endpoint returns analysis.fields where each value is a string (or null).

customerType
fullName
givenName
familyName
middleName
businessName
dba
dateOfBirth
nationality
addressLine1
addressLine2
city
stateOrProvince
postalCode
country
governmentId
passportNumber
taxId
email
phoneNumber
placeOfBirth
riskRating
gender
alternateNames
issuingCountry
issuingAuthority
documentNumber
documentIssueDate
documentExpirationDate

Public Transactions API

Ingest transactions with participant snapshots. Complii resolves/matches customers, stores the transaction + snapshot, and calculates a transaction risk summary. Screening is executed using the selected Screening Preset (or the default preset marked as "Incoming Tx Default").

curl -X POST "$API_BASE/api/public/transactions" \
  -H "X-Api-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "externalTransactionId": "CM-00012345",
    "createdAtUtc": "2025-12-16T18:20:00Z",
    "transactionType": "REMITTANCE",
    "status": "COMPLETED",
    "amount": 250.00,
    "currency": "USD",
    "screeningPresetId": "GUID (optional)",
    "originCountry": "US",
    "destinationCountry": "CO",
    "participants": [
      { "role": "SENDER", "customerType": "INDIVIDUAL", "externalCustomerId": "CM-CUST-7788", "fullName": "Carlos Mendoza", "country": "US" },
      { "role": "BENEFICIARY", "customerType": "INDIVIDUAL", "fullName": "Maria Perez", "country": "CO" }
    ]
  }'
Response 200:
{ "transactionId": "GUID", "externalTransactionId": "CM-00012345", "participantCustomerIds": ["GUID","GUID"], "riskScore": 30, "riskLevel": "Medium", "screeningRunId": "GUID", "screeningPresetIdUsed": "GUID", "screeningTotalMatches": 0, "screeningSuspectAlerts": 0, "participants": [{ "role": "SENDER", "customerId": "GUID", "universalCustomerIdentityId": "GUID", "customerStatus": "Exists", "matchMethod": "ExternalId" }] }

Transaction (top-level) — full field reference

FieldTypeRequiredMeaning
externalTransactionIdstringYESUnique transaction id from your core system (idempotency key per company).
externalSystemstringNoSource system name (e.g., "ControlMoney").
transactionReferencestringNoHuman readable reference.
createdAtUtcISO datetimeYESWhen the transaction was created in the source system.
completedAtUtcISO datetimeNoWhen the transaction completed/settled.
postedAtUtcISO datetimeNoWhen posted to ledger/core.
transactionTypestringYESREMITTANCE, TRANSFER, CASH_IN, CASH_OUT, WIRE, ACH, CARD, CRYPTO, WALLET, BILLPAY, OTHER.
directionstringNoINBOUND, OUTBOUND, INTERNAL.
statusstringYESPENDING, COMPLETED, CANCELLED, REJECTED, FAILED, REVERSED, REFUNDED.
channelstringNoONLINE, MOBILE, AGENT, BRANCH, API, BACKOFFICE.
prioritystringNoNORMAL, HIGH.
amountnumberYESTransaction amount.
currencystringYESISO 4217 currency code (e.g., USD).
feesAmountnumberNoFees amount.
feesCurrencystringNoFees currency (defaults to currency if omitted in your integration).
fxRatenumberNoFX rate if conversion was applied.
amountBasenumberNoStandardized/base amount for rules (e.g., USD).
baseCurrencystringNoBase currency code for amountBase (e.g., USD).
originCountrystringNo (recommended)ISO-3166-1 alpha-2 origin country (e.g., US).
destinationCountrystringNo (recommended)ISO-3166-1 alpha-2 destination country (e.g., CO).
originRegionstringNoOrigin state/province/region.
destinationRegionstringNoDestination state/province/region.
purposeOfTransferstringNoPurpose/narrative for compliance.
relationshipSenderBeneficiarystringNoRelationship between sender and beneficiary.
sourceOfFundsstringNoSource of funds description/category.
notesstringNoFree text notes.
fundingSourceTypestringNoCASH, BANK_ACCOUNT, CARD, WALLET, CRYPTO, OTHER.
fundingInstitutionNamestringNoFunding institution name.
fundingAccountMaskedstringNoMasked funding account identifier.
fundingAccountTypestringNoCHECKING, SAVINGS, CREDIT, DEBIT, OTHER.
payoutMethodstringNoCASH_PICKUP, BANK_DEPOSIT, WALLET, CARD, HOME_DELIVERY, OTHER.
payoutInstitutionNamestringNoPayout institution name.
payoutAccountMaskedstringNoMasked payout account identifier.
agentIdstringNoAgent id (MSB/branch ops).
agentNamestringNoAgent name.
branchIdstringNoBranch id.
branchNamestringNoBranch name.
locationIdstringNoLocation id.
locationAddressstringNoLocation address.
ipAddressstringNoIP address.
deviceFingerprintstringNoDevice fingerprint identifier.
userAgentstringNoUser agent string.
geoLatnumberNoLatitude.
geoLngnumberNoLongitude.
attachmentsarrayNoTransaction-level attachments (receipt/invoice/etc). See attachments[] table.
participantsarrayYES (min 2)Transaction participants (sender/beneficiary/etc). See participants[] table.

attachments[] item — field reference

FieldTypeRequiredMeaning
externalFileIdstringNoFile id in your storage system.
fileUrlstringNoPre-signed URL or accessible file URL.
fileNamestringNoFile name.
contentTypestringNoMIME type (e.g., image/jpeg, application/pdf).
documentTypestringNoRECEIPT, INVOICE, PROOF, etc.
notesstringNoOptional notes.

participants[] item — field reference

FieldTypeRequiredMeaning
rolestringYESSENDER, BENEFICIARY, PAYER, PAYEE, INTERMEDIARY, AUTHORIZER, etc.
isPrimarybooleanNoUseful if multiple participants of same role.
externalCustomerIdstringNoYour customer id (mapped to Complii CustomerRecord.ExternalId when matching).
compliiCustomerIdGUIDNoIf you already know the Complii customer id.
customerMatchPolicystringNoAUTO_CREATE, AUTO_MATCH, MATCH_ONLY.
customerTypestringYESINDIVIDUAL or BUSINESS.
fullNamestringYes (if INDIVIDUAL)Full name for individual participant.
givenNamestringNoGiven name.
middleNamestringNoMiddle name.
familyNamestringNoFamily/last name.
legalNamestringNoLegal name.
dateOfBirthYYYY-MM-DDNoDOB (DateOnly).
placeOfBirthstringNoPlace of birth.
genderstringNoGender.
nationalityCountrystringNoNationality (often ISO code).
emailstringNoEmail address.
phonestringNoPhone number.
businessLegalNamestringYes (if BUSINESS)Legal business name for business participant.
dbaNamestringNoDBA name.
registrationNumberstringNoRegistration number (NIT/EIN/etc).
registrationCountrystringNoRegistration country.
incorporationDateYYYY-MM-DDNoIncorporation date.
businessTypestringNoBusiness type/category.
addressLine1stringNoAddress line 1.
addressLine2stringNoAddress line 2.
citystringNoCity.
statestringNoState/province/region.
postalCodestringNoPostal code.
countrystringNoCountry.
occupationstringNoOccupation.
employerNamestringNoEmployer name.
sourceOfWealthstringNoSource of wealth.
pepDeclarationbooleanNoPEP declaration.
expectedMonthlyVolumenumberNoExpected monthly volume.
expectedMonthlyCountintNoExpected monthly transaction count.
identificationDocumentsarrayNoIdentity documents metadata (see participant document table).
businessDocumentsarrayNoBusiness documents metadata (see participant document table).
filesarrayNoAdditional files metadata (see participant document table).

participant documents (identificationDocuments[] / businessDocuments[] / files[]) — field reference

FieldTypeRequiredMeaning
documentTypestringYES (if object exists)PASSPORT, NATIONAL_ID, CERT_OF_INCORPORATION, etc.
documentNumberstringNoDocument number/identifier.
issuingCountrystringNoIssuing country.
issueDateUtcISO datetimeNoIssue date/time.
expirationDateUtcISO datetimeNoExpiration date/time.
isPrimarybooleanNoPrimary document flag.
fileTypestringNoID_FRONT, ID_BACK, SELFIE, PROOF_OF_ADDRESS, SOURCE_OF_FUNDS, OTHER.
externalFileIdstringNoFile id in your storage system.
fileUrlstringNoPre-signed URL or accessible file URL.
fileNamestringNoFile name.
contentTypestringNoMIME type.
notesstringNoOptional notes.