Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction

Internal API provides CRUD operations for general objects such as Customers, Accounts, Balances, Transactions, Tx. Rules

Additionally there are SEPA Credit money transfer, SEPA Direct debit , and SEPA Mandates.

Table of content

Table of Contents

Note

Prerequisites

  1. Complete registration Quick start

  2. Make sure you have set client_id and client_secret for your organisation

Authentication

Request example:

Code Block
curl --location --request POST 'https://api.mockbank.io/oauth/token' \
--header 'Authorization: Basic {YOUR_CLIENT_ID_CLIENT_SECRET}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'username={YOUR_USERNAME}' \
--data-urlencode 'password={YOUR_PASSWORD}' \
--data-urlencode 'grant_type=password'

Response example:

Code Block
{
    "access_token": "{YOUR_CLIENT_ACCESS_TOKEN}",
    "token_type": "bearer",
    "refresh_token": "{YOUR_CLIENT_REFRESH_TOKEN}",
    "expires_in": 3564,
    "scope": "all"
}

Add customer

Request example:

Code Block
curl --location --request POST 'https://api.mockbank.io/customers' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "address": "Mohrenstrasse 37",
    "city": "Berlin",
    "zip": "10115",
    "countryCode": "de",
    "fullName": "Alex",
    "msisdn": "+491703555555",
    "password": "test",
    "username": "test@mockbank.io"
}'

Response example:

Code Block
{
    "externalId": "{CREATED_CUSTOMER_ID}",
    "fullName": "Alex",
    "username": "test@mockbank.io",
    "password": "alex",
    "countryCode": "de",
    "address": "Mohrenstrasse 37",
    "zip": "10115",
    "city": "Berlin",
    "msisdn": "+491703555555"
}

Update customer

Request example:

Code Block
curl --location --request PUT 'https://api.mockbank.io/customers/{CREATED_CUSTOMER_ID}' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "address": "Kimeria",
    "city": "Brill",
    "zip": "10000",
    "countryCode": "ka",
    "fullName": "Conan the Barbarian",
    "msisdn": "+491703555555",
    "password": "torgrim",
    "username": "torgrim@mockbank.io"
}'

Update SCA methods

Request example:

Code Block
curl --location --request PUT 'https://api.mockbank.io/customers/{CREATED_CUSTOMER_ID}/sca-methods' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "scaMeths": [
        {
            "authenticationMethodId": "smstaniphonex",
            "authenticationType": "SMS",
            "authenticationVersion": "0",
            "decoupled": false,
            "explanation": "Send SMS to +489********34",
            "name": "Verify by Phone",
            "tan": "123321"
        },
        {
            "authenticationMethodId": "vaultappcheck",
            "authenticationType": "APP",
            "authenticationVersion": "0",
            "decoupled": true,
            "explanation": "Please check your app",
            "name": "Verify by App",
            "tan": "321123"
        }
    ]
}'

Response example:

Status: 200 OK

Add account

Request example:

Code Block
curl --location --request POST 'https://api.mockbank.io/customers/{CREATED_CUSTOMER_ID}/accounts' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "bban": "370400440532013001",
  "bic": "MOCKDEXXXXX",
  "currency": "EUR",
  "iban": "DE89370400440532013002",
  "maskedPan": "12******3",
  "name": "Current",
  "pan": "120000003",
  "status": "enabled",
  "type": "CASH"
}
'

Response example:

Code Block
{
    "externalId": "{CREATED_ACCOUNT_ID}",
    "iban": "DE89370400440532013002",
    "bban": "370400440532013001",
    "currency": "EUR",
    "name": "Current",
    "status": "enabled",
    "type": "CASH",
    "bic": "MOCKDEXXXXX",
    "pan": "120000003",
    "maskedPan": "12******3"
}

Add account balance

Request example:

