Platform Configuration

Update platform configuration

Changed on

Update platform configuration settings. Configure platform-wide card velocity limits through POST /card-velocity-limits without cardId. cardConfigs contains card presentation, authentication, and risk settings.

Set cardConfigs.pinTargetOrigin to the canonical HTTPS origin of your frontend before calling GET /cards/{id}/pin-entry-url. Omit the field to preserve its value or set it to null to clear it.

Set cardConfigs.realTimeAuthorization to enable real-time card authorization: Grid sends a CARD_AUTHORIZATION.REQUEST decision request to your webhookEndpoint for each card authorization.

patch/config

Request

  • Base URL
    https://api.lightspark.com/grid/2025-10-13
  • URL
    https://api.lightspark.com/grid/2025-10-13/config
  • Auth
    HTTP basic

Request body

umaDomainstring
webhookEndpointstring

Example request

{
  "umaDomain": "mycompany.com",
  "webhookEndpoint": "https://api.mycompany.com/webhooks/uma",
  "supportedCurrencies": [
    {
      "currencyCode": "USD",
      "minAmount": 100,
      "maxAmount": 1000000,
      "requiredCounterpartyFields": [
        {
          "name": "FULL_NAME",
          "mandatory": true
        },
        {
          "name": "BIRTH_DATE",
          "mandatory": true
        },
        {
          "name": "NATIONALITY",
          "mandatory": true
        }
      ],
      "providerRequiredCustomerFields": [
        "NATIONALITY",
        "BIRTH_DATE"
      ],
      "providerRequiredCounterpartyCustomerFields": [
        "FULL_NAME",
        "COUNTRY_OF_RESIDENCE"
      ],
      "enabledTransactionTypes": [
        "OUTGOING",
        "INCOMING"
      ]
    }
  ],
  "embeddedWalletConfig": {
    "appName": "Acme Wallet",
    "otpLength": 6,
    "expirationSeconds": 300,
    "sendFromEmailAddress": "noreply@acme.com",
    "sendFromEmailSenderName": "Acme Notifications",
    "replyToEmailAddress": "support@acme.com",
    "logoUrl": "https://acme.com/logo.png"
  },
  "cardTokenization2faConfig": {
    "displayName": "Acme",
    "logoUrl": "https://acme.com/card-email-logo.png",
    "email": {
      "fromAddress": "cards@acme.com",
      "fromName": "Acme Cards",
      "replyToAddress": "support@acme.com",
      "subject": "Your Acme card verification code",
      "bodyText": "Use this code to finish adding your Acme card to your digital wallet."
    },
    "sms": {
      "templateSid": "HJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bodyText": "Use this code to finish adding your Acme card to your digital wallet."
    }
  },
  "cardConfigs": {
    "pinTargetOrigin": "https://app.example.com",
    "maxNetworkRiskScore": 700,
    "panRevealCssUrl": "https://acme.com/card-reveal.css",
    "realTimeAuthorization": {
      "timeoutBehavior": "DECLINE"
    }
  },
  "feeConfigs": [
    {
      "feeType": "CROSS_CURRENCY_TRANSACTION",
      "variableFeeBps": 30,
      "fixedFee": {
        "amount": 100,
        "currency": "USD"
      },
      "sourceCurrency": "USD"
    }
  ]
}

Response

Configuration updated successfully

idstring

System-generated unique identifier

umaDomainstring

UMA domain for this platform

proxyUmaSubdomainstring

The subdomain that incoming requests will be proxied to

webhookEndpointstring

URL where webhook notifications will be sent

isRegulatedFinancialInstitutionboolean

Whether the platform is a regulated financial institution. This is used to determine if the platform's customers must be KYC/KYB'd by Lightspark via the KYC link flow. This can only be set by Lightspark during platform creation.

createdAtstring date-time

Creation timestamp

updatedAtstring date-time

Last update timestamp

Example response

{
  "id": "PlatformConfig:019542f5-b3e7-1d02-0000-000000000003",
  "umaDomain": "platform.uma.domain",
  "proxyUmaSubdomain": "platform",
  "webhookEndpoint": "https://api.mycompany.com/webhooks/uma",
  "supportedCurrencies": [
    {
      "currencyCode": "USD",
      "minAmount": 100,
      "maxAmount": 1000000,
      "requiredCounterpartyFields": [
        {
          "name": "FULL_NAME",
          "mandatory": true
        },
        {
          "name": "BIRTH_DATE",
          "mandatory": true
        },
        {
          "name": "NATIONALITY",
          "mandatory": true
        }
      ],
      "providerRequiredCustomerFields": [
        "NATIONALITY",
        "BIRTH_DATE"
      ],
      "providerRequiredCounterpartyCustomerFields": [
        "FULL_NAME",
        "COUNTRY_OF_RESIDENCE"
      ],
      "enabledTransactionTypes": [
        "OUTGOING",
        "INCOMING"
      ]
    }
  ],
  "embeddedWalletConfig": {
    "appName": "Acme Wallet",
    "otpLength": 6,
    "expirationSeconds": 300,
    "sendFromEmailAddress": "noreply@acme.com",
    "sendFromEmailSenderName": "Acme Notifications",
    "replyToEmailAddress": "support@acme.com",
    "logoUrl": "https://acme.com/logo.png"
  },
  "cardTokenization2faConfig": {
    "displayName": "Acme",
    "logoUrl": "https://acme.com/card-email-logo.png",
    "email": {
      "fromAddress": "cards@acme.com",
      "fromName": "Acme Cards",
      "replyToAddress": "support@acme.com",
      "subject": "Your Acme card verification code",
      "bodyText": "Use this code to finish adding your Acme card to your digital wallet."
    },
    "sms": {
      "templateSid": "HJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bodyText": "Use this code to finish adding your Acme card to your digital wallet."
    }
  },
  "cardConfigs": {
    "pinTargetOrigin": "https://app.example.com",
    "maxNetworkRiskScore": 700,
    "panRevealCssUrl": "https://acme.com/card-reveal.css",
    "realTimeAuthorization": {
      "timeoutBehavior": "DECLINE"
    }
  },
  "feeConfigs": [
    {
      "feeType": "CROSS_CURRENCY_TRANSACTION",
      "variableFeeBps": 30,
      "fixedFee": {
        "amount": 100,
        "currency": "USD"
      },
      "sourceCurrency": "USD"
    }
  ],
  "createdAt": "2025-06-15T12:30:45Z",
  "updatedAt": "2025-06-15T12:30:45Z"
}

Changes

    • 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 new optional request property /

    • info

      added the optional property / to the response with the status