Geo Compliance

Evaluates the account's most recent Sonar session and returns the current geocompliance status. Use this endpoint to check whether an account holder is currently in a restricted territory before initiating a transaction. Returns the current geocompliance status for the account, including the block reason and matched geofence if applicable.

The Geo Compliance object

Attributes
sonar_session_idnullable string

ID of the Sonar session used for evaluation

decision_idnullable string

ID of the geo compliance decision record

evaluated_atnullable string

ISO8601 timestamp of when the evaluation occurred

statusenum

'clear' — location is not within any restricted territory. 'blocked' — location is within a restricted territory or a VPN was detected. 'unknown' — no location data is available. One of clear, blocked, or unknown.

reasonenum

Present when status is 'blocked' or 'unknown'. 'restricted_territory' — account holder's location falls within a geofenced region. 'vpn_detected' — a VPN was detected on the session. 'no_location_data' — no Sonar session or location data available. One of restricted_territory, vpn_detected, or no_location_data.

geofencedictionary

The matched geofence. Present only when reason is 'restricted_territory'.

THE GEO COMPLIANCE OBJECT
{
  "sonar_session_id": null,
  "decision_id": null,
  "evaluated_at": null,
  "status": "clear",
  "reason": "restricted_territory",
  "geofence": {
    "id": null,
    "name": null
  }
}

Get account geo compliance status

Evaluates the account's most recent Sonar session and returns the current geocompliance status. Use this endpoint to check whether an account holder is currently in a restricted territory before initiating a transaction. Returns the current geocompliance status for the account, including the block reason and matched geofence if applicable.

Path parameters
account_idstring

Account ID

Returns

Clear — location is not within any restricted territory

GET/v1/accounts/{account_id}/geo_compliance
curl --request GET \
  --url https://api.framepayments.com/v1/accounts/a70cd72f-e74a-40f2-96a2-3f60714aac4a/geo_compliance \
  --header 'Authorization: Bearer API_KEY'
RESPONSE
{
  "decision_id": "1e11162d-3849-4f9a-b5e6-ccd5ddff7cc0",
  "sonar_session_id": "9edc3d97-1a54-4178-9960-0fc1552234c4",
  "evaluated_at": "2026-06-10T18:24:37Z",
  "status": "clear",
  "reason": "no_location_data"
}

List geofences

Returns all active geofences for your platform, including Frame's predefined platform-level geofences and any custom geofences configured for your account. Geofences define the geographic boundaries where restrictions apply. frameOS provides a set of predefined platform-level geofences for common regulatory use cases — including prohibited states for gaming and other regulated industries — which apply automatically to all accounts with the geo_compliance capability. Returns a 422 error if geocompliance is not enabled for your platform.

Parameters

No parameters.

Returns

A dictionary with a data property containing an array of geofence objects

GET/v1/geofences
curl --request GET \
  --url https://api.framepayments.com/v1/geofences \
  --header 'Authorization: Bearer API_KEY'
RESPONSE
{
  "data": [
    {
      "id": "9c1e215b-4800-46b4-b12e-34df1e224b66",
      "object": "geofence",
      "name": "California",
      "description": null,
      "geofence_type": "polygon",
      "active": true,
      "metadata": {},
      "locked": false,
      "geofence_rules": []
    }
  ]
}