---
title: Use saved bank details
slug: use-saved-bank-details
docTags: 
createdAt: 2026-02-27T00:03:04.344Z
---

Use this flow when you have already collected and stored a supplier’s bank account and want to send funds without collecting their details again.

This is the standard approach for vendor payouts, contractor payments, refunds, or any recurring disbursement workflow. Once a bank account is securely stored and associated with a contact, you can initiate credits using its identifier.

No additional bank details are required at payout time.

***

## Prerequisites

- [Jetpay API Key](docId:_zgmIm7QKrrAoX9JjaQrL)
- Your [company bank account ID](docId\:aEx0SSFndR_XgalXG2_ZF) where funds will be deposited
- [An existing Jetpay Contact ID](docId\:BzwF0wyOoqBKGSFuGEnH0)
- [A saved bank account for that Contact](docId\:VR87T15eAcOHe-60cKEQv)

***

## Flow overview

```mermaid
sequenceDiagram
    participant Platform Backend
    participant Jetpay API

    Platform Backend->>Jetpay API: PUT /credit (amount, contact_id, to_bank_account)
    Jetpay API-->>Platform Backend: Credit created (processing)

    Jetpay API-->>Platform Backend: Webhook: credit status updates (initiated, completed, etc.))
```

***

## Implementation details

### Create a credit

Endpoint: [`PUT /credit`](https://extapi.jetpay.baselinepayments.com/docs#tag/Transactions-\(v0\)/operation/create_credit_credit_put)

Use your contact ID (`contact_id`), your contact's bank account ID (`from_bank_account`) and your merchant bank account ID (`from_bank_account`) to create a credit transaction.

:::CodeblockTabs
```curl
BASE_URL="https://extapi.demo.jetpay.baselinepayments.com"
API_TOKEN="<YOUR_API_TOKEN>"

curl -X PUT "$BASE_URL/credit" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 10000,
    "statement": "Supplier Payout",
    "note": "Invoice 4821",
    "from_bank_account": "platform_bank_abc",
    "to_bank_account": "bank_456",
    "contact_id": "contact_123"
  }'
```

```python
import requests

BASE_URL = "https://extapi.demo.jetpay.baselinepayments.com"
API_TOKEN = "<YOUR_API_TOKEN>"

headers = {
    "Authorization": f"Bearer {API_TOKEN}",
    "Content-Type": "application/json"
}

credit_response = requests.put(
    f"{BASE_URL}/credit",
    headers=headers,
    json={
        "amount": 10000,
        "statement": "Supplier Payout",
        "note": "Invoice 4821",
        "from_bank_account": "platform_bank_abc",
        "to_bank_account": "bank_456",
        "contact_id": "contact_123"
    }
)

print(credit_response.json())
```

```nodejs
const BASE_URL = "https://extapi.demo.jetpay.baselinepayments.com";
const API_TOKEN = "<YOUR_API_TOKEN>";

const headers = {
  "Authorization": `Bearer ${API_TOKEN}`,
  "Content-Type": "application/json"
};

async function sendPayout() {
  const response = await fetch(`${BASE_URL}/credit`, {
    method: "PUT",
    headers,
    body: JSON.stringify({
      amount: 10000,
      statement: "Supplier Payout",
      note: "Invoice 4821",
      from_bank_account: "platform_bank_abc",
      to_bank_account: "bank_456",
      contact_id: "contact_123"
    })
  });

  const data = await response.json();
  console.log(data);
}

sendPayout();
```
:::

### Handle the response

If the credit is successfully created, a response will be returned with an HTTP status code of 200 and the following response body:

```json
{
  "identifier": "credit_123",
  "link": "http://example.com",
  "amount": 10000
}
```

There is no further step to take once the credit is successfully created.

### Track status updates via events/webhooks

As the transaction moves through its lifecycle, an **Event** is created for each state update. The most efficient way to track these updates in your system is to register for webhooks. If you are not yet familiar with our webhooks system, please review the [Events and webhooks](docId:79a4CGVETAChOLkpJYd5C) guide.