Code Block
curl --location --request PUT 'https://api.mockbank.io/customers/{CREATED_CUSTOMER_ID}/accounts/{CREATED_ACCOUNT_ID}/balances' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--data-raw '{
  "balances": [
    {
      "amount": 43.99,
      "balanceType": "CLOSING_BOOKED",
      "creditLimitIncluded": true,
      "lastChangeDateTime": "2020-01-22T12:42:31.537Z",
      "lastCommittedTransaction": "c9906177-c8b1-4b4c-b2fc-0d1e10cbf568",
      "referenceDate": "2020-01-01"
    },
     {
      "amount": 143.99,
      "balanceType": "EXPECTED",
      "creditLimitIncluded": true,
      "lastChangeDateTime": "2020-01-22T12:42:31.537Z",
      "lastCommittedTransaction": "c9906177-c8b1-4b4c-b2fc-0d1e10cbf568",
      "referenceDate": "2020-01-01"
    },
     {
      "amount": 243.99,
      "balanceType": "AUTHORISED",
      "creditLimitIncluded": true,
      "lastChangeDateTime": "2020-01-22T12:42:31.537Z",
      "lastCommittedTransaction": "c9906177-c8b1-4b4c-b2fc-0d1e10cbf568",
      "referenceDate": "2020-01-01"
    },
     {
      "amount": 343.99,
      "balanceType": "OPENING_BOOKED",
      "creditLimitIncluded": true,
      "lastChangeDateTime": "2020-01-22T12:42:31.537Z",
      "lastCommittedTransaction": "c9906177-c8b1-4b4c-b2fc-0d1e10cbf568",
      "referenceDate": "2020-01-01"
    },
     {
      "amount": 443.99,
      "balanceType": "INTERIM_AVAILABLE",
      "creditLimitIncluded": true,
      "lastChangeDateTime": "2020-01-22T12:42:31.537Z",
      "lastCommittedTransaction": "c9906177-c8b1-4b4c-b2fc-0d1e10cbf568",
      "referenceDate": "2020-01-01"
    },
     {
      "amount": 543.99,
      "balanceType": "FORWARD_AVAILABLE",
      "creditLimitIncluded": true,
      "lastChangeDateTime": "2020-01-22T12:42:31.537Z",
      "lastCommittedTransaction": "c9906177-c8b1-4b4c-b2fc-0d1e10cbf568",
      "referenceDate": "2020-01-01"
    },
    {
      "amount": 643.99,
      "balanceType": "NON_INVOICED",
      "creditLimitIncluded": true,
      "lastChangeDateTime": "2020-01-22T12:42:31.537Z",
      "lastCommittedTransaction": "c9906177-c8b1-4b4c-b2fc-0d1e10cbf568",
      "referenceDate": "2020-01-01"
    }
  ]
}'

Response example:

Status: 200 OK

Add transaction

Request example:

Andrei Galitski make data more realistic?

Code Block
curl --location --request POST 'https://api.mockbank.io/customers/{CREATED_CUSTOMER_ID}/transactions' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '
{
  "accountId": "{CREATED_ACCOUNT_ID}",
  "amount": -434,
  "bookingDate": "2020-01-26",
  "currency": "EUR",
  "valueDate": "2020-01-25",
  "operationId": "operationId-xxx",
  "entryReference": "ref-xxx",
  "endToEndId": "id-xxx",
  "checkId": "check-xxx",
  "creditorId": "creditorId",
  "creditorName": "creditorName",
  "creditorBic": "creditorBic",
  "creditorAccount": {
    "currency": "EUR",
    "iban": "iban",
    "bban": "bban",
    "pan": "pan",
    "maskedPan": "maskedPan",
    "msisdn": "msisdn"
  },
  "ultimateCreditor": "ultimateCreditor",
  "debtorName": "debtorName",
  "debtorBic": "debtorBic",
  "debtorAccount": {
    "currency": "EUR",
    "iban": "iban",
    "bban": "bban",
    "pan": "pan",
    "maskedPan": "maskedPan",
    "msisdn": "msisdn"
  },
  "ultimateDebtor": "ultimateDebtor",
  "remittanceInformationUnstructured": "remittanceInformationUnstructured",
  "remittanceInformationStructured": "remittanceInformationStructured",
  "additionalInformation": "additionalInformation",
  "purposeCode": "BKDF",
  "bankTransactionCode": "bankTransactionCode",
  "proprietaryBankTransactionCode": "proprietaryBankTransactionCode",
  "eref": "eref"
}'

Response example:

Code Block
{
    "externalId": "{CREATED_TRANSACTION_ID}",
    "accountId": "{CREATED_ACCOUNT_ID}",
    "accountName": "Current",
    "accountIban": "DE89370400440532013002",
    "operationId": "operationId-xxx",
    "entryReference": "ref-xxx",
    "endToEndId": "id-xxx",
    "checkId": "check-xxx",
    "creditorId": "creditorId",
    "bookingDate": "2020-01-26",
    "valueDate": "2020-01-25",
    "currency": "EUR",
    "amount": -434,
    "creditorName": "creditorName",
    "creditorBic": "creditorBic",
    "creditorAccount": {
        "iban": "iban",
        "bban": "bban",
        "pan": "pan",
        "maskedPan": "maskedPan",
        "msisdn": "msisdn",
        "currency": "EUR"
    },
    "ultimateCreditor": "ultimateCreditor",
    "debtorName": "debtorName",
    "debtorBic": "debtorBic",
    "debtorAccount": {
        "iban": "iban",
        "bban": "bban",
        "pan": "pan",
        "maskedPan": "maskedPan",
        "msisdn": "msisdn",
        "currency": "EUR"
    },
    "ultimateDebtor": "ultimateDebtor",
    "remittanceInformationUnstructured": "remittanceInformationUnstructured",
    "remittanceInformationStructured": "remittanceInformationStructured",
    "additionalInformation": "additionalInformation",
    "purposeCode": "BKDF",
    "bankTransactionCode": "bankTransactionCode",
    "proprietaryBankTransactionCode": "proprietaryBankTransactionCode",
    "eref": "eref"
}

