Select a facility to manage
Pick a location from the left sidebar to view its details, or open Settings to create clients, facilities and users.
Users launch & sign in to these facilities from the desktop app.
Settings
Users
Admin creates PayerLane users. Each user signs in and manages only their own clients, facilities and service logins. Developer users additionally get the API Management module (their own API partners, keys and webhooks).
Login Site
The site every facility opens for sign-in. Individual facilities may override this with their own URL.
PayorLogic Elite shows the username, password and Sign In button on one page, so leave the login form URL blank to sign in directly on the site above. (Set it only if your site uses a separate login page.)
Logout
Used by the Logout session button (top-right). It clicks the user menu, then the Sign Out link, inside the live browser. Defaults match PayorLogic Elite.
Two-Factor (2FA)
When the 6-digit code screen appears, the app enters the TOTP code (2-second gap per digit). If you remember the device, the code screen is skipped until it expires β the app detects this automatically and only re-enters a code when the screen reappears.
FoxyProxy (USA)
The login screen only loads through the US proxy. Enable this so every browser launch routes through it automatically.
Clients
Add Facility
Advanced β custom field selectors (optional)
API Management
Expose PayerLane as a service. Partner environments
authenticate with their own credentials and pull captured PDF documents
through the /v1 API.
Add a partner
A partner is an organisation that connects to the API. Each is pinned to a Gateway user, so it can only pull that user's facilities and documents.
Partners
Each partner gets one API key β a single bearer that
consumes the whole API (like OpenAI/Claude). Send it as
Authorization: Bearer gwk_β¦; no token step needed.
api_key
| Name | Scope | Status | API Key | Creds |
|---|
Credentials
Pick a partner on the Clients tab, then return here to issue credentials.
client_secret
| client_id | Label | Status | Last used |
|---|
Webhooks
Pick a partner on the Clients tab first.
When a job finishes, Gateway POSTs each captured document and a
job summary to these URLs, signed with X-Gateway-Signature.
The partner stores the secret (shown once) to verify it.
| URL | Events | Payload | Status |
|---|
Recent deliveries
| When | Event | Target | Result | Tries |
|---|
Captured documents
| Patient | Date of Service | Type | Facility | Scope | Captured |
|---|
Base URL
All endpoints are served under
1 Β· Authenticate β pick one
Simplest (recommended): use the partner's single API key directly as a bearer on every call β no token step. Generate it on the Clients tab.
curl /v1/facilities \ -H "Authorization: Bearer gwk_your_partner_api_key"
Alternative (OAuth): exchange a client_id/secret for a 1-hour token, then send that token as the bearer.
curl -X POST /v1/oauth/token \
-H "Content-Type: application/json" \
-d '{"grant_type":"client_credentials","client_id":"gw_β¦","client_secret":"gws_β¦"}'
# β { "access_token": "β¦" } then: Authorization: Bearer <access_token>
2 Β· Set up your configuration (no Selenium on your side)
Provision everything through the API β Gateway runs the browser; you only ever send queries.
POST /v1/clients { "name": "Mercy EMS" }
GET /v1/clients
DELETE /v1/clients/{id}
POST /v1/facilities { "client_id": 1, "name": "Mercy North",
"site_url": "β¦", "username": "β¦", "password": "β¦" }
GET /v1/facilities?client_id=1
PUT /v1/facilities/{id} (update / rotate credentials)
DELETE /v1/facilities/{id}
3 Β· Submit a capture job (async, single or batch)
Each patient is matched by name + DOB + Date of Service;
process picks demo (demographics / DV),
insurance (Insurance Discovery / ID) or both.
POST /v1/report-jobs
{ "facility_id": 7,
"patients": [
{ "name": "Deborah Hodges", "dob": "10/17/1952", "dos": "06/23/2026", "process": "both" },
{ "name": "John Smith", "dos": "06/20/2026", "process": "insurance" }
],
"mode": "sequential", "client_reference": "your-ticket-id" }
β 202 { "job_id": "β¦", "status": "queued", "status_url": "/v1/report-jobs/β¦" }
4 Β· Poll the job
GET /v1/report-jobs/{job_id}
β { "status": "completed|partial|failed|running",
"counts": { "done": 2, "failed": 0, "queued": 0, "running": 0 },
"items": [ { "patient": "Deborah Hodges", "date_of_service": "06/23/2026",
"process": "both", "capture_type": "both",
"status": "done", "document_id": "β¦" } ] }
5 Β· Fetch the capture into your system
GET /v1/documents?patient=&date_of_service=&capture_type=&facility= β list (paged)
GET /v1/documents/{document_id} β metadata + counts
GET /v1/documents/{document_id}/content β structured JSON (default)
GET /v1/documents/{document_id}/content?format=pdf β PDF snapshot of the page
# content (default) β the structured capture:
{ "document_id": "β¦", "patient": "Deborah Hodges", "date_of_service": "06/23/2026",
"capture_type": "both",
"demographics": [ { "label": "First Name", "value": "DEBORAH" }, β¦ ],
"insurance": { "payors": [
{ "name": "Aetna", "hierarchy": "Primary", "confidence": "High Confidence",
"eligibilities": [ { "date": "β¦", "fields": [β¦], "subscriber": [β¦],
"benefit_sections": [ { "title": "β¦", "rows": [β¦] } ] } ] } ] } }
Your system consumes the JSON directly β no browser, no desktop
agent needed. A human-readable PDF snapshot is also kept (?format=pdf).
6 Β· (Optional) Get results PUSHED to you
Instead of polling, register a webhook once. Gateway POSTs each
capture and a job summary to your URL when the job finishes.
include: download_url (light) or full /
base64 (inline the structured capture).
POST /v1/webhooks
{ "url": "https://you.example.com/hooks/gateway",
"events": ["document.captured","job.completed"], "include": "full" }
β 201 { "id": 1, "secret": "whsec_β¦" } # store the secret to verify signatures
# Gateway β your URL, on completion:
POST https://you.example.com/hooks/gateway
X-Gateway-Signature: sha256=<hmac of body with your secret>
{ "event": "document.captured", "job_id": "β¦",
"document": { "document_id": "β¦", "patient": "Deborah Hodges",
"date_of_service": "06/23/2026", "capture_type": "both",
"content_url": "/v1/documents/β¦/content",
"capture": { "demographics": [β¦], "insurance": { "payors": [β¦] } } } }
GET /v1/webhooks # list
POST /v1/webhooks/{id}/test # fire a ping
GET /v1/report-jobs/{job_id}/deliveries # delivery log
Verify the signature: HMAC_SHA256(secret, raw_body)
must equal the hex in X-Gateway-Signature. Set
include: "base64" to receive the PDF bytes inline.