---
updatedAt: 2026-08-06T16:59:56.000Z
agentTools:
  siteIndex: https://developers.pismo.io/llms.txt
  projectIndex: https://developers.pismo.io/pismo-docs/llms.txt
---

# Send BACS direct credit outbound payment [beta]

Send a <a href="https://www.moderntreasury.com/learn/what-is-bacs" target="_blank">Bankers' Automated Clearing System</a> (BACS) direct credit outbound payment.

BACS is a UK service that facilitates electronic money transfers between banks within a 3-day settlement cycle&mdash; Day 1 (submission), Day 2 (processing), and Day 3 (clearing/credit).

There are two main concepts in BACS:

1. **Direct credit** - A company can use this format to pay their employees.

2. **Direct debit** - When an electricity company charges their costumers recurrently it will have a subscription (called *mandates*). When a mandate is generated monthly, the originator creates a charge. When this charge comes to the client here at Pismo. Pismo then debits the customer account.

Both of these methods generate a cashin, cashout, and return.

For more information, refer to the [BACS guide](https://developers.pismo.io/pismo-docs/docs/banking-automated-clearing-system).

**Notes:**

  * Participating accounts must be [registered as a UK account](https://developers.pismo.io/pismo-docs/reference/post-intl-bank-accounts-v2-accounts-account-id-bank-accounts-uk-scan)

  * In case of failure, the transaction is updated with `status` = `CANCELLED` and the `status_reason` field details why it failed.

  * If the counterparty bank rejects the transaction, the transaction is still considered `SETTLED` and, when the provider webhook return is processed, a new [BACS direct credit outbound return payment processed](https://developers.pismo.io/events/docs/bacs-direct-credit-out-return-status-change-1) event is generated and
the amount is credited back to the debtor's account.

  * This endpoint generates a [BACS direct credit outbound payment processed](https://developers.pismo.io/events/docs/bacs-direct-credit-out-status-change-1) event.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Payment rails - BACS payments",
    "description": "BACS payments system API",
    "contact": {
      "name": "API Support",
      "url": "https://developers.pismo.io/support/"
    },
    "license": {
      "name": "Copyright Pismo"
    },
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://sandbox.pismolabs.io/bacs",
      "description": "Sandbox API server for testing."
    }
  ],
  "tags": [
    {
      "name": "BACS direct credit"
    }
  ],
  "components": {
    "parameters": {
      "authHeader": {
        "name": "Authorization",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "description": "Account token - access token encoded with a Pismo account ID. Tokens can expire quickly, which can result in a <b>401 Unauthorized</b> message\n",
        "required": true
      },
      "idempotencyKeyHeader": {
        "name": "Idempotency-key",
        "in": "header",
        "schema": {
          "type": "string",
          "maxLength": 32
        },
        "description": "A UUID (without hyphens) to ensure the operation remains idempotent, allowing for operation repetition without causing unintended effects or duplication. Identifies the transaction on future events.\n",
        "required": true
      }
    },
    "schemas": {
      "amount": {
        "type": "number",
        "description": "Transaction amount.",
        "example": 600
      },
      "bacs_out.CreditorAccount": {
        "type": "object",
        "description": "Creditor's account information",
        "pattern": "^[a-zA-Z0-9\\/\\-?:().,'+\\s#=!\"%&*<>;{@\\r\\n]*$",
        "required": [
          "identification",
          "name",
          "scheme_name"
        ],
        "properties": {
          "name": {
            "$ref": "#/components/schemas/creditorName"
          },
          "scheme_name": {
            "$ref": "#/components/schemas/schemeName"
          },
          "identification": {
            "$ref": "#/components/schemas/schemeID"
          }
        }
      },
      "bacs_out.BacsOutRequest": {
        "type": "object",
        "required": [
          "reference",
          "creditor_account",
          "currency"
        ],
        "properties": {
          "reference": {
            "$ref": "#/components/schemas/bacs_out.RemittanceInformation"
          },
          "creditor_account": {
            "$ref": "#/components/schemas/bacs_out.CreditorAccount"
          },
          "currency": {
            "$ref": "#/components/schemas/bacs_out.Currency"
          }
        }
      },
      "bacs_out.BacsOutResponse": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/id"
          },
          "status": {
            "$ref": "#/components/schemas/status"
          }
        }
      },
      "bacs_out.Currency": {
        "type": "object",
        "required": [
          "amount"
        ],
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/amount"
          },
          "code": {
            "type": "string",
            "description": "Transaction currency (ISO 4217 3-letter code).",
            "enum": [
              "GBP"
            ],
            "example": "GBP"
          }
        }
      },
      "bacs_out.RemittanceInformation": {
        "type": "string",
        "maxLength": 140,
        "pattern": "^[a-zA-Z0-9\\/\\-?:().,'+\\s#=!\"%&*<>;{@\\r\\n]*$",
        "description": "Remittance reference.",
        "example": "Weekly money for Mom"
      },
      "creditorName": {
        "type": "string",
        "maxLength": 40,
        "description": "Creditor name.",
        "example": "Len Lease"
      },
      "customer.DetailMessage": {
        "type": "object",
        "properties": {
          "external": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/customer.ExternalMessage"
            }
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/customer.ParameterMessage"
            }
          },
          "payload": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/customer.PayloadMessage"
            }
          }
        }
      },
      "customer.Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Error's code.",
            "example": "EPT0001"
          },
          "details": {
            "$ref": "#/components/schemas/customer.DetailMessage"
          },
          "message": {
            "type": "string",
            "description": "Error's message.",
            "example": "User not found"
          }
        }
      },
      "customer.ExternalMessage": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "string",
            "description": "Code",
            "example": "PBE315"
          },
          "message": {
            "type": "string",
            "description": "Message",
            "example": "Generic error"
          }
        }
      },
      "customer.ParameterMessage": {
        "type": "object",
        "required": [
          "field",
          "message"
        ],
        "properties": {
          "field": {
            "type": "string",
            "description": "Field",
            "example": "Query parameter"
          },
          "message": {
            "type": "string",
            "description": "Message",
            "example": "Generic error"
          }
        }
      },
      "customer.PayloadMessage": {
        "type": "object",
        "required": [
          "field",
          "message"
        ],
        "properties": {
          "field": {
            "type": "string",
            "description": "Field",
            "example": "Entity.field"
          },
          "message": {
            "type": "string",
            "description": "Message",
            "example": "Generic error"
          }
        }
      },
      "id": {
        "maxLength": 32,
        "type": "string",
        "description": "Client-generated transaction ID. This is the idempotency key UUID passed in the [Send direct credit outbound payment](https://developers.pismo.io/pismo-docs/reference/post-create-bacs) endpoint.\n",
        "example": "1374f841568e4ff4b363b023c170ecdr"
      },
      "schemeID": {
        "maxLength": 22,
        "type": "string",
        "description": "Creditor's scheme value. A scheme identifies an account - UK-SCAN, IBAN, or BBAN. Refer to `schemeName` for details.\n\n  * `uk-scan` - Sort code and account number (SCAN) scheme. Format: `sortcode + accountnumber`\n  * `bban` - Basic Bank Account Number scheme. Format: `bankidentifier + branchidentifier + accountnumber`\n  * `iban` - International Bank Account Number scheme. Format: `country code + check digits + bban`\n\nFor example, for an IBAN account `GB93UBKL12345612345678`, the identification would be:\n\n  `iban`: `GB93UBKL12345612345678`\n  `bban`: `UBKL12345612345678`\n  `uk-scan`: `12345612345678`\n",
        "example": "AA00AAA000000000000000"
      },
      "schemeName": {
        "type": "string",
        "enum": [
          "uk-scan",
          "bban",
          "iban"
        ],
        "description": "Bank scheme that identifies the account.\n  * `uk-scan` - Sort code and account number (SCAN) scheme\n  * `bban` - Basic Bank Account Number scheme\n  * `iban` - International Bank Account Number scheme\n",
        "example": "iban"
      },
      "status": {
        "type": "string",
        "description": "- `CREATED` - Payment has been created and is pending processing<br />\n- `PROCESSING` - P2P balance was impacted and waiting for provider confirmation. For cashin, the transaction means the money will be credited on the next Working Day<br />\n- `SETTLED` - Transaction completed processing and is settled<br />\n- `CANCELLED` - Something went wrong and the transaction is cancelled. Refer to `reason` for more details<br />\n- `HOLD` - The payment is on hold, pending further review<br />\n",
        "enum": [
          "CREATED",
          "PROCESSING",
          "SETTLED",
          "CANCELLED",
          "HOLD"
        ],
        "example": "PROCESSING"
      }
    }
  },
  "paths": {
    "/v1/payments/bacs/directcredit/out": {
      "post": {
        "summary": "Send BACS direct credit outbound payment [beta]",
        "description": "Send a <a href=\"https://www.moderntreasury.com/learn/what-is-bacs\" target=\"_blank\">Bankers' Automated Clearing System</a> (BACS) direct credit outbound payment.\n\nBACS is a UK service that facilitates electronic money transfers between banks within a 3-day settlement cycle&mdash; Day 1 (submission), Day 2 (processing), and Day 3 (clearing/credit).\n\nThere are two main concepts in BACS:\n\n1. **Direct credit** - A company can use this format to pay their employees.\n\n2. **Direct debit** - When an electricity company charges their costumers recurrently it will have a subscription (called *mandates*). When a mandate is generated monthly, the originator creates a charge. When this charge comes to the client here at Pismo. Pismo then debits the customer account.\n\nBoth of these methods generate a cashin, cashout, and return.\n\nFor more information, refer to the [BACS guide](https://developers.pismo.io/pismo-docs/docs/banking-automated-clearing-system).\n\n**Notes:**\n\n  * Participating accounts must be [registered as a UK account](https://developers.pismo.io/pismo-docs/reference/post-intl-bank-accounts-v2-accounts-account-id-bank-accounts-uk-scan)\n\n  * In case of failure, the transaction is updated with `status` = `CANCELLED` and the `status_reason` field details why it failed.\n\n  * If the counterparty bank rejects the transaction, the transaction is still considered `SETTLED` and, when the provider webhook return is processed, a new [BACS direct credit outbound return payment processed](https://developers.pismo.io/events/docs/bacs-direct-credit-out-return-status-change-1) event is generated and\nthe amount is credited back to the debtor's account.\n\n  * This endpoint generates a [BACS direct credit outbound payment processed](https://developers.pismo.io/events/docs/bacs-direct-credit-out-status-change-1) event.\n",
        "operationId": "post-create-bacs",
        "tags": [
          "BACS direct credit"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/authHeader"
          },
          {
            "$ref": "#/components/parameters/idempotencyKeyHeader"
          }
        ],
        "requestBody": {
          "description": "Send payment request body",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/bacs_out.BacsOutRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Response Body",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/bacs_out.BacsOutResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EBACS0004": {
                    "summary": "Validation Error",
                    "value": {
                      "code": "EBACS0004",
                      "message": "Validation error"
                    }
                  },
                  "EBACS0016": {
                    "summary": "Unmarshal Error",
                    "value": {
                      "code": "EBACS0016",
                      "message": "Unmarshal error"
                    }
                  },
                  "EBACS0019": {
                    "summary": "Accounts API Invalid Request Error",
                    "value": {
                      "code": "EBACS0019",
                      "message": "Accounts - API returned 4xx error"
                    }
                  },
                  "EBACS0025": {
                    "summary": "P2P API Invalid Request Error",
                    "value": {
                      "code": "EBACS0025",
                      "message": "P2p - API returned 4xx error"
                    }
                  },
                  "EBACS0029": {
                    "summary": "Ledger API Invalid Request Error",
                    "value": {
                      "code": "EBACS0029",
                      "message": "Ledger - API returned 4xx error"
                    }
                  },
                  "EBACS0037": {
                    "summary": "Invalid Creditor Sort Code Account Number",
                    "value": {
                      "code": "EBACS0037",
                      "message": "Invalid creditor sort code/account number"
                    }
                  },
                  "EBACS0038": {
                    "summary": "Invalid Creditor IBAN",
                    "value": {
                      "code": "EBACS0038",
                      "message": "Invalid creditor IBAN"
                    }
                  },
                  "EBACS0039": {
                    "summary": "Invalid Creditor BBAN",
                    "value": {
                      "code": "EBACS0039",
                      "message": "Invalid creditor BBAN"
                    }
                  },
                  "EBACS0046": {
                    "summary": "IntlBankAccounts API Invalid Request Error",
                    "value": {
                      "code": "EBACS0046",
                      "message": "IntlBankAccounts - API returned 4xx error"
                    }
                  },
                  "EBACS0047": {
                    "summary": "PSP Gateway API Bad Request",
                    "value": {
                      "code": "EBACS0047",
                      "message": "Invalid BACS Request. Check error details for more information."
                    }
                  },
                  "EBACS0073": {
                    "summary": "Amount Greater Than Balance",
                    "value": {
                      "code": "EBACS0073",
                      "message": "The amount passed is greater than the current balance"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EBACS0002": {
                    "summary": "Missing Tenant Header",
                    "value": {
                      "code": "EBACS0002",
                      "message": "Missing required header: 'x-tenant'"
                    }
                  },
                  "EBACS0021": {
                    "summary": "Account Blocked Or Cancelled",
                    "value": {
                      "code": "EBACS0021",
                      "message": "Account blocked or cancelled"
                    }
                  },
                  "EBACS0033": {
                    "summary": "Invalid Account Id",
                    "value": {
                      "code": "EBACS0033",
                      "message": "Invalid account id header: 'x-account-id'"
                    }
                  },
                  "EBACS0034": {
                    "summary": "Invalid Idempotency Key",
                    "value": {
                      "code": "EBACS0034",
                      "message": "Missing required header: 'x-idempotency-key'"
                    }
                  },
                  "EBACS0035": {
                    "summary": "Account Has No Active Addresses",
                    "value": {
                      "code": "EBACS0035",
                      "message": "Account has no active addresses"
                    }
                  },
                  "EBACS0040": {
                    "summary": "BACS Not Enabled",
                    "value": {
                      "code": "EBACS0040",
                      "message": "BACS is not enabled for the creditor sort code"
                    }
                  },
                  "EBACS0041": {
                    "summary": "Modulus Check Error",
                    "value": {
                      "code": "EBACS0041",
                      "message": "Failed to execute account number modulus check"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EBACS0010": {
                    "summary": "Sort Code Not Found",
                    "value": {
                      "code": "EBACS0010",
                      "message": "Sort Code not found"
                    }
                  },
                  "EBACS0018": {
                    "summary": "Accounts API Not Found Error",
                    "value": {
                      "code": "EBACS0018",
                      "message": "Accounts - Not found"
                    }
                  },
                  "EBACS0028": {
                    "summary": "Ledger API Not Found Error",
                    "value": {
                      "code": "EBACS0028",
                      "message": "Ledger - Not found"
                    }
                  },
                  "EBACS0031": {
                    "summary": "IntlBankAccounts API Not Found Error",
                    "value": {
                      "code": "EBACS0031",
                      "message": "IntlBankAccounts - Not found"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EBACS0022": {
                    "summary": "Transaction Already Exists",
                    "value": {
                      "code": "EBACS0022",
                      "message": "A transaction with the specified idempotency key or id already exists"
                    }
                  },
                  "EBACS0036": {
                    "summary": "Mismatching Currency Error",
                    "value": {
                      "code": "EBACS0036",
                      "message": "The provided currency does not match with the account's configured currency"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EBACS0015": {
                    "summary": "PSP Gateway API Rate Limit",
                    "value": {
                      "code": "EBACS0015",
                      "message": "PSPGateway API Rate Limit exceeded"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EBACS0006": {
                    "summary": "HTTP Error",
                    "value": {
                      "code": "EBACS0006",
                      "message": "HTTP request error"
                    }
                  },
                  "EBACS0009": {
                    "summary": "IntlBankAccounts API Timeout",
                    "value": {
                      "code": "EBACS0009",
                      "message": "IntlBankAccounts API timeout error"
                    }
                  },
                  "EBACS0011": {
                    "summary": "IntlBankAccounts API Internal Error",
                    "value": {
                      "code": "EBACS0011",
                      "message": "IntlBankAccounts API Internal Server error"
                    }
                  },
                  "EBACS0012": {
                    "summary": "PSP Gateway API Timeout",
                    "value": {
                      "code": "EBACS0012",
                      "message": "PSPGateway API timeout error"
                    }
                  },
                  "EBACS0017": {
                    "summary": "Accounts API Timeout",
                    "value": {
                      "code": "EBACS0017",
                      "message": "Accounts API timeout error"
                    }
                  },
                  "EBACS0020": {
                    "summary": "Accounts API Server Error",
                    "value": {
                      "code": "EBACS0020",
                      "message": "Accounts - API returned 5xx error"
                    }
                  },
                  "EBACS0023": {
                    "summary": "Transaction Database Error",
                    "value": {
                      "code": "EBACS0023",
                      "message": "Transaction database error"
                    }
                  },
                  "EBACS0024": {
                    "summary": "P2P API Timeout",
                    "value": {
                      "code": "EBACS0024",
                      "message": "P2p - API timeout error"
                    }
                  },
                  "EBACS0026": {
                    "summary": "P2P API Server Error",
                    "value": {
                      "code": "EBACS0026",
                      "message": "P2p - API returned 5xx error"
                    }
                  },
                  "EBACS0027": {
                    "summary": "Ledger API Timeout",
                    "value": {
                      "code": "EBACS0027",
                      "message": "Ledger API timeout error"
                    }
                  },
                  "EBACS0030": {
                    "summary": "Ledger API Server Error",
                    "value": {
                      "code": "EBACS0030",
                      "message": "Ledger - API returned 5xx error"
                    }
                  },
                  "EBACS0032": {
                    "summary": "IntlBankAccounts API Server Error",
                    "value": {
                      "code": "EBACS0032",
                      "message": "IntlBankAccounts - API returned 5xx error"
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EBACS0014": {
                    "summary": "PSP Gateway API Bad Gateway",
                    "value": {
                      "code": "EBACS0014",
                      "message": "PSPGateway API Bad Gateway"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
```