> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iso20022js.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Payment Instructions

> How to format payment instructions

### PaymentInstruction

The base interface for all payment instructions.

```typescript theme={null}
interface PaymentInstruction {
  id?: string;
  direction: 'credit' | 'debit';
  amount: number;
  currency: Currency;
  debtor?: Party;
  creditor?: Party;
  remittanceInformation?: string;
}
```

<ParamField body="id" type="string" optional>
  Unique identifier for the payment instruction.
</ParamField>

<ParamField body="direction" type="string">
  Indicates whether the payment is a credit or debit.

  * `credit`: This is for **outgoing "push" payments**. The originator is the debtor and recipient is the creditor.
  * `debit`: This is for **incoming "pull" payments**. The originator is the creditor and recipient is the debtor.
</ParamField>

<ParamField body="amount" type="number">
  The amount of the payment in cents (e.g., 100 cents = \$1.00, 1000 cents = €10.00). All amount values throughout the library are specified in cents.
</ParamField>

<ParamField body="currency" type="Currency">
  The currency of the payment.
</ParamField>

<ParamField body="debtor" type="Party" optional>
  The party from which the payment is debited.
</ParamField>

<ParamField body="creditor" type="Party" optional>
  The party to which the payment is credited.
</ParamField>

<ParamField body="remittanceInformation" type="string" optional>
  Additional information about the payment.
</ParamField>

### SWIFTCreditPaymentInstruction

Extends `PaymentInstruction` for SWIFT credit payments.

```typescript theme={null}
interface SWIFTCreditPaymentInstruction extends PaymentInstruction {
  type: 'swift';
  direction: 'credit';
  creditor: Party;
}
```

<ParamField body="type" type="string">
  Specifies that this is a SWIFT payment.
</ParamField>

<ParamField body="direction" type="string">
  Always 'credit' for SWIFT payments.
</ParamField>

<ParamField body="creditor" type="Party">
  The party to which the payment is credited (required for SWIFT payments).
</ParamField>

### SEPACreditPaymentInstruction

Extends `PaymentInstruction` for SWIFT credit payments.

```typescript theme={null}
interface SEPACreditPaymentInstruction extends PaymentInstruction {
  type: 'sepa';
  direction: 'credit';
  creditor: Party;
}
```

<ParamField body="type" type="string">
  Specifies that this is a SEPA payment.
</ParamField>

<ParamField body="direction" type="string">
  Only 'credit' is currently supported for SEPA payments currently. For support for debits, please reach out to the team ([iso20022js@woodside.sh](mailto:iso20022js@woodside.sh)).
</ParamField>

<ParamField body="creditor" type="Party">
  The party to which the payment is credited (required for SEPA payments).

  For SEPA payments, the creditor party must be a `Party` object with a optional `bic` (Bank Identifier Code) agent and `iban` account.
</ParamField>
