Initiate a Payment (Direct)

Drive bank selection yourself and get the bank authentication URL.

Initiate a Payment (Direct flow)

ℹ️

Skip this page if you use the hosted flow (redirecting to payUrl).

This step is only for the direct API integration where you select the bank
yourself.

POST https://api.open-finance.ai/v2/pay/open-banking-init

Takes the paymentId from Create a Payment plus a providerId (the bank),
and returns the bank's Strong Customer Authentication (SCA) URL. Requires a
Bearer token (see Authentication); rejected requests return the standard
error shape — see Errors.

Key fields

FieldRequiredDescription
providerId✅The bank/provider to pay from. List options via GET /v2/providers.
paymentId–The id returned by POST /v2/payments.
redirectUrl–Where the user returns after authenticating at the bank.
psuId–The payer's national ID or passport number, when the provider requires it.
psuCorporateId–The payer's business ID, for corporate payments.
psuCorporateIdType–The type of the business ID in psuCorporateId. See below.
📘

Corporate payments (psuCorporateIdType). When you send psuCorporateId,

you can also say what kind of business ID it is. The allowed values come from the
provider's psuCorporateIdTypes in GET /v2/providers. If you omit the field, the
provider's psuCorporateIdDefaultType is used, or the first entry of
psuCorporateIdTypes when there is no default. A value that is not in the list is
rejected with 400.

For Discount and Mercantile the accepted values are:

ValueMeaning
CompanyCompany (חברה) — the default
StatutoryWithoutIDStatutory body without an ID
ForeignCompanyForeign company (חברה זרה)
📘

If you did not pre-create a payment, you can pass paymentInformation

directly on this call instead of paymentId. See the API Reference.

Request

curl -X POST https://api.open-finance.ai/v2/pay/open-banking-init \
  -H "Authorization: Bearer <accessToken>" \
  -H "Content-Type: application/json" \
  -d '{
    "paymentId": "01J8X...",
    "providerId": "hapoalim",
    "redirectUrl": "https://your-app.com/payment/done"
  }'

Response

{
  "paymentId": "01J8X...",
  "status": "RCVD",
  "scaOAuth": "https://bank.example/oauth/authorize?..."
}
FieldDescription
paymentIdThe payment being authorized.
statusCurrent payment status (see Payment Status).
scaOAuthThe bank authentication URL — redirect the user here.

Redirect the user to scaOAuth so they can authenticate and approve the payment
at their bank. When they return to your redirectUrl, move on to
Payment Status.

💡

Financy appends the result to your redirectUrl as query parameters —

paymentId, userId, and paymentStatus — so the return page can read the
outcome directly. For mobile deep links, add isDeepLinkQueryParams=true to
have the parameters appended as query params rather than merged into the path.


Did this page help you?