Add transaction rule

Request example:

Code Block
curl --location --request POST 'https://api.mockbank.io/customers/{CREATED_CUSTOMER_ID}/transactions/rules' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "accountId": "{CREATED_ACCOUNT_ID}",
  "amount": -23.99,
  "counterPartyIban": "DE31481516230000000018",
  "counterPartyName": "Marco Tutci gmbh",
  "currency": "EUR",
  "dayOfMonth": 9,
  "text": "Vamos a la playa"
}'

Response example:

Code Block
{
    "externalId": "{CREATED_RULE_ID}",
    "accountId": "{CREATED_ACCOUNT_ID}",
    "accountName": "Current",
    "accountIban": "DE89370400440532013002",
    "currency": "EUR",
    "amount": -23.99,
    "dayOfMonth": 9,
    "counterPartyIban": "DE31481516230000000018",
    "counterPartyName": "Marco Tutci gmbh",
    "text": "Vamos a la playa"
}

Make SEPA Credit transfer

Request example:

Code Block
curl --location --request POST 'https://api.mockbank.io/sepa/credit-transfer' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--data-raw '{
  "accountId": "{CREATED_ACCOUNT_ID}",
  "amount": 1,
  "currency": "EUR",
  "operationId": "66d92ed3-5c9e-4c9a-8c57-300f2f8dae",
  "remoteBic": "SPACATW1XXX",
  "remoteIban": "CA35481516230000000130",
  "remoteName": "Lee Russel",
  "subject": "Here is your money, Lee"
}'

Response example:

Code Block
{
    "externalId": "{CREATED_TRANSACTION_ID}",
    "accountId": "{CREATED_ACCOUNT_ID}",
    "accountName": "Current",
    "accountIban": "DE89370400440532013002",
    "operationId": "66d92ed3-5c9e-4c9a-8c57-300f2f8dae",
    "bookingDate": "2020-10-12",
    "valueDate": "2020-10-12",
    "currency": "EUR",
    "amount": 1,
    "creditorName": "Lee Russel",
    "creditorBic": "SPACATW1XXX",
    "creditorAccount": {
        "iban": "UK35481516230000000130",
        "currency": "EUR"
    },
    "additionalInformation": "Here is your money, Lee"
}

Add SEPA mandate

Request example:

Code Block
curl --location --request POST 'https://api.mockbank.io/sepa/mandates' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--data-raw '{
  "cor1": false,
  "creditorIdentityId": "RJP3401VAP",
  "mandateReference": "SE90HO188A",
  "recurring": false,
  "remoteAddress1": "10 Downing Street",
  "remoteAddress2": "LONDON, SW1A 2AA",
  "remoteBic": "FDBOBEMMXXX",
  "remoteCountry": "UK",
  "remoteEmail": "leerus@gmail.com",
  "remoteIban": "UK35481516230000000130",
  "remoteName": "Lee Russel",
  "remoteTitle": "Mr.",
  "signatureDate": "2020-01-01",
  "validFromDate": "2020-01-10"
}'

Response example:

Code Block
{
    "externalId": "{CREATED_MANDATE_ID}",
    "creditorIdentityId": "RJP3401VAP",
    "mandateReference": "SE90HO188A",
    "recurring": false,
    "cor1": false,
    "remoteTitle": "Mr.",
    "remoteName": "Lee Russel",
    "remoteEmail": "leerus@gmail.com",
    "remoteAddress1": "10 Downing Street",
    "remoteAddress2": "LONDON, SW1A 2AA",
    "remoteCountry": "UK",
    "remoteIban": "UK35481516230000000130",
    "remoteBic": "FDBOBEMMXXX",
    "signatureDate": "2020-01-01",
    "validFromDate": "2020-01-10"
}

Execute SEPA direct debit

Request example:

Code Block
curl --location --request POST 'https://api.mockbank.io/sepa/direct-debit' \
--header 'Authorization: Bearer {YOUR_CLIENT_ACCESS_TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "accountId": "{CREATED_ACCOUNT_ID}",
  "amount": 1,
  "eref": "HEH9888JH",
  "currency": "EUR",
  "mandateId": "{CREATED_MANDATE_ID}",
  "operationId": "SE90HO188A",
  "subject": "No money no honey"
}'

Response example:

Code Block
{
    "externalId": "{CREATED_TRANSACTION_ID}",
    "accountId": "{CREATED_ACCOUNT_ID}",
    "accountName": "Current",
    "accountIban": "DE89370400440532013002",
    "operationId": "SE90HO188A",
    "mandateId": "{CREATED_MANDATE_ID}",
    "bookingDate": "2020-10-12",
    "valueDate": "2020-10-12",
    "currency": "EUR",
    "amount": 1,
    "debtorName": "Lee Russel",
    "debtorBic": "FDBOBEMMXXX",
    "debtorAccount": {
        "iban": "UK35481516230000000130"
    },
    "additionalInformation": "No money no honey",
    "eref": "HEH9888JH"
}