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, 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

    Image RemovedImage Added

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"
}