Money Payment Flows
Purpose
Money payment flows enable you to process financial transactions, including incoming and outgoing payments. These endpoints are crucial for handling money movement and for providing transaction details to customers.
When to use
Use these endpoints when executing, monitoring, or verifying payment transactions. This includes transferring funds between accounts, receiving payments from external sources, and generating transaction histories.
Payment Flow Overview
The Revsto API supports two approaches for payment processing:
- Multi-step flow: Separate calls to initiate, add transactions, and submit
- Direct submission flow: Single call combining all payment details
The multi-step flow provides more flexibility and control, while the direct submission is simpler for straightforward transactions.
Testing Endpoints
You can test these endpoints directly in our API Sandbox.
Retrieve a Transaction
When you need to check the status or details of a specific transaction, use this endpoint.
Endpoint
https://sandbox.revsto.com/api/distributor/v1/transactions/{transactionId}transaction_view- cURL
- Python
- JavaScript
curl -X GET "https://sandbox.revsto.com/api/distributor/v1/transactions/{transactionId}" \
-H "Authorization: Bearer your_api_token"
import requests
transactionId = "tx123" # Replace with your actual transaction ID
url = f"https://sandbox.revsto.com/api/distributor/v1/transactions/{transactionId}"
headers = {"Authorization": "Bearer your_api_token"}
response = requests.get(url, headers=headers)
print(response.json())
const transactionId = "tx123"; // Replace with your actual transaction ID
fetch(`https://sandbox.revsto.com/api/distributor/v1/transactions/${transactionId}`, {
headers: {"Authorization": "Bearer your_api_token"}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(err => console.error(err));
Sample Response
{
"id": "15044",
"externalId": null,
"processId": 16268,
"type": "ACCOUNT_TO_EXTERNAL",
"localizedType": {
"value": "ACCOUNT_TO_EXTERNAL",
"label": "Settlement of transfer issued"
},
"amount": {
"value": 10000,
"currency": "EUR"
},
"description": "Transfer to Test ltd",
"shortDescription": "Transfer to Test ltd",
"media": "API",
"createdAt": "2025-05-09T09:54:57+03:00",
"businessProcessId": 16268,
"externalData": {
"remittanceInformation": "test",
"debtor": {
"id": "3630",
"name": "My Test Business",
"accountId": "DK6189000021685625",
"bic": "SXPYDKKKXXX"
},
"creditor": {
"name": "Test ltd",
"accountId": "NL24RABO8589312569",
"bic": "RABONL2UXXX"
},
"additionalReferences": {
"remittanceInfo": "test"
}
},
"accountingEntries": [
{
"id": "13209",
"accountId": "10000096916",
"transactionId": "15044",
"externalId": null,
"description": "Transfer to Test ltd (test)",
"type": "TRANSFER",
"amount": {
"value": -10000,
"currency": "EUR"
},
"balance": {
"value": 959921,
"currency": "EUR"
},
"availableBalance": {
"value": 959876,
"currency": "EUR"
},
"createdAt": "2025-05-09T09:54:57+03:00",
"accountOwner": {
"id": "3630",
"name": "My Test Business",
"externalId": null,
"userRole": "COMPANY"
}
}
],
"contributions": [
{
"id": "20792",
"role": "INTERMEDIARY",
"device": null,
"contributor": "3630",
"name": "My Test Business",
"externalId": null,
"userRole": {},
"employee": null,
"supportId": null
},
{
"id": "20793",
"role": "ACCOUNT_OWNER",
"device": null,
"contributor": "3630",
"name": "My Test Business",
"externalId": null,
"userRole": {},
"employee": null,
"supportId": 9727
}
]
}
List Transactions
To retrieve multiple transactions at once, use the payment transactions endpoint.
Endpoint
https://sandbox.revsto.com/service-domain/v1/payment-transactionscustomer-instruction_view, payment-instruction_view- cURL
- Python
- JavaScript
curl -X GET "https://sandbox.revsto.com/service-domain/v1/payment-transactions" \
-H "Authorization: Bearer your_api_token"
import requests
url = "https://sandbox.revsto.com/service-domain/v1/payment-transactions"
headers = {"Authorization": "Bearer your_api_token"}
response = requests.get(url, headers=headers)
print(response.json())
fetch("https://sandbox.revsto.com/service-domain/v1/payment-transactions", {
headers: {"Authorization": "Bearer your_api_token"}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(err => console.error(err));
Sample Response
{
"items": [
{
"paymentTransactionInformation": {
"paymentInstrument": "CreditTransfer",
"paymentTransactionIdentification": {
"messageId": "NOTPROVIDED",
"endToEndId": "NOTPROVIDED",
"clearingChannel": "RTNS",
"externalTransactionId": "KOY1216vbREVSTOTEST",
"id": 15184
},
"paymentTransactionTypeInformation": {
"serviceLevel": "BACI"
},
"direction": "INWARD"
},
"paymentTransactionInternalInformation": {
"id": 15184,
"status": {
"value": "SETTLED",
"label": "Settled"
},
"history": [
{
"status": {
"value": "INI_STARTED",
"label": "Initiation started"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-04-11T16:12:13+03:00"
},
{
"status": {
"value": "SETTLED",
"label": "Settled"
},
"date": "2025-04-11T16:12:20+03:00",
"previousTransitionId": 104876
}
],
"contractId": 9054
},
"paymentTransactionDateInformation": {
"creationDate": "2025-04-11T16:12:13+03:00",
"instructedDate": "2025-04-11",
"settlementDate": "2025-04-11"
},
"paymentTransactionAmountInformation": {
"instructedAmount": {
"value": 10000000,
"currency": "EUR"
},
"chargesAmount": {
"value": 0,
"currency": "EUR"
}
},
"paymentTransactionParties": {
"debtor": {
"name": "Sureswipe 2",
"accountId": {
"type": "IBAN",
"value": "GB67BARC20035395294697",
"bankId": {
"type": "BIC",
"value": "BARCGB22XXX"
}
}
},
"creditor": {
"name": "REVSTO TESTING",
"id": {
"type": "identityId",
"value": "3467"
},
"accountId": {
"type": "IBAN",
"value": "DK4089000021685518",
"bankId": {
"type": "BIC",
"value": "SXPYDKKKXXX"
}
},
"postalAddress": {
"structuredAddress": {
"streetName": "18 Kyriakou Matsi, Victory Tower,",
"buildingNumber": "1st floor",
"postCode": "1082",
"townName": "Nicosia"
},
"country": "196"
}
}
},
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"type": "UNSTRUCTURED",
"value": "remittance information"
}
},
"paymentInstructionId": 15183,
"links": [
{
"rel": "getPaymentInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/payment-instructions/15183"
}
]
},
{
"paymentTransactionInformation": {
"paymentInstrument": "CreditTransfer",
"paymentTransactionIdentification": {
"messageId": "NOTPROVIDED",
"endToEndId": "NOTPROVIDED",
"clearingChannel": "RTNS",
"id": 15237,
"customerInstructionId": 15236
},
"paymentTransactionTypeInformation": {
"serviceLevel": "BACI"
},
"direction": "OUTWARD"
},
"paymentTransactionInternalInformation": {
"id": 15237,
"status": {
"value": "SETTLED",
"label": "Settled"
},
"history": [
{
"status": {
"value": "SUB_STARTED",
"label": "Submission started"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-04-14T12:35:29+03:00"
},
{
"status": {
"value": "SUB_IS_VALID",
"label": "Submission validated"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-04-14T12:35:29+03:00",
"previousTransitionId": 105158
},
{
"status": {
"value": "SUB_INT_CTRL_PASSED",
"label": "Internal checks for submission passed"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-04-14T12:35:29+03:00",
"previousTransitionId": 105163
},
{
"status": {
"value": "SUBMITTED",
"label": "Submitted"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-04-14T12:35:29+03:00",
"previousTransitionId": 105164
},
{
"status": {
"value": "PRO_INT_CTRL_PASSED",
"label": "Internal checks for processing passed"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-04-14T12:35:32+03:00",
"previousTransitionId": 105165
},
{
"status": {
"value": "PRO_DEBIT_HOLD",
"label": "Debit hold"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-04-14T12:35:32+03:00",
"previousTransitionId": 105171
},
{
"status": {
"value": "READY_FOR_EXCHANGE",
"label": "Ready for exchange"
},
"date": "2025-04-14T12:35:32+03:00",
"previousTransitionId": 105172
},
{
"status": {
"value": "EXCHANGED",
"label": "Exchanged"
},
"date": "2025-04-15T10:35:58+03:00",
"previousTransitionId": 105173
},
{
"status": {
"value": "SETTLED",
"label": "Settled"
},
"date": "2025-04-15T10:35:58+03:00",
"previousTransitionId": 106122
}
],
"contractId": 9137
},
"paymentTransactionDateInformation": {
"creationDate": "2025-04-14T12:35:28+03:00",
"instructedDate": "2025-04-14",
"settlementDate": "2025-04-14"
},
"paymentTransactionAmountInformation": {
"instructedAmount": {
"value": 1000000,
"currency": "EUR"
},
"chargesAmount": {
"value": 0,
"currency": "EUR"
}
},
"paymentTransactionParties": {
"initiatingParty": {
"name": "joanna christoforidou",
"id": {
"type": "identityId",
"value": "3490"
}
},
"debtor": {
"name": "REVSTO TESTING",
"id": {
"type": "identityId",
"value": "3467"
},
"accountId": {
"type": "IBAN",
"value": "DK2389000021685533",
"bankId": {
"type": "BIC",
"value": "SXPYDKKKXXX"
}
}
},
"creditor": {
"name": "Test ltd",
"accountId": {
"type": "IBAN",
"value": "NL24RABO8589312569",
"bankId": {
"type": "BIC",
"value": "RABONL2UXXX"
}
}
}
},
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"type": "UNSTRUCTURED",
"value": "SEPA C2B testing"
}
},
"customerInstructionId": 15236,
"paymentInstructionId": 15238,
"links": [
{
"rel": "getPaymentInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/payment-instructions/15238"
},
{
"rel": "exchangePaymentInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/outward-payment-instructions/15238/exchange"
},
{
"rel": "refusePaymentInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/outward-payment-instructions/15238/refuse"
}
]
}
],
"count": 2,
"limit": 20,
"offset": 0,
"sort": "+paymentTransactionId"
}
Filtering Transactions
You can filter transactions using query parameters:
| Parameter | Description | Example |
|---|---|---|
status | Filter by transaction status | ?status=SETTLED |
fromDate | Filter by start date (ISO format) | ?fromDate=2023-09-01T00:00:00Z |
toDate | Filter by end date (ISO format) | ?toDate=2023-09-30T23:59:59Z |
minAmount | Filter by minimum amount | ?minAmount=10 |
maxAmount | Filter by maximum amount | ?maxAmount=1000 |
page | Pagination page number | ?page=2 |
pageSize | Items per page | ?pageSize=50 |
Please verify filtering capabilities with your specific implementation as some filters may have different behavior.
Multi-Step Payment Flow
The multi-step flow consists of three separate API calls:
- Initiate a customer instruction
- Add one or more payment transactions
- Submit the instruction for processing
Step 1: Initiate Customer Instruction
First, create a new customer instruction to hold the payment details.
Endpoint
https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transferscustomer-instruction_initiationCode Examples
- cURL
- Python
- JavaScript
curl -X POST "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_token" \
-d '{
"customerInstructionInformation": {
"paymentInstrument": "CreditTransfer",
"requestedExecutionDate": "2023-09-20",
"batchBooking": true,
"customerInstructionTypeInformation": {
"serviceLevel": "BACI"
}
},
"customerInstructionOrderingParties": {
"debtor": {
"name": "John Doe",
"accountId": {
"value": "FR7630006000011234567890189",
"type": "IBAN"
}
}
},
"externalData": {
"transferId": "user-ref-001"
}
}'
import requests
url = "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers"
payload = {
"customerInstructionInformation": {
"paymentInstrument": "CreditTransfer",
"requestedExecutionDate": "2023-09-20",
"batchBooking": True,
"customerInstructionTypeInformation": {
"serviceLevel": "BACI"
}
},
"customerInstructionOrderingParties": {
"debtor": {
"name": "John Doe",
"accountId": {
"value": "FR7630006000011234567890189",
"type": "IBAN"
}
}
},
"externalData": {
"transferId": "user-ref-001"
}
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer your_api_token"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
fetch("https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer your_api_token"
},
body: JSON.stringify({
customerInstructionInformation: {
paymentInstrument: "CreditTransfer",
requestedExecutionDate: "2023-09-20",
batchBooking: true,
customerInstructionTypeInformation: {
serviceLevel: "BACI"
}
},
customerInstructionOrderingParties: {
debtor: {
name: "John Doe",
accountId: {
value: "FR7630006000011234567890189",
type: "IBAN"
}
}
},
externalData: {
transferId: "user-ref-001"
}
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(err => console.error(err));
Request Body
{
"customerInstructionInformation": {
"paymentInstrument": "CreditTransfer",
"paymentService": "PAYMENTS",
"batchBooking": true,
"customerInstructionReference": "CINSTR001",
"requestedNbPaymentTransactions": 1,
"requestedTotalAmount": [
{
"value": 2000,
"currency": "EUR"
}
],
"requestedExecutionDate": "2019-08-24",
"customerInstructionTypeInformation": {
"categoryPurpose": "SALA",
"serviceLevel": "BACI"
}
},
"customerInstructionOrderingParties": {
"debtor": {
"name": "My Test Business",
"id": {
"value": "3630",
"type": "identityId"
},
"accountId": {
"value": "DK61 8900 0021 6856 25",
"type": "IBAN",
"bankId": {
"value": "SXPYDKKKXXX",
"type": "BIC"
}
},
"postalAddress": {
"addressLines": "88 rue du dôme, Apt 3",
"country": "250"
}
}
},
"externalData": {
"externalDataKey": "externalDataValue",
"externalDataArray": [1, 2, 3],
"externalDataBool": true
}
}
Sample Response
{
"id": 16271,
"status": {
"value": "INITIATED",
"label": "Initiated"
},
"groupStatus": {
"value": "INITIATED",
"label": "Initiated"
},
"history": [
{
"status": {
"value": "INI_STARTED",
"label": "Initiation started"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-05-09T10:53:55+03:00"
},
{
"status": {
"value": "INITIATED",
"label": "Initiated"
},
"groupStatus": {
"value": "INITIATED",
"label": "Initiated"
},
"date": "2025-05-09T10:53:55+03:00",
"previousTransitionId": 112496
}
],
"calculatedNbPaymentTransactions": 0,
"calculatedAmount": {
"value": 0,
"currency": "EUR"
},
"customerInstructionInformation": {
"paymentInstrument": "CreditTransfer",
"paymentService": "PAYMENTS",
"batchBooking": true,
"customerInstructionReference": "CINSTR001",
"requestedNbPaymentTransactions": 1,
"requestedTotalAmount": {
"value": 2000,
"currency": "EUR"
},
"customerInstructionTypeInformation": {
"categoryPurpose": "SALA",
"serviceLevel": "BACI"
},
"requestedExecutionDate": "2019-08-24"
},
"customerInstructionOrderingParties": {
"initiatingParty": {
"name": "joanna christoforidou",
"id": {
"type": "identityId",
"value": "3490"
}
},
"debtor": {
"name": "My Test Business",
"id": {
"type": "identityId",
"value": "3630"
},
"accountId": {
"type": "IBAN",
"value": "DK6189000021685625",
"bankId": {
"type": "BIC",
"value": "SXPYDKKKXXX"
}
},
"postalAddress": {
"addressLines": "88 rue du dôme, Apt 3",
"country": "250"
}
}
},
"externalData": {
"externalDataKey": "externalDataValue",
"externalDataArray": [1, 2, 3],
"externalDataBool": true
},
"links": [
{
"rel": "updateCustomerInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/16271"
},
{
"rel": "deleteCustomerInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/16271"
},
{
"rel": "getCustomerInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/16271"
},
{
"rel": "getPaymentTransactionsList",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/16271/payment-transactions"
},
{
"rel": "initiatePaymentTransaction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/16271/payment-transactions/"
},
{
"rel": "submitCustomerInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/16271/submit"
}
]
}
Step 2: Add Payment Transaction
After initiating the instruction, add one or more payment transactions to it.
Endpoint
https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/{customerInstructionId}/payment-transactionscustomer-instruction_initiationCode Examples
- cURL
- Python
- JavaScript
curl -X POST "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/{customerInstructionId}/payment-transactions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_token" \
-d '{
"paymentTransactionAmountInformation": {
"instructedAmount": {
"value": 2000,
"currency": "EUR"
},
"chargeBearer": "SLEV"
},
"paymentTransactionParties": {
"creditor": {
"name": "Test ltd",
"accountId": {
"value": "NL24RABO8589312569",
"type": "IBAN",
"bankId": {
"value": "RABONL2UXXX",
"type": "BIC"
}
},
"postalAddress": {
"structuredAddress": {
"streetName": "Rue de la Paix",
"buildingNumber": "10",
"postCode": "75002",
"townName": "Paris"
},
"country": "250"
}
},
"ultimateCreditor": {
"name": "John Doe",
"postalAddress": {
"structuredAddress": {
"streetName": "Rue de la Paix",
"buildingNumber": "10",
"postCode": "75002",
"townName": "Paris"
},
"country": "250"
}
}
},
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"value": "Payment billing reference No1234556",
"type": "UNSTRUCTURED"
}
},
"paymentTransactionInformation": {
"paymentTransactionIdentification": {
"messageId": "CINSTR0101"
},
"transactionType": "ACCOUNT_TO_EXTERNAL"
},
"externalData": {
"externalDataKey": "externalDataValue",
"externalDataArray": [1, 2, 3],
"externalDataBool": true
}
}'
import requests
customerInstructionId = "ci123" # Replace with your actual customer instruction ID
url = f"https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/{customerInstructionId}/payment-transactions"
payload = {
"paymentTransactionAmountInformation": {
"instructedAmount": {
"value": 2000,
"currency": "EUR"
},
"chargeBearer": "SLEV"
},
"paymentTransactionParties": {
"creditor": {
"name": "Test ltd",
"accountId": {
"value": "NL24RABO8589312569",
"type": "IBAN",
"bankId": {
"value": "RABONL2UXXX",
"type": "BIC"
}
},
"postalAddress": {
"structuredAddress": {
"streetName": "Rue de la Paix",
"buildingNumber": "10",
"postCode": "75002",
"townName": "Paris"
},
"country": "250"
}
},
"ultimateCreditor": {
"name": "John Doe",
"postalAddress": {
"structuredAddress": {
"streetName": "Rue de la Paix",
"buildingNumber": "10",
"postCode": "75002",
"townName": "Paris"
},
"country": "250"
}
}
},
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"value": "Payment billing reference No1234556",
"type": "UNSTRUCTURED"
}
},
"paymentTransactionInformation": {
"paymentTransactionIdentification": {
"messageId": "CINSTR0101"
},
"transactionType": "ACCOUNT_TO_EXTERNAL"
},
"externalData": {
"externalDataKey": "externalDataValue",
"externalDataArray": [1, 2, 3],
"externalDataBool": True
}
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer your_api_token"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const customerInstructionId = "ci123"; // Replace with your actual customer instruction ID
fetch(`https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/${customerInstructionId}/payment-transactions`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer your_api_token"
},
body: JSON.stringify({
paymentTransactionAmountInformation: {
instructedAmount: {
value: 2000,
currency: "EUR"
},
chargeBearer: "SLEV"
},
paymentTransactionParties: {
creditor: {
name: "Test ltd",
accountId: {
value: "NL24RABO8589312569",
type: "IBAN",
bankId: {
value: "RABONL2UXXX",
type: "BIC"
}
},
postalAddress: {
structuredAddress: {
streetName: "Rue de la Paix",
buildingNumber: "10",
postCode: "75002",
townName: "Paris"
},
country: "250"
}
},
ultimateCreditor: {
name: "John Doe",
postalAddress: {
structuredAddress: {
streetName: "Rue de la Paix",
buildingNumber: "10",
postCode: "75002",
townName: "Paris"
},
country: "250"
}
}
},
paymentTransactionDedicatedInformations: {
remittanceInformation: {
value: "Payment billing reference No1234556",
type: "UNSTRUCTURED"
}
},
paymentTransactionInformation: {
paymentTransactionIdentification: {
messageId: "CINSTR0101"
},
transactionType: "ACCOUNT_TO_EXTERNAL"
},
externalData: {
externalDataKey: "externalDataValue",
externalDataArray: [1, 2, 3],
externalDataBool: true
}
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(err => console.error(err));
Request Body
{
"paymentTransactionAmountInformation": {
"instructedAmount": {
"value": 2000,
"currency": "EUR"
},
"chargeBearer": "SLEV"
},
"paymentTransactionParties": {
"creditor": {
"name": "Test ltd",
"accountId": {
"value": "NL24RABO8589312569",
"type": "IBAN",
"bankId": {
"value": "RABONL2UXXX",
"type": "BIC"
}
},
"postalAddress": {
"structuredAddress": {
"streetName": "Rue de la Paix",
"buildingNumber": "10",
"postCode": "75002",
"townName": "Paris"
},
"country": "250"
}
},
"ultimateCreditor": {
"name": "John Doe",
"postalAddress": {
"structuredAddress": {
"streetName": "Rue de la Paix",
"buildingNumber": "10",
"postCode": "75002",
"townName": "Paris"
},
"country": "250"
}
}
},
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"value": "Payment billing reference No1234556",
"type": "UNSTRUCTURED"
}
},
"paymentTransactionInformation": {
"paymentTransactionIdentification": {
"messageId": "CINSTR0101"
},
"transactionType": "ACCOUNT_TO_EXTERNAL"
},
"externalData": {
"externalDataKey": "externalDataValue",
"externalDataArray": [1, 2, 3],
"externalDataBool": true
}
}
Sample Response
{
"paymentTransactionInformation": {
"paymentInstrument": "CreditTransfer",
"paymentTransactionIdentification": {
"messageId": "CINSTR0101",
"endToEndId": "NOTPROVIDED",
"clearingChannel": "RTNS",
"id": 16851,
"customerInstructionId": 16850
},
"paymentTransactionTypeInformation": {
"serviceLevel": "BACI"
},
"direction": "OUTWARD",
"transactionType": "ACCOUNT_TO_EXTERNAL"
},
"paymentTransactionInternalInformation": {
"id": 16851,
"status": {
"value": "INITIATED",
"label": "Initiated"
},
"groupStatus": {
"value": "INITIATED",
"label": "Initiated"
},
"history": [
{
"status": {
"value": "INI_STARTED",
"label": "Initiation started"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:28:37+03:00"
},
{
"status": {
"value": "INI_IS_VALID",
"label": "Initiation validated"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:28:37+03:00",
"previousTransitionId": 116560
},
{
"status": {
"value": "INI_INT_CTRL_PASSED",
"label": "Internal checks for initiation passed"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:28:37+03:00",
"previousTransitionId": 116561
},
{
"status": {
"value": "INITIATED",
"label": "Initiated"
},
"groupStatus": {
"value": "INITIATED",
"label": "Initiated"
},
"date": "2025-06-10T15:28:37+03:00",
"previousTransitionId": 116562
}
],
"contractId": 9727
},
"paymentTransactionDateInformation": {
"creationDate": "2025-06-10T15:28:37+03:00",
"instructedDate": "2025-06-10"
},
"paymentTransactionAmountInformation": {
"instructedAmount": {
"value": 2000,
"currency": "EUR"
},
"chargesAmount": {
"value": 0,
"currency": "EUR"
},
"chargeBearer": "SLEV"
},
"paymentTransactionParties": {
"initiatingParty": {
"name": "joanna christoforidou",
"id": {
"type": "identityId",
"value": "3490"
}
},
"debtor": {
"name": "My Test Business",
"id": {
"type": "identityId",
"value": "3630"
},
"accountId": {
"type": "IBAN",
"value": "DK6189000021685625",
"bankId": {
"type": "BIC",
"value": "SXPYDKKKXXX"
}
},
"postalAddress": {
"addressLines": "88 rue du dôme, Apt 3",
"country": "250"
}
},
"creditor": {
"name": "Test ltd",
"accountId": {
"type": "IBAN",
"value": "NL24RABO8589312569",
"bankId": {
"type": "BIC",
"value": "RABONL2UXXX"
}
},
"postalAddress": {
"structuredAddress": {
"streetName": "Rue de la Paix",
"buildingNumber": "10",
"postCode": "75002",
"townName": "Paris"
},
"country": "250"
}
},
"ultimateCreditor": {
"name": "John Doe",
"postalAddress": {
"structuredAddress": {
"streetName": "Rue de la Paix",
"buildingNumber": "10",
"postCode": "75002",
"townName": "Paris"
},
"country": "250"
}
}
},
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"type": "UNSTRUCTURED",
"value": "Payment billing reference No1234556"
}
},
"customerInstructionId": 16850,
"externalData": {
"externalDataKey": "externalDataValue",
"externalDataArray": [
1,
2,
3
],
"externalDataBool": true
},
"links": [
{
"rel": "updatePaymentTransaction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/payment-transactions/16851"
},
{
"rel": "deletePaymentTransaction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/payment-transactions/16851"
},
{
"rel": "getPaymentTransaction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/payment-transactions/16851"
},
{
"rel": "getCustomerInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/16850"
},
{
"rel": "initiatePaymentTransaction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/16850/payment-transactions/"
},
{
"rel": "submitCustomerInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/16850/submit"
}
]
}
Step 3: Submit Customer Instruction
Finally, submit the instruction for processing.
Endpoint
https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/{customerInstructionId}/submitcustomer-instruction_submission- cURL
- Python
- JavaScript
curl -X POST "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/{customerInstructionId}/submit" \
-H "Authorization: Bearer your_api_token"
import requests
customerInstructionId = "ci123" # Replace with your actual customer instruction ID
url = f"https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/{customerInstructionId}/submit"
headers = {"Authorization": "Bearer your_api_token"}
response = requests.post(url, headers=headers)
print(response.json())
const customerInstructionId = "ci123"; // Replace with your actual customer instruction ID
fetch(`https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/${customerInstructionId}/submit`, {
method: "POST",
headers: {"Authorization": "Bearer your_api_token"}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(err => console.error(err));
This endpoint does not require a request body. The submission is handled via the URL parameters.
Sample Response (201 Created)
{
"id": 16850,
"status": {
"value": "SUB_REQUIRED",
"label": "Submission required"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"history": [
{
"status": {
"value": "INI_STARTED",
"label": "Initiation started"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:28:14+03:00"
},
{
"status": {
"value": "INI_IS_VALID",
"label": "Initiation validated"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:28:14+03:00",
"previousTransitionId": 116554
},
{
"status": {
"value": "INI_IS_VALID",
"label": "Initiation validated"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:28:14+03:00",
"previousTransitionId": 116555
},
{
"status": {
"value": "INI_IS_VALID",
"label": "Initiation validated"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:28:14+03:00",
"previousTransitionId": 116556
},
{
"status": {
"value": "INI_INT_CTRL_PASSED",
"label": "Internal checks for initiation passed"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:28:14+03:00",
"previousTransitionId": 116557
},
{
"status": {
"value": "INITIATED",
"label": "Initiated"
},
"groupStatus": {
"value": "INITIATED",
"label": "Initiated"
},
"date": "2025-06-10T15:28:14+03:00",
"previousTransitionId": 116558
},
{
"status": {
"value": "SUB_STARTED",
"label": "Submission started"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:35:48+03:00",
"previousTransitionId": 116559
},
{
"status": {
"value": "SUB_IS_VALID",
"label": "Submission validated"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:35:48+03:00",
"previousTransitionId": 116564
},
{
"status": {
"value": "SUB_IS_VALID",
"label": "Submission validated"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:35:48+03:00",
"previousTransitionId": 116565
},
{
"status": {
"value": "SUB_INT_CTRL_PASSED",
"label": "Internal checks for submission passed"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:35:48+03:00",
"previousTransitionId": 116566
},
{
"status": {
"value": "SUB_REQUIRED",
"label": "Submission required"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-06-10T15:35:48+03:00",
"previousTransitionId": 116567
}
],
"calculatedNbPaymentTransactions": 1,
"calculatedAmount": {
"value": 2000,
"currency": "EUR"
},
"paymentTransactionsStatus": [
{
"groupStatus": "PROCESSABLE",
"nbTransactions": 1,
"totalAmount": {
"value": 2000,
"currency": "EUR"
}
}
],
"customerInstructionInformation": {
"paymentInstrument": "CreditTransfer",
"paymentService": "PAYMENTS",
"batchBooking": true,
"customerInstructionReference": "CINSTR0101",
"requestedNbPaymentTransactions": 1,
"requestedTotalAmount": {
"value": 2000,
"currency": "EUR"
},
"customerInstructionTypeInformation": {
"categoryPurpose": "SALA",
"serviceLevel": "BACI"
},
"requestedExecutionDate": "2025-06-10"
},
"customerInstructionOrderingParties": {
"initiatingParty": {
"name": "joanna christoforidou",
"id": {
"type": "identityId",
"value": "3490"
}
},
"debtor": {
"name": "My Test Business",
"id": {
"type": "identityId",
"value": "3630"
},
"accountId": {
"type": "IBAN",
"value": "DK6189000021685625",
"bankId": {
"type": "BIC",
"value": "SXPYDKKKXXX"
}
},
"postalAddress": {
"addressLines": "88 rue du dôme, Apt 3",
"country": "250"
}
}
},
"externalData": {
"externalDataKey": "externalDataValue",
"externalDataArray": [
1,
2,
3
],
"externalDataBool": true
},
"links": [
{
"rel": "getCustomerInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/16850"
},
{
"rel": "getPaymentTransactionsList",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/16850/payment-transactions"
}
]
}
Direct Payment Submission
For simpler use cases, you can submit a payment in a single API call.
Endpoint
https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/submitcustomer-instruction_submitCode Examples
- cURL
- Python
- JavaScript
curl -X POST "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/submit" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_token" \
-d '{
"customerInstructionInformation": {
"paymentInstrument": "CreditTransfer",
"requestedExecutionDate": "2023-09-20",
"batchBooking": true,
"customerInstructionTypeInformation": {
"serviceLevel": "BACI"
}
},
"customerInstructionOrderingParties": {
"debtor": {
"name": "Test Client",
"accountId": {
"value": "DK9889000021345847",
"type": "IBAN",
"bankId": {
"value": "SXPYDKKKXXX",
"type": "BIC"
}
}
}
},
"externalData": {
"transferId": "test-external"
},
"paymentTransaction": {
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"value": "Revsto testing",
"type": "UNSTRUCTURED"
}
},
"paymentTransactionAmountInformation": {
"instructedAmount": {
"currency": "EUR",
"value": "10"
}
},
"paymentTransactionParties": {
"creditor": {
"name": "Test ltd",
"accountId": {
"value": "NL24RABO8589312569",
"type": "IBAN"
}
},
"postalAddress": {
"addressLines": "line Address",
"structuredAddress": {
"streetName": "street1",
"buildingNumber": "123",
"postCode": "2023",
"townName": "Berlin"
},
"country": "826"
}
}
}
}'
import requests
url = "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/submit"
payload = {
"customerInstructionInformation": {
"paymentInstrument": "CreditTransfer",
"requestedExecutionDate": "2023-09-20",
"batchBooking": True,
"customerInstructionTypeInformation": {
"serviceLevel": "BACI"
}
},
"customerInstructionOrderingParties": {
"debtor": {
"name": "Test Client",
"accountId": {
"value": "DK9889000021345847",
"type": "IBAN",
"bankId": {
"value": "SXPYDKKKXXX",
"type": "BIC"
}
}
}
},
"externalData": {
"transferId": "test-external"
},
"paymentTransaction": {
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"value": "Revsto testing",
"type": "UNSTRUCTURED"
}
},
"paymentTransactionAmountInformation": {
"instructedAmount": {
"currency": "EUR",
"value": "10"
}
},
"paymentTransactionParties": {
"creditor": {
"name": "Test ltd",
"accountId": {
"value": "NL24RABO8589312569",
"type": "IBAN"
}
},
"postalAddress": {
"addressLines": "line Address",
"structuredAddress": {
"streetName": "street1",
"buildingNumber": "123",
"postCode": "2023",
"townName": "Berlin"
},
"country": "826"
}
}
}
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer your_api_token"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
fetch("https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/credit-transfers/submit", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer your_api_token"
},
body: JSON.stringify({
customerInstructionInformation: {
paymentInstrument: "CreditTransfer",
requestedExecutionDate: "2023-09-20",
batchBooking: true,
customerInstructionTypeInformation: {
serviceLevel: "BACI"
}
},
customerInstructionOrderingParties: {
debtor: {
name: "Test Client",
accountId: {
value: "DK9889000021345847",
type: "IBAN",
bankId: {
value: "SXPYDKKKXXX",
type: "BIC"
}
}
}
},
externalData: {
transferId: "test-external"
},
paymentTransaction: {
paymentTransactionDedicatedInformations: {
remittanceInformation: {
value: "Revsto testing",
type: "UNSTRUCTURED"
}
},
paymentTransactionAmountInformation: {
instructedAmount: {
currency: "EUR",
value: "10"
}
},
paymentTransactionParties: {
creditor: {
name: "Test ltd",
accountId: {
value: "NL24RABO8589312569",
type: "IBAN"
}
},
postalAddress: {
addressLines: "line Address",
structuredAddress: {
streetName: "street1",
buildingNumber: "123",
postCode: "2023",
townName: "Berlin"
},
country: "826"
}
}
}
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(err => console.error(err));
Request Body
{
"customerInstructionInformation": {
"paymentInstrument": "CreditTransfer",
"requestedExecutionDate": "2023-09-20",
"batchBooking": true,
"customerInstructionTypeInformation": {
"serviceLevel": "BACI"
}
},
"customerInstructionOrderingParties": {
"debtor": {
"name": "Test Client",
"accountId": {
"value": "DK9889000021345847",
"type": "IBAN",
"bankId": {
"value": "SXPYDKKKXXX",
"type": "BIC"
}
}
}
},
"externalData": {
"transferId": "test-external"
},
"paymentTransaction": {
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"value": "Revsto testing",
"type": "UNSTRUCTURED"
}
},
"paymentTransactionAmountInformation": {
"instructedAmount": {
"currency": "EUR",
"value": "10"
}
},
"paymentTransactionParties": {
"creditor": {
"name": "Test ltd",
"accountId": {
"value": "NL24RABO8589312569",
"type": "IBAN"
}
},
"postalAddress": {
"addressLines": "line Address",
"structuredAddress": {
"streetName": "street1",
"buildingNumber": "123",
"postCode": "2023",
"townName": "Berlin"
},
"country": "826"
}
}
}
}
Sample Response
{
"id": 16263,
"status": {
"value": "READY_FOR_PROCESSING",
"label": "Ready for processing"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"history": [
{
"status": {
"value": "SUB_STARTED",
"label": "Submission started"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-05-09T09:17:57+03:00"
},
{
"status": {
"value": "READY_FOR_PROCESSING",
"label": "Ready for processing"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-05-09T09:17:57+03:00",
"previousTransitionId": 112439
}
],
"calculatedNbPaymentTransactions": 1,
"paymentTransactionsStatus": [
{
"groupStatus": "PROCESSABLE",
"nbTransactions": 1,
"totalAmount": {
"value": 17559,
"currency": "EUR"
}
}
],
"customerInstructionInformation": {
"paymentInstrument": "CreditTransfer",
"paymentService": "PAYMENTS",
"batchBooking": true,
"requestedNbPaymentTransactions": 1,
"requestedTotalAmount": {
"value": 17559,
"currency": "EUR"
},
"customerInstructionTypeInformation": {
"serviceLevel": "BACI"
},
"requestedExecutionDate": "2025-05-09"
},
"customerInstructionOrderingParties": {
"initiatingParty": {
"name": "joanna christoforidou",
"id": {
"type": "identityId",
"value": "3490"
}
},
"debtor": {
"name": "My Test Business",
"id": {
"type": "identityId",
"value": "3630"
},
"accountId": {
"type": "IBAN",
"value": "DK6189000021685625",
"bankId": {
"type": "BIC",
"value": "SXPYDKKKXXX"
}
}
}
},
"externalData": {
"transferId": "testING-external"
},
"paymentTransaction": {
"paymentTransactionInformation": {
"paymentInstrument": "CreditTransfer",
"paymentTransactionIdentification": {
"messageId": "NOTPROVIDED",
"endToEndId": "NOTPROVIDED",
"clearingChannel": "BOOK",
"id": 16264,
"customerInstructionId": 16263
},
"paymentTransactionTypeInformation": {
"serviceLevel": "ON_US"
},
"direction": "OUTWARD"
},
"paymentTransactionInternalInformation": {
"id": 16264,
"status": {
"value": "SUBMITTED",
"label": "Submitted"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"history": [
{
"status": {
"value": "SUB_STARTED",
"label": "Submission started"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-05-09T09:17:57+03:00"
},
{
"status": {
"value": "SUBMITTED",
"label": "Submitted"
},
"groupStatus": {
"value": "IN_PROGRESS",
"label": "In Progress"
},
"date": "2025-05-09T09:17:57+03:00",
"previousTransitionId": 112437
}
],
"contractId": 9727
},
"paymentTransactionDateInformation": {
"creationDate": "2025-05-09T09:17:57+03:00",
"instructedDate": "2025-05-09"
},
"paymentTransactionAmountInformation": {
"instructedAmount": {
"value": 17559,
"currency": "EUR"
},
"chargesAmount": {
"value": 0,
"currency": "EUR"
}
},
"paymentTransactionParties": {
"initiatingParty": {
"name": "joanna christoforidou",
"id": {
"type": "identityId",
"value": "3490"
}
},
"debtor": {
"name": "My Test Business",
"id": {
"type": "identityId",
"value": "3630"
},
"accountId": {
"type": "IBAN",
"value": "DK6189000021685625",
"bankId": {
"type": "BIC",
"value": "SXPYDKKKXXX"
}
}
},
"creditor": {
"name": "Test ltd",
"id": {
"type": "identityId",
"value": "3558"
},
"accountId": {
"type": "IBAN",
"value": "DK2589000021685594",
"bankId": {
"type": "BIC",
"value": "SXPYDKKKXXX"
}
}
}
},
"paymentTransactionDedicatedInformations": {
"remittanceInformation": {
"type": "UNSTRUCTURED",
"value": "testing"
}
},
"customerInstructionId": 16263,
"links": [
{
"rel": "getPaymentTransaction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/payment-transactions/16264"
},
{
"rel": "getCustomerInstruction",
"href": "https://sandbox.revsto.com/api/service-domain/v1/customer-instructions/16263"
}
]
}
Transaction Status Values
| Status | Description |
|---|---|
INI_STARTED | Initiation process has started |
INI_IS_VALID | Initiation has been validated |
INI_INT_CTRL_PASSED | Internal checks for initiation have passed |
INITIATED | Transaction has been initiated |
SUB_STARTED | Submission process has started |
SUB_IS_VALID | Submission has been validated |
SUB_INT_CTRL_PASSED | Internal checks for submission have passed |
SUBMITTED | Transaction has been submitted for processing |
PRO_INT_CTRL_PASSED | Internal checks for processing have passed |
PRO_DEBIT_HOLD | Debit hold has been placed |
READY_FOR_EXCHANGE | Transaction is ready for exchange |
READY_FOR_PROCESSING | Transaction is ready for processing |
EXCHANGED | Transaction has been exchanged |
SETTLED | Transaction has been settled (completed) |
FAILED | Transaction processing failed |
REJECTED | Transaction was rejected |
CANCELLED | Transaction was cancelled before processing |
Transaction Types
| Type | Description |
|---|---|
CREDIT_TRANSFER | Standard credit transfer (sending money) |
ACCOUNT_TO_EXTERNAL | Transfer from account to external recipient |
INTERNAL_TRANSFER | Transfer between accounts at the same institution |
FEE | Fee transaction |
REFUND | Refund of a previous transaction |
DISTRIBUTOR_POSTING | Internal distributor posting transaction |
Direct debit transactions are not currently supported by the platform.
Required Payment Information
When creating payment transactions, ensure you provide all required information:
Debtor Information (Sender)
- Account identifier (IBAN)
- Name
- Optional BIC/SWIFT
Creditor Information (Recipient)
- Account identifier (IBAN)
- Name
- Optional BIC/SWIFT
- Optional postal address
Amount Information
- Value (decimal as string)
- Currency code (e.g., "EUR")
Payment Details
- Remittance information
- Payment reference
- Payment type information
Best Practices
-
Error Handling: Implement robust error handling for payment flows. Always check the response status and handle errors appropriately.
-
Idempotency: Generate unique references for payments to avoid duplicates if a request is retried.
-
Transaction Reconciliation: Regularly reconcile transactions to ensure all payments are accounted for.
-
Status Monitoring: Use webhooks to get real-time updates on transaction statuses instead of polling.
-
Testing: Always test payment flows thoroughly in the sandbox environment before going to production.
Security Considerations
Payment operations involve money movement and require additional security precautions:
-
Access Control: Restrict access to payment APIs to authorized personnel only.
-
Transaction Limits: Implement limits on transaction amounts and frequencies.
-
Audit Trail: Maintain comprehensive logs of all payment operations.
-
Dual Authorization: Consider requiring multiple approvals for high-value payments.
Always verify account details before initiating payments. IBAN/account number errors can result in payments being sent to incorrect recipients.