Payment instructions
Payment Instructions are mutable account configuration. The first supported type, bank_transfer, stores a beneficiary, IBAN, and optional BIC. The label is internal and is not printed on invoices.
IBANs are normalized to uppercase without whitespace and validated against the registered country length and check digits.
Add instruction IDs to the account's ordered default_payment_instructions array, or select them per invoice with payment_terms.options. The first selected instruction is preferred. Issuance copies the resolved details and invoice-number reference into the immutable Invoice object, so changing or deleting the source later cannot rewrite an issued invoice.
Defaults apply only to ordinary invoices with a positive payable amount. FiscalRail leaves payment terms empty on zero-value invoices, negative invoices, and credit notes.
An instruction configured as an account default cannot be deleted. Remove it from default_payment_instructions first. An instruction already used by an invoice may be changed or deleted because the invoice retains its snapshot.
The Payment Instruction object
id
string
object
string
payment_instruction.live
boolean
account
string
label
string
type
string
bank_transfer.bank_transfer
object
Show child propertiesHide child properties
beneficiary
string
iban
string
bic
string or null
created_at
string
updated_at
string
{
"id": "pay_ins_14Vxtqm9KHu4rP3eZyN8gT",
"object": "payment_instruction",
"live": true,
"account": "acct_14Vxtqg2nwvPR75TpsGH8N",
"label": "Main EUR account",
"type": "bank_transfer",
"bank_transfer": {
"beneficiary": "Example supplier",
"iban": "ES9121000418450200051332",
"bic": "CAIXESBBXXX"
},
"created_at": "2026-07-31T09:00:00Z",
"updated_at": "2026-07-31T09:00:00Z"
}
Create a payment instruction
/v1/payment-instructionsCreates a reusable bank-transfer instruction. It is not added to account defaults automatically.
label
string
required
type
string
required
bank_transfer.bank_transfer
object
required
Show child propertiesHide child properties
beneficiary
string
required
iban
string
required
bic
string or null
201
A Payment Instruction object.
JSON
import os
from fiscalrail import FiscalRail
client = FiscalRail(os.environ["FISCALRAIL_API_KEY"])
payment_instruction = client.payment_instructions.create(
label="Primary EUR account",
type="bank_transfer",
bank_transfer={
"beneficiary": "Example supplier",
"iban": "ES9121000418450200051332",
"bic": "CAIXESBBXXX",
},
)
curl --request POST \
'https://api.fiscalrail.com/v1/payment-instructions' \
--header "Authorization: Bearer ak_test_..." \
--json '{
"label": "Primary EUR account",
"type": "bank_transfer",
"bank_transfer": {
"beneficiary": "Example supplier",
"iban": "ES9121000418450200051332",
"bic": "CAIXESBBXXX"
}
}'
{
"id": "pay_ins_14Vxtqm9KHu4rP3eZyN8gT",
"object": "payment_instruction",
"live": true,
"account": "acct_14Vxtqg2nwvPR75TpsGH8N",
"label": "Main EUR account",
"type": "bank_transfer",
"bank_transfer": {
"beneficiary": "Example supplier",
"iban": "ES9121000418450200051332",
"bic": "CAIXESBBXXX"
},
"created_at": "2026-07-31T09:00:00Z",
"updated_at": "2026-07-31T09:00:00Z"
}
Retrieve a payment instruction
/v1/payment-instructions/{id}id
string
required
200
A Payment Instruction object.
JSON
import os
from fiscalrail import FiscalRail
client = FiscalRail(os.environ["FISCALRAIL_API_KEY"])
payment_instruction = client.payment_instructions.retrieve(
"pay_ins_14Vxtqm9KHu4rP3eZyN8gT",
)
curl --request GET \
'https://api.fiscalrail.com/v1/payment-instructions/pay_ins_14Vxtqm9KHu4rP3eZyN8gT' \
--header "Authorization: Bearer ak_test_..."
{
"id": "pay_ins_14Vxtqm9KHu4rP3eZyN8gT",
"object": "payment_instruction",
"live": true,
"account": "acct_14Vxtqg2nwvPR75TpsGH8N",
"label": "Main EUR account",
"type": "bank_transfer",
"bank_transfer": {
"beneficiary": "Example supplier",
"iban": "ES9121000418450200051332",
"bic": "CAIXESBBXXX"
},
"created_at": "2026-07-31T09:00:00Z",
"updated_at": "2026-07-31T09:00:00Z"
}
Update a payment instruction
/v1/payment-instructions/{id}Updates future uses of the instruction. Issued invoice snapshots are unaffected.
id
string
required
label
string
bank_transfer
object
Show child propertiesHide child properties
beneficiary
string
iban
string
bic
string or null
import os
from fiscalrail import FiscalRail
client = FiscalRail(os.environ["FISCALRAIL_API_KEY"])
payment_instruction = client.payment_instructions.update(
"pay_ins_14Vxtqm9KHu4rP3eZyN8gT",
label="New primary EUR account",
bank_transfer={
"iban": "DE89370400440532013000",
"bic": "COBADEFFXXX",
},
)
curl --request PATCH \
'https://api.fiscalrail.com/v1/payment-instructions/pay_ins_14Vxtqm9KHu4rP3eZyN8gT' \
--header "Authorization: Bearer ak_test_..." \
--json '{
"label": "New primary EUR account",
"bank_transfer": {
"iban": "DE89370400440532013000",
"bic": "COBADEFFXXX"
}
}'
{
"id": "pay_ins_14Vxtqm9KHu4rP3eZyN8gT",
"object": "payment_instruction",
"live": true,
"account": "acct_14Vxtqg2nwvPR75TpsGH8N",
"label": "Main EUR account",
"type": "bank_transfer",
"bank_transfer": {
"beneficiary": "Example supplier",
"iban": "ES9121000418450200051332",
"bic": "CAIXESBBXXX"
},
"created_at": "2026-07-31T09:00:00Z",
"updated_at": "2026-07-31T09:00:00Z"
}
Delete a payment instruction
/v1/payment-instructions/{id}Deletes an instruction that is not configured as an account default. Issued invoices retain their snapshots.
id
string
required
204
The payment instruction was deleted. The response has no body.
import os
from fiscalrail import FiscalRail
client = FiscalRail(os.environ["FISCALRAIL_API_KEY"])
client.payment_instructions.delete(
"pay_ins_14Vxtqm9KHu4rP3eZyN8gT",
)
curl --request DELETE \
'https://api.fiscalrail.com/v1/payment-instructions/pay_ins_14Vxtqm9KHu4rP3eZyN8gT' \
--header "Authorization: Bearer ak_test_..."
List payment instructions
/v1/payment-instructionsReturns reusable payment instructions in reverse chronological ID order.
limit
integer
25.starting_after
string
ending_before.ending_before
string
starting_after.import os
from fiscalrail import FiscalRail
client = FiscalRail(os.environ["FISCALRAIL_API_KEY"])
payment_instructions = client.payment_instructions.list(
limit=25,
)
curl --request GET \
'https://api.fiscalrail.com/v1/payment-instructions?limit=25' \
--header "Authorization: Bearer ak_test_..."
{
"object": "list",
"has_more": null,
"data": [
{
"id": "pay_ins_14Vxtqm9KHu4rP3eZyN8gT",
"object": "payment_instruction",
"live": true,
"account": "acct_14Vxtqg2nwvPR75TpsGH8N",
"label": "Main EUR account",
"type": "bank_transfer",
"bank_transfer": {
"beneficiary": "Example supplier",
"iban": "ES9121000418450200051332",
"bic": "CAIXESBBXXX"
},
"created_at": "2026-07-31T09:00:00Z",
"updated_at": "2026-07-31T09:00:00Z"
}
]
}