Skip to content

Apply for platform cards ​

Submit a card application before issuing cards. Individual applicants complete KYC; companies complete KYB and verification for their beneficial owners. An approved identity can receive additional cards without repeating verification.

These operations use platform user authentication. To onboard your own customers as a partner, use partner onboarding.

Individual application ​

Individual applications collect personal identity information and submit it to Agio for KYC/AML review.

Submit an application ​

graphql
mutation CreateCardApplication($input: CreateCardApplicationInput!) {
  createCardApplication(input: $input) {
    success
    applicantId
    cardApplicationId
    cardApplicationExternalId
    applicationStatus
    applicationCompletionUrl
    shareToken
    error
  }
}
json
{
  "input": {
    "walletAddress": "0x1234...abcd",
    "occupation": "Software Developers",
    "annualSalary": "100000_TO_150000",
    "accountPurpose": "PERSONAL_SPENDING",
    "expectedMonthlyVolume": "1000_TO_5000",
    "isTermsOfServiceAccepted": true,
    "cardNickname": "My Card",
    "requestedLimitAmount": 25000,
    "requestedLimitFrequency": "30 day"
  }
}

Input fields ​

FieldTypeDescription
walletAddressString!EVM wallet address (0x...). Required for this platform operation.
occupationString!SOC code ("15-1252") or description ("Software Developers") — see Occupation Codes
annualSalaryString!Salary range (e.g., "100000_TO_150000")
accountPurposeString!Purpose of the account (e.g., "PERSONAL_SPENDING", "BUSINESS_EXPENSES")
expectedMonthlyVolumeString!Expected monthly volume range (e.g., "1000_TO_5000")
isTermsOfServiceAcceptedBoolean!Must be true to proceed
cardNicknameStringOptional display name for the first card
requestedLimitAmountIntDesired credit limit in dollars (e.g., 25000)
requestedLimitFrequencyStringLimit period (e.g., "30 day", "7 day")
sessionIdStringSession ID from generateEncryptionKeys (required if setting PIN at application)
encryptedPinStringPre-encrypted PIN to stage for the first card

Response ​

FieldTypeDescription
successBooleanWhether the application was accepted by the issuer
applicantIdStringCard user UUID
cardApplicationIdIntNumeric application ID. Pass this to createCard once the application is approved
cardApplicationExternalIdStringIssuer-side application UUID
applicationStatusStringUPPERCASE status string — e.g. PENDING, APPROVED, NEEDSVERIFICATION, DENIED. See Application Status Values
applicationCompletionUrlStringSigned URL for the hosted verification page. Open it exactly as returned — see Hosted verification links
shareTokenStringVerification share token, when the share-token flow is enabled
walletAddressStringThe collateral wallet for this application — echoes the supplied wallet address
errorStringHuman-readable failure reason (when success is false)
errorCodeStringMachine-readable failure code (when success is false) — pair with error for handling

If the response includes an applicationCompletionUrl, redirect the user to that URL to complete additional verification steps (e.g., document upload, selfie).

The hosted verification page is reached through a signed URL. The signature authorizes the session, and the page rejects a request that arrives without it.

Two rules follow:

  1. Open the URL exactly as Agio returns it. Do not rebuild it from its parts, drop query parameters, or re-encode it.
  2. Never construct the URL yourself from a card user id. A hand-built link carries no signature and will fail.

Corporate application ​

Corporate applications onboard a company and its beneficial owners. The process triggers KYB for the company entity and individual KYC for each Ultimate Beneficial Owner (UBO).

Submit a corporate application ​

graphql
mutation CreateCardCorporateApplication($input: CreateCardCorporateApplicationInput!) {
  createCardCorporateApplication(input: $input) {
    success
    companyId
    name
    applicationStatus
    error
  }
}
json
{
  "input": {
    "name": "Acme Corp",
    "address": {
      "line1": "123 Business Ave",
      "city": "Miami",
      "region": "FL",
      "postalCode": "33101",
      "countryCode": "US"
    },
    "entity": {
      "name": "Acme Corporation",
      "description": "Software development",
      "industry": "541512",
      "registrationNumber": "12345678",
      "taxId": "12-3456789",
      "website": "https://acme.com",
      "type": "LLC",
      "expectedSpend": "10000_TO_50000"
    },
    "initialUser": {
      "firstName": "John",
      "lastName": "Doe",
      "birthDate": "1980-01-15",
      "nationalId": "123456789",
      "countryOfIssue": "US",
      "email": "[email protected]",
      "address": {
        "line1": "123 Main St",
        "city": "Miami",
        "region": "FL",
        "postalCode": "33101",
        "countryCode": "US"
      },
      "isTermsOfServiceAccepted": true,
      "walletAddress": "0x1234...abcd"
    },
    "representatives": [
      {
        "firstName": "Jane",
        "lastName": "Smith",
        "birthDate": "1985-06-20",
        "nationalId": "987654321",
        "countryOfIssue": "US",
        "email": "[email protected]",
        "address": {
          "line1": "456 Oak Ave",
          "city": "Miami",
          "region": "FL",
          "postalCode": "33101",
          "countryCode": "US"
        }
      }
    ],
    "ultimateBeneficialOwners": [
      {
        "firstName": "John",
        "lastName": "Doe",
        "birthDate": "1980-01-15",
        "nationalId": "123456789",
        "countryOfIssue": "US",
        "email": "[email protected]",
        "address": {
          "line1": "123 Main St",
          "city": "Miami",
          "region": "FL",
          "postalCode": "33101",
          "countryCode": "US"
        }
      }
    ],
    "sourceKey": "your-app-key"
  }
}

Key corporate fields ​

SectionFieldsNotes
Entityname, description, industry (NAICS), registrationNumber, taxId, website, type, expectedSpendwebsite is required by Agio Card API
Initial UserPersonal details + walletAddress + isTermsOfServiceAcceptedFirst user/admin of the company
RepresentativesArray of persons authorized to act on behalf of the companyAt least one required
UBOsArray of persons with 25%+ ownershipEach triggers individual KYC

After corporate approval, add users to the company, then issue cards to each user.

Application status values ​

applicationStatus is returned as an UPPERCASE string. The canonical set:

StatusDescriptionAction
APPROVED / ACTIVEVerified. Cards can be issued. createCard accepts both values.Proceed to createCard
PENDINGUnder review. No action required.Wait for a final decision
NEEDSINFORMATIONAdditional information required from the applicant.Follow the requested verification steps
NEEDSVERIFICATIONIdentity verification pending.Redirect user to applicationCompletionUrl
MANUALREVIEWFlagged for manual review by Agio compliance.Wait for resolution
DENIEDApplication denied.Display denial to user
LOCKEDAccount locked by compliance.Contact Agio support
CANCELEDApplication canceled.Resubmit if needed

Monitoring application status ​

Partner integrations can check application status and receive application webhooks. Follow that API's authentication and onboarding flow when building a customer integration.