Skip to main content
POST
/
api
/
v1
/
ob
/
payments
cURL
curl --location --request POST "https://api.kashimi.tech/api/v1/ob/payments" 
--header "Content-Type: application/json" 
--header "Accept: application/json" 
--header "Authorization: Bearer YOUR_ACCESS_TOKEN" 
--data '{
  "provider": { "id": "123e4567-e89b-12d3-a456-426614174000" },
  "paymentScheme":  {
    "name": "SEPA",
    "preferences": { "mode": "INSTANT" }
  },
  "sender": {
    "account": {
      "number": {
        "type": "IBAN",
        "value": "DE89370400440532013000"
      },
      "currency": "EUR"
    },
    "address": {
      "country": "NL",
      "city": "Amsterdam",
      "streetName": "Damstraat",
      "buildingNumber": "1A",
      "postCode": "1012AB"
    }
  },
  "recipient": {
    "account": {
      "number": {
        "type": "IBAN",
        "value": "DE89370400440532013000"
      }
    },
    "name": "John Doe",
    "address": {
      "country": "NL",
      "city": "Amsterdam",
      "streetName": "Damstraat",
      "buildingNumber": "1A",
      "postCode": "1012AB"
    }
  },
  "amount": 10,
  "currency": "EUR",
  "remittanceInformation": {
    "type": "UNSTRUCTURED",
    "value": "Invoice1234567890"
  },
  "metadata": {
    "redirectUri": "https://example.com/redirect?paymentId=12345",
    "psuIpAddress": "84.240.80.120",
    "psuUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
    "endToEndId": "123456789123456789",
    "webhookUrl": "https://example.com/webhook"
  }
}'
{
  "paymentId": "56caec01-85cc-4fc6-8080-cc0f7ed03a7e",
  "providerPaymentId": "123456789",
  "redirectUrl": "https://example.com/provider/specific/redirect/url",
  "createdAt": "2023-04-05T17:02:11.954Z",
  "updatedAt": "2023-04-05T17:02:11.954Z",
  "status": "PENDING"
}
provider.id is not always required. How you use the provider object depends on your integration:
  • Custom Bank Selection — pass provider.id with the UUID of the bank the PSU selected in your UI.
  • Hosted Bank Selection — omit provider.id and pass provider.preferences instead (e.g. countryCodes). Kashimi will display its own hosted bank selection screen.

Headers

Accept-Language
string

Preferred initial UI language for payment initiation. The user will be able to change it later. Must be a two-letter ISO 639-1 language code (e.g., 'en' for English, 'fr' for French). Invalid values will be ignored.

Authorization
string
required

Bearer token for authentication

Body

application/json
paymentScheme
object
required

Payment scheme.

Example:
{ "name": "SEPA" }
recipient
object
required

Data about the party receiving the payment.

amount
number
required

The amount to be transferred.

Example:

10

currency
string
required

The currency of the payment.

Example:

"EUR"

remittanceInformation
object
required

Unstructured or structured remittance information.

metadata
object
required
provider
object

Data about the payment provider.

sender
object

Data about the party sending the payment.

Response

The payment object has been stored successfully

paymentId
string
required

The Kashimi ID of the initiated payment

Example:

"123e4567-e89b-12d3-a456-426614174000"

redirectUrl
string
required

The URL to redirect the user to complete the payment

Example:

"https://your-website.com/authorize-payment"

createdAt
string<date-time>
required
updatedAt
string<date-time>
required
status
enum<string>
required

The status of the initiated payment

Available options:
PENDING,
COMPLETED,
FAILED,
UNKNOWN
Example:

"PENDING"

providerPaymentId
string

The provider ID of the initiated payment

Example:

"123e4567-e89b-12d3-a456-426614174000"