Create a Mandate Directly at the Bank

You already know the customer's bank and account; get the bank approval link right away


Use this when you already have your customer's ID number and bank account, and you want to send them straight to their bank to approve.

Step 1: Create Token

Endpoint: POST https://api.open-finance.ai/oauth/token

{
  "userId": "your-user-id",
  "clientId": "your-client-id",
  "clientSecret": "your-client-secret"
}

Step 2: Create the Mandate at the Bank

Endpoint: POST https://api.open-finance.ai/v2/mandates

Security: Bearer token with create:mandates scope

Request Example

{
  "providerId": "leumi",
  "psuId": "123456782",
  "mandateInformation": {
    "creditorInstitutionCode": "23954",
    "maxAmount": 1000,
    "endDate": "2027-10-19",
    "debtorAccountType": "bban",
    "debtorAccountNumber": "10-800-123456"
  }
}

Request Fields

FieldRequiredDescription
psuIdYesID number of the account owner who approves.
mandateInformation.creditorInstitutionCodeYesYour institution code (קוד מוסד) at Masav.
mandateInformation.debtorAccountTypeYesbban (bank-branch-account, e.g. 12-134-064543) or iban.
mandateInformation.debtorAccountNumberYesThe account to charge.
providerIdNoThe bank, e.g. leumi. Detected from the account number when omitted.
psuCorporateIdNoCompany number, for a business account.
mandateInformation.maxAmountNoLimit per charge. Omit it for a mandate without a limit.
mandateInformation.frequency, startDateNoHapoalim and Mizrahi only.
mandateInformation.endDateNoExpiry date, YYYY-MM-DD, after today.
mandateInformation.mandateReferenceNoYour reference (מספר אסמכתא), up to 35 characters.

Response (200)

{
  "mandateId": "01J9ZK3Q8T5W2X7Y4N6M1B0C9D",
  "mandateStatus": "INACTIVE",
  "scaOAuth": "https://..."
}

Step 3: Send the Customer to the Bank

Redirect the customer to scaOAuth. They log in to their bank and approve the mandate. The ID number they log in with must belong to an owner of the account.

Step 4: Track the Mandate

You receive a webhook when the status changes. You can also call GET https://api.open-finance.ai/v2/mandates/{mandateId}/status, which reads the status from the bank:

{
  "id": "01J9ZK3Q8T5W2X7Y4N6M1B0C9D",
  "status": "ACTIVE",
  "providerId": "leumi",
  "providerIdentifier": "3f2c9a1e-7b41-4c0d-9e55-0a8d2b6c1f74",
  "psuId": "123456782",
  "creditorInstitutionCode": "23954",
  "debtorAccountType": "bban",
  "debtorAccountNumber": "10-800-123456",
  "maxAmount": 1000,
  "currency": "ILS",
  "endDate": "2027-10-19",
  "createdAt": "2026-10-19T12:30:04.311Z"
}

Expiry Date at Each Bank

Send one endDate. Open Finance passes it to each bank in the field that bank accepts:

BankSent as
Hapoalim, Mizrahi-Tefahot, Beinleumioccurrences.duration.toDate
Leumi, Discountoccurrences.finalCollectionDate

Common Errors

MessageWhat to do
mandateInformation.frequency is not supported for provider leumi. Supported providers: hapoalim, mizrahi.Remove frequency and startDate, or use a supporting bank.
mandateInformation.frequency SemiAnnual is not supported for provider hapoalim. …Use one of the listed frequencies.
mandateInformation.endDate must be after today (YYYY-MM-DD).Send a future date.
mandateInformation.endDate must be after mandateInformation.startDate (YYYY-MM-DD).The expiry must come after the first charge.
Mandates are not supported for provider …This bank does not offer mandates yet.

Did this page help you?