This section covers the endpoints required for securely obtaining OAuth 2.0 access tokens to interact with the Nopan API. These APIs support machine-to-machine (M2M) authentication using mutual TLS (mTLS) and client credentials. A valid access token is required to authorize all subsequent requests to protected resources.
Get an access token via OAuth2
| grant_type required | string Value: "client_credentials" OAuth2 grant type. Must be set to |
| processing_account_id required | string Unique organization account ID issued to the client during onboarding. Used to identify the merchant or integration making the request. |
| scope | string Optional space-delimited list of scopes the client is requesting access to. Used to limit the access token's permissions. Default is |
Get access token via OAuth2 by submitting form
grant_type=client_credentials&processing_account_id=your-organization-id&scope=payments:process
Access token itself, how long it is valid for in seconds and other information
{- "access_token": "header.payload.signature",
- "expires_in": 7200,
- "refresh_expires_in": 0,
- "token_type": "Bearer",
- "not-before-policy": 0,
- "scope": "payments:read"
}This section provides a set of operations for initiating and managing payments through the Nopan API. These endpoints enable clients to request payments, handle SCA, and track the status of transactions in real time. Designed for seamless integration, the APIs support secure and compliant payment workflows for a variety of use cases including e-commerce, invoicing, and in-app purchases.
Starts a new payment flow. The client provides payment details, and the response includes a redirect URL for the payer's SCA.
| processingAccountId required | string non-empty The organization account ID provided at onboarding |
| clientTransactionId required | string non-empty The unique client's internal transaction ID |
| returnUrl required | string non-empty The client's redirect destination after SCA completion |
| transactionType required | string Enum: "ONE_TIME" "RECURRING" "TOKENIZED" Requesting transaction type |
required | object Monetary details of the transaction |
required | object Payment scheme provider details |
required | object Payer identity information |
object Information about where the transaction was requested | |
object Free map of tags set by the client
|
Initiates a Blik payment request
{- "processingAccountId": "merchant",
- "clientTransactionId": "order123",
- "transactionType": "ONE_TIME",
- "paymentDetails": {
- "amount": 100,
- "currency": "PLN",
- "country": "PL",
- "description": "Product ID 1234 purchase"
}, - "providerDetails": {
- "providerId": "BLIK"
}, - "payerDetails": {
- "payerId": "payerUUID",
- "oneTimeCode": "123456"
}, - "requestContext": {
- "ipAddress": "203.0.113.45",
- "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
- "channel": "WEB",
- "deviceId": "device-12345",
- "locale": "pl-PL"
}, - "metadata": {
- "orderId": "12345",
- "customerId": "cust-789",
- "productCategory": "electronics"
}
}The request has been accepted and awaits for SCA
{- "transactionId": "ee2anef9bt",
- "clientTransactionId": "order123",
- "providerDetails": {
- "providerId": "WERO",
- "providerTransactionId": "9c82132e-eb2a-491c-970d-47260d4122b0",
- "registeredAt": "2026-01-19T14:32:05.987654Z",
- "expiresAt": "2026-01-19T14:32:05.987654Z"
}, - "status": "PENDING",
- "step": "INITIATE",
- "statusInfo": {
- "reasonCode": "-1",
- "message": "Request processed successfully"
}
}Finalizes a two-step payment, optionally capturing funds if configured. For one-step payments, it serves as the merchant's acknowledgement.
| processingAccountId required | string non-empty The organization account ID provided at onboarding |
| transactionId required | string non-empty Nopan's transaction ID |
Finalizes a payment
{- "processingAccountId": "merchant",
- "transactionId": "ee2anef9bt"
}The payment has been approved and ready for capture
{- "transactionId": "ee2anef9bt",
- "clientTransactionId": "order123",
- "paymentDetails": {
- "amount": 75,
- "capturedAmount": 0,
- "currency": "EUR",
- "country": "DE",
- "description": "Product ID 1234 purchase",
- "autoCapture": false
}, - "status": "APPROVED",
- "step": "FINALIZE",
- "statusInfo": {
- "reasonCode": "-1",
- "message": "Request processed successfully"
}
}Triggers a recurring or token-based payment without user interaction in one step.
| processingAccountId required | string non-empty The organization account ID provided at onboarding |
| clientTransactionId required | string non-empty The unique client's internal transaction ID |
required | object Monetary details of the transaction |
required | object Payment scheme provider details |
required | object Payer identity information |
object Information about where the transaction was requested | |
object Free map of tags set by the client
|
{- "processingAccountId": "string",
- "clientTransactionId": "string",
- "paymentDetails": {
- "amount": 1,
- "currency": "string",
- "country": "string",
- "description": "string",
- "autoCapture": true
}, - "providerDetails": {
- "providerId": "WERO"
}, - "payerDetails": {
- "payerId": "string",
- "paymentToken": "string"
}, - "requestContext": {
- "ipAddress": "string",
- "userAgent": "string",
- "channel": "WEB",
- "deviceId": "string",
- "locale": "string"
}, - "metadata": {
- "property1": "string",
- "property2": "string"
}
}{- "processingAccountId": "string",
- "transactionId": "string",
- "clientTransactionId": "string",
- "providerDetails": {
- "providerId": "WERO",
- "providerTransactionId": "string",
- "registeredAt": "2019-08-24T14:15:22Z"
}, - "metadata": {
- "property1": "string",
- "property2": "string"
}, - "step": "INITIATE",
- "status": "ACCEPTED",
- "statusInfo": {
- "reasonCode": "string",
- "message": "string"
}
}Captures funds from a previously finalized payment without auto capture. Enables delayed capture scenarios for clients who prefer control over timing
| processingAccountId required | string non-empty The organization account ID provided at onboarding |
| clientTransactionId required | string non-empty The unique client's internal transaction ID |
| transactionId required | string non-empty Nopan's transaction ID |
required | object Monetary details of the transaction |
Captures partial or full amount
{- "processingAccountId": "merchant",
- "clientTransactionId": "order-1234",
- "transactionId": "ee2anef9bt",
- "paymentDetails": {
- "amount": 75
}
}The amount has been captured
{- "transactionId": "ee2anef9bt",
- "clientTransactionId": "order123",
- "paymentDetails": {
- "amount": 75,
- "capturedAmount": 75,
- "currency": "EUR",
- "country": "DE",
- "description": "Product ID 1234 purchase",
- "autoCapture": false
}, - "status": "APPROVED",
- "step": "CAPTURE",
- "statusInfo": {
- "reasonCode": "-1",
- "message": "Request processed successfully"
}
}Cancels an initiated but not yet captured payment. Prevents future fund movements.
| processingAccountId required | string non-empty The organization account ID provided at onboarding |
| clientTransactionId required | string non-empty The unique client's internal transaction ID |
| transactionId required | string non-empty Nopan's transaction ID |
Cancels a payment
{- "processingAccountId": "merchant",
- "clientTransactionId": "order-1234",
- "transactionId": "ee2anef9bt"
}Payment initiated and canceled
{- "transactionId": "ee2anef9bt",
- "clientTransactionId": "order-1234",
- "providerDetails": {
- "providerId": "SATISPAY",
- "providerTransactionId": "019bb12e-843a-784f-bd77-b69dcfc02e8d",
- "registeredAt": 1768204174405,
- "expiresAt": 1768211374402
}, - "payerDetails": {
- "payerId": "payerUUID"
}, - "paymentDetails": {
- "amount": 100,
- "capturedAmount": 0,
- "refundedAmount": 0,
- "currency": "EUR",
- "country": "IT",
- "description": "Product ID 1234 purchase",
- "autoCapture": true
}, - "metadata": {
- "promo": "BLACK_FRIDAY",
- "key": "value"
}, - "status": "CANCELED",
- "step": "FINALIZE",
- "statusInfo": {
- "reasonCode": "-1",
- "message": "Request processed successfully"
}
}Refunds a previously captured payment, either fully or partially. Used to reverse a transaction after funds have already been settled.
| processingAccountId required | string non-empty The organization account ID provided at onboarding |
| clientTransactionId required | string non-empty The unique client's internal transaction ID |
| transactionId required | string non-empty Nopan's transaction ID |
required | object Monetary details of the transaction |
{- "processingAccountId": "string",
- "clientTransactionId": "string",
- "transactionId": "string",
- "paymentDetails": {
- "amount": 1
}
}{- "transactionId": "string",
- "processingAccountId": "string",
- "clientTransactionId": "string",
- "providerDetails": {
- "providerId": "WERO",
- "providerTransactionId": "string",
- "redirectUrl": "string",
- "registeredAt": 0,
- "expiresAt": 0
}, - "payerDetails": {
- "payerId": "string",
- "phone": {
- "countryCode": "string",
- "number": "string"
}, - "oneTimeCode": "string",
- "paymentToken": "string"
}, - "paymentDetails": {
- "amount": 0,
- "capturedAmount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "country": "string",
- "description": "string",
- "autoCapture": true,
- "captures": [
- {
- "clientTransactionId": "string",
- "paymentDetails": {
- "amount": 0
}, - "providerDetails": {
- "providerOperationId": "string",
- "registeredAt": "2019-08-24T14:15:22Z"
}, - "status": "APPROVED",
- "statusInfo": {
- "reasonCode": "string",
- "message": "string"
}, - "timestamp": "2019-08-24T14:15:22Z"
}
], - "refunds": [
- {
- "clientTransactionId": "string",
- "paymentDetails": {
- "amount": 0
}, - "providerDetails": {
- "providerOperationId": "string",
- "registeredAt": "2019-08-24T14:15:22Z"
}, - "status": "ACCEPTED",
- "statusInfo": {
- "reasonCode": "string",
- "message": "string"
}, - "timestamp": "2019-08-24T14:15:22Z"
}
]
}, - "metadata": {
- "property1": "string",
- "property2": "string"
}, - "step": "INITIATE",
- "status": "ACCEPTED",
- "statusInfo": {
- "reasonCode": "string",
- "message": "string"
}
}Returns the current status of a payment. Optionally includes recent history.
| transactionId required | string |
{- "transactionId": "string",
- "processingAccountId": "string",
- "clientTransactionId": "string",
- "providerDetails": {
- "providerId": "WERO",
- "providerTransactionId": "string",
- "redirectUrl": "string",
- "registeredAt": 0,
- "expiresAt": 0
}, - "payerDetails": {
- "payerId": "string",
- "phone": {
- "countryCode": "string",
- "number": "string"
}, - "oneTimeCode": "string",
- "paymentToken": "string"
}, - "paymentDetails": {
- "amount": 0,
- "capturedAmount": 0,
- "refundedAmount": 0,
- "currency": "string",
- "country": "string",
- "description": "string",
- "autoCapture": true,
- "captures": [
- {
- "clientTransactionId": "string",
- "paymentDetails": {
- "amount": 0
}, - "providerDetails": {
- "providerOperationId": "string",
- "registeredAt": "2019-08-24T14:15:22Z"
}, - "status": "APPROVED",
- "statusInfo": {
- "reasonCode": "string",
- "message": "string"
}, - "timestamp": "2019-08-24T14:15:22Z"
}
], - "refunds": [
- {
- "clientTransactionId": "string",
- "paymentDetails": {
- "amount": 0
}, - "providerDetails": {
- "providerOperationId": "string",
- "registeredAt": "2019-08-24T14:15:22Z"
}, - "status": "ACCEPTED",
- "statusInfo": {
- "reasonCode": "string",
- "message": "string"
}, - "timestamp": "2019-08-24T14:15:22Z"
}
]
}, - "metadata": {
- "property1": "string",
- "property2": "string"
}, - "step": "INITIATE",
- "status": "ACCEPTED",
- "statusInfo": {
- "reasonCode": "string",
- "message": "string"
}
}The Nopan API includes a sandbox environment and test endpoints to help developers safely simulate, mock and validate payment flows without processing real transactions. These testing APIs mirror the behavior of the live endpoints, allowing you to initiate payments, trigger SCA flows, and verify callbacks using predefined test data. This environment is ideal for integration testing, QA workflows, and development staging before going live.
Mocks a payment flow. Mock will match requests using processingAccountId and key.
| processingAccountId required | string non-empty The organization account ID provided at onboarding |
required | object Information about the key type and value to be mocked |
| type required | string Enum: "MOCK" "PASSTHROUGH" The mock type |
| oneTime | boolean If true, the mock will be deleted for that step after one call |
object Information to be mocked for each of the payment steps |
Create a mock for all the steps in MOCK mode.
{- "processingAccountId": "merchant",
- "key": {
- "type": "CLIENT_TRANSACTION_ID",
- "value": "order123"
}, - "type": "MOCK",
- "oneTime": false,
- "steps": {
- "initiate": {
- "clientTransactionId": "order123",
- "status": "ACCEPTED",
- "providerDetails": {
- "providerTransactionId": "9c82132e-eb2a-491c-970d-47260d4122b0",
- "registeredAt": 1748505211886,
- "expiresAt": 1748505271887
}, - "statusInfo": {
- "reasonCode": "-1",
- "message": "Awaiting user consent"
}
}
}
}The JSON is not properly formatted
{- "status": "DECLINED",
- "statusInfo": {
- "reasonCode": "4000",
- "message": "The payload was incomplete or didn't pass schema validation. Check required fields and formats."
}, - "callId": "a3c8cdef0a134df4-2e31b1"
}Notifies you when a payment has been initiated. The exact path of the request is configured through our portal.
| notificationId | string <uuid> Unique id of the notification. |
| transactionId | string Nopan's transaction ID |
| clientTransactionId | string The unique client's internal transaction ID |
| notificationType | string Enum: "PAYMENT_INITIATED" "PAYMENT_FINALIZED" "PAYMENT_CAPTURED" |
A Payment has been initiated
{- "notificationId": "2d591c23-85b1-4e8c-a6bd-74d89f8955c5",
- "transactionId": "ee2anef9bt",
- "notificationType": "PAYMENT_FINALIZED"
}Notifies you when a payment has been finalized. The exact path of the request is configured through our portal.
| notificationId | string <uuid> Unique id of the notification. |
| transactionId | string Nopan's transaction ID |
| clientTransactionId | string The unique client's internal transaction ID |
| notificationType | string Enum: "PAYMENT_INITIATED" "PAYMENT_FINALIZED" "PAYMENT_CAPTURED" |
The amount has been captured
{- "notificationId": "2d591c23-85b1-4e8c-a6bd-74d89f8955c5",
- "transactionId": "ee2anef9bt",
- "notificationType": "PAYMENT_FINALIZED"
}Notifies you when a payment has been captured. The exact path of the request is configured through our portal.
| notificationId | string <uuid> Unique id of the notification. |
| transactionId | string Nopan's transaction ID |
| clientTransactionId | string The unique client's internal transaction ID |
| notificationType | string Enum: "PAYMENT_INITIATED" "PAYMENT_FINALIZED" "PAYMENT_CAPTURED" |
The amount has been captured
{- "notificationId": "2d591c23-85b1-4e8c-a6bd-74d89f8955c5",
- "transactionId": "ee2anef9bt",
- "notificationType": "PAYMENT_CAPTURED"
}