Internal transfers

When both the originating and receiving accounts of a payment order are managed within Mambu Core, Mambu Payments can book the transactions directly in the Core, bypassing your external connector.

Initiating a CBS transfer

To trigger an internal transfer, you have two options:

  • Explicit CBS transfer: Set the payment type to cbs_transfer. In this scenario, the receiving account ID must belong to an internal account (rather than an external account ID used for standard payments).
  • Automatic fallback: Initiate a payment order using any other type and set cbs_transfer_allowed: true. This allows Mambu Payments to automatically fall back to a cbs_transfer if it detects that the receiving account is managed in Mambu Core and registered as an internal account.

Authorization and booking

If Mambu authorization are configured for this flow, Mambu Payments will first create two authorization holds in Mambu Core. This process verifies that both accounts are active and capable of processing the respective transactions.

Once a CBS transfer is approved, two simultaneous transactions are booked in Mambu Core:

  • A withdrawal transaction from the originating account.
  • A deposit transaction to the receiving account.
sequenceDiagram
autonumber
participant C as Customer
participant N as Numeral
participant M as Mambu
Note over C,M: A - Payment initiation
C->>+N: POST /payment_order<br>cbs_transfer_allowed = true<br>payment_type=sepa
N-->N: Assess if transfer
N->>-C: 200
N-->>C: payment_order.pending_approval<br>payment_type=cbs_transfer
Note over C,M: B - Payment validation
N-->>C: payment_order.payment_validation_updated
N->>+M: POST /authorizationholds
M->>-N: 200
N->>+M: POST /authorizationholds
M->>-N: 200
N-->>C: payment_order.payment_validation_updated
Note over C,M: C - Payment processing
N-->>C: payment_order.approved
N-->>C: payment_order.processing
N-->>C: payment_order.sent
N-->>C: payment_order.executed
alt OK
N->>+M: POST /withdrawal_transaction
M->>-N: 200
N->>+M: POST /deposit_transaction
M->>-N: 200
N-->>C: payment_order.cbs_transaction_booked
else KO
N->>+M: POST /withdrawal_transaction
M->>-N: 200
N->>+M: POST /deposit_transaction
M->>-N: 400
N-->>C: payment_order.rejected
N->>M: DELETE /authorizationholds
N->>M: POST /deposit_transaction/id:adjust
N-->>C: payment_order.cbs_transaction_adjusted
end