Direct Debit API
Manage direct debit authorizations for recurring payments via bank accounts.
Direct Debit API https://paystack.com/docs/payments/direct-debit/
- class djpaystack.api.direct_debit.DirectDebitAPI(client)[source]
Bases:
BaseAPIPaystack Direct Debit API
Direct debit allows a business to debit a customer’s bank account once the customer has given consent via a mandate authorization. Currently available for businesses in Nigeria only.
- initialize_authorization(email: str, channel: str = 'direct_debit', callback_url: str | None = None, account: Dict[str, str] | None = None, address: Dict[str, str] | None = None) Dict[str, Any][source]
Initiate a direct debit authorization request.
The response contains a redirect_url that you redirect the customer to give consent to your request.
- Parameters:
email – Customer’s email address
channel – Authorization channel (default: ‘direct_debit’)
callback_url – URL to redirect customer after consent
account – Optional dict with ‘number’ and ‘bank_code’ to pre-fill customer’s bank details
address – Optional dict with ‘state’, ‘city’, ‘street’ to pre-fill customer’s address
- Returns:
Response containing redirect_url for customer consent
- verify_authorization(reference: str) Dict[str, Any][source]
Verify the status of a direct debit authorization.
Listen to webhook events (direct_debit.authorization.created, direct_debit.authorization.active) for real-time status updates.
- Parameters:
reference – Reference from the initialization request
- Returns:
Authorization details including status
- activation_charge(customer_id: str, authorization_id: int) Dict[str, Any][source]
Trigger an activation charge for a single customer whose authorization is stuck in a pending status.
This causes a debit of NGN 50 on the customer’s account to confirm it can be debited. The amount is refunded after the check.
- Parameters:
customer_id – Customer ID or code
authorization_id – The authorization ID to activate
- Returns:
Activation charge response
Quick Reference
from djpaystack import PaystackClient
client = PaystackClient()
# Initialize authorization (sends OTP to customer)
client.direct_debit.initialize_authorization(
email='customer@example.com',
bank_code='058',
account_number='0123456789',
)
# Verify with OTP
client.direct_debit.verify_authorization(reference='ref-from-init')
# Activation charge (small debit to activate)
client.direct_debit.activation_charge(customer_id='CUS_xxxxx')
# Bulk activation charge
client.direct_debit.bulk_activation_charge(customer_ids=['CUS_xxx', 'CUS_yyy'])
Webhook Events
direct_debit.authorization.created— Authorization createddirect_debit.authorization.active— Authorization activated and ready for use