Make a Payment Request

Pre-requisites: Stored Recipients

With Vendor Pay, you issue Payment Requests to Stored Recipients. To create Stored Recipients, refer to Create a Stored Recipient or contact Vitesse for bulk import and mass capture options.

Your application must access the Vitesse-generated StoredRecipientId or your own ExternalStoredRecipientId associated with the vendor at the time of creation.

Detailed Payment Request flow

StagesApplicationVitesseWebhooks EventsComments
Create Payment RequestXRepeat until schedule triggered for a given vendor.
Response - SuccessfulXRepeat until schedule triggered for a given vendor.
Payment Request ScheduledXRepeat until schedule triggered for a given vendor.
Transaction createdXTransactionCreatedBatch transaction (if funds are sufficient)
Payment Request Transaction CreatedXPaymentRequestTransactionCreatedFor each Payment Request in the batch
Transaction processingX
Transaction succeededX
Payment Request ScheduledXPaymentRequestSucceededFor each Payment Request in the batch
Payment Request Fitted Batch SucceededXPaymentRequestsFittedBatchSucceeded

You can find the full list of webhooks events and examples on Webhook subscription event reference.


Create a sample Payment Request

  1. In Postman, set the request type to POST.

  2. As URL, enter https://api.staging.vitesse.io/v1/payment-initiation/paymentRequests
    This is the endpoint for validating transaction requests. After the parameters are validated, we'll replace it with the endpoint for making payment requests.

  3. Select Headers, and provide the following header parameters:

    KeyValueNotes
    AuthorizationBearer [TOKEN]Replace [TOKEN] with your token.
    Content-Typeapplication/json
  4. Select Body.

  5. In curly brackets, provide the body parameters. Parameters in bold are mandatory.

    ParameterTypeDescription
    SendAccountIdNumberThe ID of the Vitesse account from which funds will be drawn. It has to be allowed in the programme.
    SendValueDoubleThe amount you want to send in the currency defined in SendCurrency.
    SendCurrencyStringUse an ISO 4217 currency code, for example, GBP. See the full list of codes.
    ReceiveValueDoubleThe amount you want to send in the currency defined in ReceiveCurrency.
    ReceiveCurrencyStringThe currency in which you want to make the payment.
    PaymentMethodStringBankAccount
    StoredRecipientObject
    StoredRecipient.StoredRecipientId or StoredRecipient.ExternalStoredRecipientIdStringOne of the two, not both
    SchedulerObject
    Scheduler.DefaultBooleanTrue
    PaymentDescriptionStringThe description that the payee will see...
    RecipientReferenceStringThe description that the payee will see on their bank/card statement or check memo.
    ExternalReference1StringInternal field for reconciliation
    ExternalReference2StringInternal field for reconciliation
    ExternalReference3StringInternal field for reconciliation

Request example

{
  "SendAccountId": 1234,
  "SendCurrency": "GBP",
  "ReceiveValue": 100,
  "ReceiveCurrency": "GBP",
  "PaymentMethod": "BankAccount",
  "StoredRecipient": {
    "StoredRecipientId": "00000000-0000-0000-0000-000000000001"
  },
  "Scheduler": {
        "Default": true
  },
  "PaymentDescription": "payment description",
  "RecipientReference": "recipient reference",
  "ExternalReference1": "external reference 1",
  "ExternalReference2": "external reference 2",
  "ExternalReference3": "external reference 3"
}

Response example

You will get payment request with details and identifier PaymentRequestId when created successfully.

{
  "PaymentRequestId": "b9fbfa0e-881f-45f2-bbd3-11d9f5f741c0",
  "SendAccountId": 1234,
  "PaymentMethod": "BankAccount",
  "SendCurrency": "GBP",
  "ReceiveValue": 100.00,
  "ReceiveCurrency": "GBP",
  "StoredRecipient": {
    "StoredRecipientId": "00000000-0000-0000-0000-000000000001"
  },
  "RecipientReference": "recipient reference",
  "PaymentDescription": "payment description",
  "ExternalReference1": "external reference 1",
  "ExternalReference2": "external reference 2",
  "ExternalReference3": "external reference 3",
  "Extra": {
    // Set of extra fields here  
  },
  "Status": "Initiated"
}

Monitor the 'Payment Request' status

You can monitor the Payment Request states via two methods:

  1. Polling the Retrieve payment request endpoint
  2. Using Webhooks to receive real-time updates

Webhook events are triggered throughout the payment request and payee selection process to keep your systems updated in real time. These events cover changes to the payment request, payee journey, and transaction status.

This allows your systems to track progress, respond to errors, and maintain end-to-end visibility. Subscribing to these events ensures a transparent and controlled payment process, supporting operational efficiency and reliability.

Possible states are listed on Vendor Pay States.