JSR — Journey without redirection
Lina's initiation APIs for JSR (Journey without redirection / redirectless) are designed to shorten integration time so you can offer a modern payment experience on Open Finance — including Instant Pix and Scheduled Pix after the payer completes a one-time enrollment at their bank.
Automatic Pix (automatic payments) will follow different routes; that flow will be documented separately.
Part 1 — Enrollment (link the device once)
Before any redirectless payment, the end user must complete an enrollment:
your app opens a bank redirect once, the user confirms the link at the
account holder, then your relying-party page receives OAuth-style
parameters in the URL fragment (#), not the query string.
- Obtain an access token (same OAuth pattern as the rest of Lina Pay).
- Call
GET /api/v1/open-integration/participants/registeredwith headersubTenantIdso the user can pick an institution. - Call
POST /api/v1/jsr/enrollmentswithorganisationId,AuthorisationServerId, nestedenrollmentdata,riskSignals, andredirectUrl. The API returnsid(treat this as the enrollment identifier for later paths) andredirectUrlwhere the user completes consent at the bank. - After the bank finishes, the browser lands on your
redirectUrlwith a fragment such as#code=...&id_token=...&state=.... Parse the fragment and sendcode,state, andid_tokenascode,state, andidTokentoPOST /api/v1/jsr/enrollments/device/options(plustenantIdandplatform). - Use the returned FIDO2 registration options with
navigator.credentials.create()on the user's device. - POST the WebAuthn credential payload to
POST /api/v1/jsr/enrollments/<id>/device(see Register enrollment device). WhenstatusisAUTHORISED, enrollment is complete and you can offer redirectless payments for that link.
Part 2 — Redirectless payment (after enrollment)
Precondition: an enrollment exists with status AUTHORISED.
- The user selects which enrollment to pay with (
enrollmentId). - Call
POST /api/v1/jsr/consentswith payment payload and FIDO context (fidoSignOptionsminimal fields for the API). The response is 201 withconsentIdand FIDO2 assertion options (fidoSignOptions). - Trigger
navigator.credentials.get()(biometrics, PIN, security key, etc.) and collect the assertion. - Call
POST /api/v1/jsr/paymentswithenrollmentId,riskSignals,fidoAssertion, andpaymentRequestIdwhen required by your integration (see OpenAPI). Lina authorises and settles with the ASPSP. - Render success or failure from the payment request payload (
statussuch asPAGOor terminal error states).
Automatic payments
Automatic Pix uses additional routes and a different sequence diagram. That documentation will be added in a future iteration.